math: raise flags in log2l.c on <= 0 arguments, and fix volatile

This commit is contained in:
Szabolcs Nagy
2012-11-13 00:30:06 +01:00
parent 04ccbdca6d
commit 37aa7f7301

View File

@ -50,11 +50,6 @@
* In the tests over the interval exp(+-10000), the logarithms * In the tests over the interval exp(+-10000), the logarithms
* of the random arguments were uniformly distributed over * of the random arguments were uniformly distributed over
* [-10000, +10000]. * [-10000, +10000].
*
* ERROR MESSAGES:
*
* log singularity: x = 0; returns -INFINITY
* log domain: x < 0; returns NAN
*/ */
#include "libm.h" #include "libm.h"
@ -113,7 +108,7 @@ static const long double S[4] = {
long double log2l(long double x) long double log2l(long double x)
{ {
volatile long double z; long double z;
long double y; long double y;
int e; int e;
@ -123,8 +118,8 @@ long double log2l(long double x)
return x; return x;
if (x <= 0.0) { if (x <= 0.0) {
if (x == 0.0) if (x == 0.0)
return -INFINITY; return -1/(x+0); /* -inf with divbyzero */
return NAN; return 0/0.0f; /* nan with invalid */
} }
/* separate mantissa from exponent */ /* separate mantissa from exponent */