On Tue, 1 Jan 2008, Vincent Lefevre wrote:

> On 2007-12-31 14:38:21 -0500, Kaveh R. GHAZI wrote:
> > The bug would need to be exposed using a mantissa size of a C type, like
> > 53 for double, and the default exponent range.  And all the global mpfr
> > flags are cleared beforehand,
>
> Are they cleared before each call to MPFR functions?

Yes I call mpfr_clear_flags() before each mpfr function call.  Also, the
individual mpfr types are initialized and destroyed for each call, no
reuse occurs between different mpfr calls.  However...


> > I tried several things through gcc+mpfr-2.3.0 like asin(-0.0), but
> > that folds to -0.0 correctly.
>
> Perhaps because the same variable is used for the input and output?

Yes, reuse occurs for src and dest variable:
          mpfr_clear_flags ();
          inexact = func (m, m, GMP_RNDN);

So I guess I got lucky here. :-)


> > I tried a call to sqrt(2.0) with -frounding-math. But the inexact
> > flag is apparently set and gcc appropriately does not fold this
> > case, instead replying on the library call to get the rounding
> > correct.
>
> The ternary value was correct, and I suppose that GCC tests the
> ternary value instead of the global inexact flag (this is what one
> does in general).

Right, as seen above.  Later on, I do check the global overflow and
underflow flags, but not global inexact.


> > Often the bug says it will fail on "huge" inputs, but doesn't say
> > exactly what they are.
>
> Most of the time, testcases were included in the changesets (not
> in 53 bits, but in general, this shouldn't matter). You may want
> to look at them.

I'll poke around some more and see if I can find something.

                --Kaveh
--
Kaveh R. Ghazi                  [EMAIL PROTECTED]

Reply via email to