summaryrefslogtreecommitdiff
path: root/src/math
diff options
context:
space:
mode:
authornsz <nsz@port70.net>2012-03-19 23:30:45 +0100
committernsz <nsz@port70.net>2012-03-19 23:30:45 +0100
commit4caa17b2a17d136efedfb63fceef832401063d70 (patch)
tree960f507b4ab31bfb314fc0466bcf26f7a9ca31da /src/math
parent75483499dad38b97f5dabb710635e6a8bbbb1c84 (diff)
downloadmusl-4caa17b2a17d136efedfb63fceef832401063d70.tar.gz
don't try to create non-standard denormalization signal
Underflow exception is only raised when the result is invalid, but fmod is always exact. x87 has a denormalization exception, but that's nonstandard. And the superflous *1.0 will be optimized away by any compiler that does not honor signaling nans.
Diffstat (limited to 'src/math')
-rw-r--r--src/math/fmod.c3
-rw-r--r--src/math/fmodf.c3
-rw-r--r--src/math/fmodl.c5
3 files changed, 4 insertions, 7 deletions
diff --git a/src/math/fmod.c b/src/math/fmod.c
index 6856844e..84a1b4ac 100644
--- a/src/math/fmod.c
+++ b/src/math/fmod.c
@@ -17,7 +17,7 @@
#include "libm.h"
-static const double one = 1.0, Zero[] = {0.0, -0.0,};
+static const double Zero[] = {0.0, -0.0,};
double fmod(double x, double y)
{
@@ -140,7 +140,6 @@ double fmod(double x, double y)
lx = hx>>(n-32); hx = sx;
}
INSERT_WORDS(x, hx|sx, lx);
- x *= one; /* create necessary signal */
}
return x; /* exact output */
}
diff --git a/src/math/fmodf.c b/src/math/fmodf.c
index 4b50a3d3..837e9371 100644
--- a/src/math/fmodf.c
+++ b/src/math/fmodf.c
@@ -20,7 +20,7 @@
#include "libm.h"
-static const float one = 1.0, Zero[] = {0.0, -0.0,};
+static const float Zero[] = {0.0, -0.0,};
float fmodf(float x, float y)
{
@@ -99,7 +99,6 @@ float fmodf(float x, float y)
n = -126 - iy;
hx >>= n;
SET_FLOAT_WORD(x, hx|sx);
- x *= one; /* create necessary signal */
}
return x; /* exact output */
}
diff --git a/src/math/fmodl.c b/src/math/fmodl.c
index 2e3eec1f..b930c49d 100644
--- a/src/math/fmodl.c
+++ b/src/math/fmodl.c
@@ -48,7 +48,7 @@ typedef uint32_t manh_t;
#define MANL_SHIFT (LDBL_MANL_SIZE - 1)
-static const long double one = 1.0, Zero[] = {0.0, -0.0,};
+static const long double Zero[] = {0.0, -0.0,};
/*
* fmodl(x,y)
@@ -153,7 +153,6 @@ long double fmodl(long double x, long double y)
} else {
ux.bits.exp = iy + BIAS;
}
- x = ux.e * one; /* create necessary signal */
- return x; /* exact output */
+ return ux.e; /* exact output */
}
#endif