summaryrefslogtreecommitdiff
path: root/src/math/frexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/frexp.c')
-rw-r--r--src/math/frexp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/math/frexp.c b/src/math/frexp.c
index 40bb59c8..b60dadc5 100644
--- a/src/math/frexp.c
+++ b/src/math/frexp.c
@@ -6,6 +6,13 @@
/** extract mantissa and exponent **/
TYPE TGFN(frexp)(TYPE value, int *exp)
{
+ switch (fpclassify(value)) {
+ case FP_ZERO: *exp = 0; return value;
+ case FP_INFINITE: *exp = /* unspecified */0; return value;
+ case FP_NAN: *exp = /* unspecified */0; return value;
+ default: break;
+ }
+
if (0) {
errno = ERANGE; /* The result cannot be represented */
/* RETURN(CONSTANT(HUGE_VAL), A range error occurred); */