On Mar 6, 2005, at 8:31 PM, dave at hiauly1 dot hia dot nrc dot ca wrote:



------- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca 2005-03-07 01:31 -------
Subject: Re: FAIL: 26_numerics/complex/pow.cc execution test


We have log(x) == -inf for x == 0+.  The exp call is returning 0+
but the argument isn't -inf.  It's -5.9923104495410517e+307.  -inf
is -1.7976931348623157e+308.

Sorry, log(x) == -HUGE_VALUE for x == 0+, not -INFINITY. This is also the documented behavior for hpux11. The HP log function doesn't set ERANGE when x is 0.

SUSV2 also specifies -HUGE_VALE and that ERANGE "may be" set.

Hmm, the hp online docs say the following:
If x is zero, log() returns -HUGE_VAL (equal to -INFINITY) and raises the divide-by-zero exception.


but that does not makes sense as HUGE_VAL does not equal INFINITY at all

Darwin's man page says the following:
log(+-0) , log2(+-0) , and log10(+-0) return -infinity and raise the
"divide-by-zero" floating-point exception.


Linux's man page:
ERANGE The argument x is zero. The log of zero is not defined (minus infinity).



And C99 standard just says the following: A range error may occur if the argument is zero.

-- Pinski



Reply via email to