[Gambas-bugtracker] Bug #1562: Bad calculation

bugtracker at gambaswiki.org bugtracker at gambaswiki.org
Thu Apr 18 21:47:26 CEST 2019


Comment #2 by juan JUAN:

Is not the same

Print acos (-1) - acos (-1 + 1e-16)


a = a + 1e-16
print a, ACos (a)

because in the second line I obtain that a = 1 and ACos(a) differs a lot from ACos(1), as well as that only 8 decimal digits of precision are obtained. Within a more extensive program, the first line may occur in a very different place from where the second occurs and even not be so obvious (for example, there is no line a = a + 1e-16 but the result is produced by rounding in intermediate calculations). And it is not the same Print a, ACos (a) ==> 1.0000000000000001, 3.14159263868863 (which does give a clue of what is happening) that Print a, ACos (a) ==> 1, 3.14159263868863 (which is puzzling in a scenario like the one described).

And I am not criticizing anything but making evident a situation that can cause frustration. It can (can only) be worth evaluating the rounding criteria near zero. Another flagrant case:

if (a = 0) then
     b = 1
     b = 1 / a
end if

Again, if a = 1e-16 (not necessarily explicitly), b = 1e16 is obtained, which can eventually provide a highly undesirable result. And neither Print nor the debugger give clues of what happens.


More information about the Bugtracker mailing list