Re: Testing math functions
| From: | Pierre | Date: | Sun, 26 Aug 2007 08:41:22 +0000 |
| Subject: | Re: Testing math functions | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-31915@lists.php.net to get a copy of this message | ||
On 8/23/07, Zoe Slattery <zoe.slattery@googlemail.com> wrote:
> Hi - I've writing a few tests for the math extension and have a question
> about floating point precision.
>
> Here's a small example:
>
> --TEST--
> Test return type and value for expected input sin()
> --INI--
> precision = 14
> --FILE--
> <?php
>
> $threesixty = pi() * 2.0;
> echo "sin 360 = ";
> var_dump(sin($threesixty));
>
> ?>
> --EXPECT--
> sin 360 = float(-2.4492127076448E-16)
>
> Is it right to test for an exact number in this way? I was slightly
> suprised that I got the same number from Windows and Linux (maybe I
> shouldn't be).
>
> If not, I could write the test above to check that sin 360 is zero
> plus/minus some small number - but how small?
It really depends on the architecture. Using a precision of 10 should
put you on the safe side, at least for the common architecture (intel,
amd and ppc).
--Pierre