From 216633f73cd9c8163b2b2fe5f6c00e8d819ade1f Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 10 Jan 2006 16:51:58 +0000 Subject: 2006-01-10 Jeff Johnston * libm/mathfp/s_frexp.c: Check for special values on the original input, not the manipulated output value. * libm/mathfp/sf_frexp.c: Ditto. * libm/mathfp/s_atangent.c: Don't use local value branch when checking for quadrant. * libm/mathfp/sf_atangent.c: Ditto. --- newlib/libm/mathfp/s_atangent.c | 4 ++-- newlib/libm/mathfp/s_frexp.c | 21 +++++++++++---------- newlib/libm/mathfp/sf_atangent.c | 4 ++-- newlib/libm/mathfp/sf_frexp.c | 21 +++++++++++---------- 4 files changed, 26 insertions(+), 24 deletions(-) (limited to 'newlib/libm') diff --git a/newlib/libm/mathfp/s_atangent.c b/newlib/libm/mathfp/s_atangent.c index 981e1c822..0a7c4d2f8 100644 --- a/newlib/libm/mathfp/s_atangent.c +++ b/newlib/libm/mathfp/s_atangent.c @@ -197,9 +197,9 @@ _DEFUN (atangent, (double, double, double, int), if (arctan2) { - if (u < 0.0 || branch == 2) + if (u < 0.0) res = __PI - res; - if (v < 0.0 || branch == 1) + if (v < 0.0) res = -res; } else if (x < 0.0) diff --git a/newlib/libm/mathfp/s_frexp.c b/newlib/libm/mathfp/s_frexp.c index 08611e9a7..54fa336c8 100644 --- a/newlib/libm/mathfp/s_frexp.c +++ b/newlib/libm/mathfp/s_frexp.c @@ -82,6 +82,17 @@ double frexp (double d, int *exp) double f; __uint32_t hd, ld, hf, lf; + /* Check for special values. */ + switch (numtest (d)) + { + case NAN: + case INF: + errno = EDOM; + case 0: + *exp = 0; + return (d); + } + EXTRACT_WORDS (hd, ld, d); /* Get the exponent. */ @@ -94,16 +105,6 @@ double frexp (double d, int *exp) INSERT_WORDS (f, hf, lf); - /* Check for special values. */ - switch (numtest (f)) - { - case NAN: - case INF: - errno = EDOM; - *exp = 0; - return (f); - } - return (f); } diff --git a/newlib/libm/mathfp/sf_atangent.c b/newlib/libm/mathfp/sf_atangent.c index 55a90063c..7a8f0cebe 100644 --- a/newlib/libm/mathfp/sf_atangent.c +++ b/newlib/libm/mathfp/sf_atangent.c @@ -126,9 +126,9 @@ _DEFUN (atangentf, (float, float, float, int), if (arctan2) { - if (u < 0.0 || branch == 2) + if (u < 0.0) res = __PI - res; - if (v < 0.0 || branch == 1) + if (v < 0.0) res = -res; } else if (x < 0.0) diff --git a/newlib/libm/mathfp/sf_frexp.c b/newlib/libm/mathfp/sf_frexp.c index c2751f65c..7f25195c8 100644 --- a/newlib/libm/mathfp/sf_frexp.c +++ b/newlib/libm/mathfp/sf_frexp.c @@ -24,6 +24,17 @@ float frexpf (float d, int *exp) float f; __int32_t wf, wd; + /* Check for special values. */ + switch (numtestf (d)) + { + case NAN: + case INF: + errno = EDOM; + case 0: + *exp = 0; + return (d); + } + GET_FLOAT_WORD (wd, d); /* Get the exponent. */ @@ -35,16 +46,6 @@ float frexpf (float d, int *exp) SET_FLOAT_WORD (f, wf); - /* Check for special values. */ - switch (numtestf (f)) - { - case NAN: - case INF: - errno = EDOM; - *exp = 0; - return (f); - } - return (f); } -- cgit v1.2.3