diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-12-19 05:07:31 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-12-19 05:07:31 +0000 |
commit | cc46d0cfcf056cd46a99b6c9051291da31764c58 (patch) | |
tree | 924077ae6d01b45c0b8363d666e806268cf7d382 /math | |
parent | aa9e3c3940003135ee8d3b2e728b627930eb65b1 (diff) | |
download | glibc-cc46d0cfcf056cd46a99b6c9051291da31764c58.tar.gz glibc-cc46d0cfcf056cd46a99b6c9051291da31764c58.tar.xz glibc-cc46d0cfcf056cd46a99b6c9051291da31764c58.zip |
Update.
* math/test-misc.c: Add more tests for nextafter. * sysdeps/i386/fpu/s_nextafterl.c: Handle decrement for x<0 correctly. * sysdeps/ieee754/ldbl-96/math_ldbl.h (ieee_long_double_shape_type): Make sign_exponent element signed.
Diffstat (limited to 'math')
-rw-r--r-- | math/test-misc.c | 165 |
1 files changed, 131 insertions, 34 deletions
diff --git a/math/test-misc.c b/math/test-misc.c index 8affd2d5ec..c4f9731413 100644 --- a/math/test-misc.c +++ b/math/test-misc.c @@ -114,41 +114,138 @@ main (void) } } - if (fpclassify (FLT_MIN) != FP_NORMAL) - { - printf ("fpclassify (FLT_MIN) failed: %d\n", fpclassify (FLT_MIN)); - result = 1; - } - if (fpclassify (nextafterf (FLT_MIN, FLT_MIN / 2.0f)) != FP_SUBNORMAL) - { - printf ("fpclassify (FLT_MIN-epsilon) failed: %d\n", - fpclassify (nextafterf (FLT_MIN, FLT_MIN / 2.0f))); - result = 1; - } - if (fpclassify (DBL_MIN) != FP_NORMAL) - { - printf ("fpclassify (DBL_MIN) failed: %d\n", fpclassify (DBL_MIN)); - result = 1; - } - if (fpclassify (nextafter (DBL_MIN, DBL_MIN / 2.0)) != FP_SUBNORMAL) - { - printf ("fpclassify (DBL_MIN-epsilon) failed: %d\n", - fpclassify (nextafter (DBL_MIN, DBL_MIN / 2.0))); - result = 1; - } + { + float f; + + f = FLT_MIN; + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (FLT_MIN) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, FLT_MIN / 2.0f); + if (fpclassify (f) != FP_SUBNORMAL) + { + printf ("fpclassify (FLT_MIN-epsilon) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, FLT_MIN); + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (FLT_MIN-epsilon+epsilong) failed: %d\n", + fpclassify (f)); + result = 1; + } + + f = -FLT_MIN; + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (-FLT_MIN) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, -FLT_MIN / 2.0f); + if (fpclassify (f) != FP_SUBNORMAL) + { + printf ("fpclassify (-FLT_MIN-epsilon) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, -FLT_MIN); + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (-FLT_MIN-epsilon+epsilong) failed: %d\n", + fpclassify (f)); + result = 1; + } + } + { + double d; + + d = DBL_MIN; + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (DBL_MIN) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, DBL_MIN / 2.0); + if (fpclassify (d) != FP_SUBNORMAL) + { + printf ("fpclassify (DBL_MIN-epsilon) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, DBL_MIN); + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (DBL_MIN-epsilon+epsilon) failed: %d\n", + fpclassify (d)); + result = 1; + } + + d = -DBL_MIN; + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (-DBL_MIN) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, -DBL_MIN / 2.0); + if (fpclassify (d) != FP_SUBNORMAL) + { + printf ("fpclassify (-DBL_MIN-epsilon) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, -DBL_MIN); + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (-DBL_MIN-epsilon+epsilon) failed: %d\n", + fpclassify (d)); + result = 1; + } + } #ifndef NO_LONG_DOUBLE - if (fpclassify (LDBL_MIN) != FP_NORMAL) - { - printf ("fpclassify (LDBL_MIN) failed: %d\n", fpclassify (LDBL_MIN)); - result = 1; - } - if (fpclassify (nextafterl (LDBL_MIN, LDBL_MIN / 2.0)) != FP_SUBNORMAL) - { - printf ("fpclassify (LDBL_MIN-epsilon) failed: %d (%Lg)\n", - fpclassify (nextafterl (LDBL_MIN, LDBL_MIN / 2.0)), - nextafterl (LDBL_MIN, LDBL_MIN / 2.0)); - result = 1; - } + { + long double ld; + + ld = LDBL_MIN; + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (LDBL_MIN) failed: %d\n", fpclassify (ld)); + result = 1; + } + ld = nextafterl (ld, LDBL_MIN / 2.0); + if (fpclassify (ld) != FP_SUBNORMAL) + { + printf ("fpclassify (LDBL_MIN-epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + ld = nextafterl (ld, LDBL_MIN); + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (LDBL_MIN-epsilon+epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + + ld = -LDBL_MIN; + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (-LDBL_MIN) failed: %d\n", fpclassify (ld)); + result = 1; + } + ld = nextafterl (ld, -LDBL_MIN / 2.0); + if (fpclassify (ld) != FP_SUBNORMAL) + { + printf ("fpclassify (-LDBL_MIN-epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + ld = nextafterl (ld, -LDBL_MIN); + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (-LDBL_MIN-epsilon+epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + } #endif if (! isnormal (FLT_MIN)) |