Approximate equality

Revision as of 00:26, 2 September 2019 by Wherrera (talk | contribs) (create first draft of task)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Sometimes, when testing whether the solution to a task (for example, here on Rosetta Code) is correct, the difference in floating point calculations between different language implementations becomes significant. For example, a difference between 32 bit and 64 bit floating point calculations may appear by about the 8th place to the right of the decimal point in base 10 arithmetic.

Approximate equality is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

Create a function, which returns true if two floating point numbers are approximately equal. The function should allow for differences in the magnitude of numbers, so that, for example, 100000000000000.01 may be approximately equal to 100000000000000.011, even though 100.01 is not approximately equal to 100.011.

If the language has such as feature in its standard library, this may be used instead of a custom function.

Show the function results with comparisons on the following pairs of values:

  • 100000000000000.01, 100000000000000.011
  • 100.01, 100.011
  • 10000000000000.001 / 10000.0, 1000000000.0000001000
  • 0.001, 0.0010000001
  • 0.0000000000000000000001, 0.000000000000000000000101
  • sqrt(2) * sqrt(2), 2.0
  • 3.14159265358979323846, 3.14159265358979324