diff options
Diffstat (limited to 'math')
-rw-r--r-- | math/Makefile | 5 | ||||
-rw-r--r-- | math/atest-exp.c | 4 | ||||
-rw-r--r-- | math/atest-exp2.c | 4 | ||||
-rw-r--r-- | math/atest-sincos.c | 33 | ||||
-rw-r--r-- | math/basic-test.c | 51 | ||||
-rw-r--r-- | math/bits/mathcalls.h | 2 | ||||
-rw-r--r-- | math/fegetenv.c | 5 | ||||
-rwxr-xr-x | math/gen-libm-test.pl | 24 | ||||
-rw-r--r-- | math/k_casinh.c | 57 | ||||
-rw-r--r-- | math/k_casinhf.c | 63 | ||||
-rw-r--r-- | math/k_casinhl.c | 63 | ||||
-rw-r--r-- | math/libm-test.inc | 1871 | ||||
-rw-r--r-- | math/test-misc.c | 12 | ||||
-rw-r--r-- | math/test-snan.c | 351 |
14 files changed, 1882 insertions, 663 deletions
diff --git a/math/Makefile b/math/Makefile index da18b56d4b..e216dfb96a 100644 --- a/math/Makefile +++ b/math/Makefile @@ -88,7 +88,7 @@ long-c-yes = $(calls:=l) tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \ test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret \ bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int \ - test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 + test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 test-snan # We do the `long double' tests only if this data type is available and # distinct from `double'. test-longdouble-yes = test-ldouble test-ildoubl @@ -193,9 +193,6 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libm.so$(libm.so-version) else $(addprefix $(objpfx),$(tests)): $(objpfx)libm.a endif -ifeq ($(build-bounded),yes) -$(tests:%=$(objpfx)%-bp): $(objpfx)libm_b.a -endif gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%.o,\ add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \ diff --git a/math/atest-exp.c b/math/atest-exp.c index 2678e743ce..d76b9125ca 100644 --- a/math/atest-exp.c +++ b/math/atest-exp.c @@ -61,7 +61,7 @@ exp_mpn (mp1 ex, mp1 x) unsigned n; mp1 xp; mp2 tmp; - mp_limb_t chk, round; + mp_limb_t chk; mp1 tol; memset (xp, 0, sizeof (mp1)); @@ -79,7 +79,7 @@ exp_mpn (mp1 ex, mp1 x) mpn_mul_n (tmp, xp, x, SZ); assert (tmp[SZ * 2 - 1] == 0); if (n > 0) - round = mpn_divmod_1 (xp, tmp + FRAC / mpbpl, SZ, n); + mpn_divmod_1 (xp, tmp + FRAC / mpbpl, SZ, n); chk = mpn_add_n (ex, ex, xp, SZ); assert (chk == 0); n++; diff --git a/math/atest-exp2.c b/math/atest-exp2.c index b05d43b407..20836ca0dc 100644 --- a/math/atest-exp2.c +++ b/math/atest-exp2.c @@ -102,7 +102,7 @@ exp_mpn (mp1 ex, mp1 x) unsigned int n; mp1 xp; mp2 tmp; - mp_limb_t chk, round; + mp_limb_t chk; mp1 tol; memset (xp, 0, sizeof (mp1)); @@ -120,7 +120,7 @@ exp_mpn (mp1 ex, mp1 x) mpn_mul_n (tmp, xp, x, SZ); assert(tmp[SZ * 2 - 1] == 0); if (n > 0) - round = mpn_divmod_1 (xp, tmp + FRAC / mpbpl, SZ, n); + mpn_divmod_1 (xp, tmp + FRAC / mpbpl, SZ, n); chk = mpn_add_n (ex, ex, xp, SZ); assert (chk == 0); ++n; diff --git a/math/atest-sincos.c b/math/atest-sincos.c index bea157c288..313bccb884 100644 --- a/math/atest-sincos.c +++ b/math/atest-sincos.c @@ -64,7 +64,6 @@ sincosx_mpn (mp1 si, mp1 co, mp1 xx, mp1 ix) int i; mp2 s[4], c[4]; mp1 tmp, x; - mp_limb_t chk, round; if (ix == NULL) { @@ -79,34 +78,38 @@ sincosx_mpn (mp1 si, mp1 co, mp1 xx, mp1 ix) for (i = 0; i < 1 << N; i++) { #define add_shift_mulh(d,x,s1,s2,sh,n) \ - /* d = (n ? -1 : 1) * (s1 + (s2>>sh)) * x / (1>>N); */ \ do { \ if (s2 != NULL) { \ if (sh > 0) { \ assert (sh < mpbpl); \ mpn_lshift (tmp, s1, SZ, sh); \ - chk = (n ? mpn_sub_n : mpn_add_n)(tmp,tmp,s2+FRAC/mpbpl,SZ); \ - } else \ - chk = (n ? mpn_sub_n : mpn_add_n)(tmp,s1,s2+FRAC/mpbpl,SZ); \ - /* assert(chk == 0); */ \ + if (n) \ + mpn_sub_n (tmp,tmp,s2+FRAC/mpbpl,SZ); \ + else \ + mpn_add_n (tmp,tmp,s2+FRAC/mpbpl,SZ); \ + } else { \ + if (n) \ + mpn_sub_n (tmp,s1,s2+FRAC/mpbpl,SZ); \ + else \ + mpn_add_n (tmp,s1,s2+FRAC/mpbpl,SZ); \ + } \ mpn_mul_n(d,tmp,x,SZ); \ } else \ mpn_mul_n(d,s1,x,SZ); \ - /* assert(d[SZ*2-1] == 0); */ \ assert(N+sh < mpbpl); \ if (N+sh > 0) mpn_rshift(d,d,2*SZ,N+sh); \ } while(0) #define summ(d,ss,s,n) \ - /* d = ss +/- (s[0]+2*s[1]+2*s[2]+s[3])/6; */ \ do { \ - chk = mpn_add_n(tmp,s[1]+FRAC/mpbpl,s[2]+FRAC/mpbpl,SZ); \ + mpn_add_n(tmp,s[1]+FRAC/mpbpl,s[2]+FRAC/mpbpl,SZ); \ mpn_lshift(tmp,tmp,SZ,1); \ - chk |= mpn_add_n(tmp,tmp,s[0]+FRAC/mpbpl,SZ); \ - chk |= mpn_add_n(tmp,tmp,s[3]+FRAC/mpbpl,SZ); \ - round = mpn_divmod_1(tmp,tmp,SZ,6); \ - /* chk |= mpn_add_1(tmp,tmp,SZ, (round > 3) ); */ \ - chk |= (n ? mpn_sub_n : mpn_add_n)(d,ss,tmp,SZ); \ - /* assert(chk == 0); */ \ + mpn_add_n(tmp,tmp,s[0]+FRAC/mpbpl,SZ); \ + mpn_add_n(tmp,tmp,s[3]+FRAC/mpbpl,SZ); \ + mpn_divmod_1(tmp,tmp,SZ,6); \ + if (n) \ + mpn_sub_n (d,ss,tmp,SZ); \ + else \ + mpn_add_n (d,ss,tmp,SZ); \ } while (0) add_shift_mulh (s[0], x, co, NULL, 0, 0); /* s0 = h * c; */ diff --git a/math/basic-test.c b/math/basic-test.c index f9b9752dea..ffead2ec0f 100644 --- a/math/basic-test.c +++ b/math/basic-test.c @@ -32,40 +32,40 @@ check (const char *testname, int result) } } -#define TEST_FUNC(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \ +#define TEST_FUNC(NAME, FLOAT, SUFFIX, EPSILON, HUGEVAL) \ static void \ NAME (void) \ { \ /* Variables are declared volatile to forbid some compiler \ optimizations. */ \ - volatile FLOAT Inf_var, NaN_var, zero_var, one_var; \ + volatile FLOAT Inf_var, qNaN_var, zero_var, one_var; \ FLOAT x1, x2; \ \ zero_var = 0.0; \ one_var = 1.0; \ - NaN_var = zero_var / zero_var; \ + qNaN_var = __builtin_nan ## SUFFIX (""); \ Inf_var = one_var / zero_var; \ \ (void) &zero_var; \ (void) &one_var; \ - (void) &NaN_var; \ + (void) &qNaN_var; \ (void) &Inf_var; \ \ \ check (#FLOAT " isinf (inf) == 1", isinf (Inf_var) == 1); \ check (#FLOAT " isinf (-inf) == -1", isinf (-Inf_var) == -1); \ check (#FLOAT " !isinf (1)", !(isinf (one_var))); \ - check (#FLOAT " !isinf (NaN)", !(isinf (NaN_var))); \ + check (#FLOAT " !isinf (qNaN)", !(isinf (qNaN_var))); \ \ - check (#FLOAT " isnan (NaN)", isnan (NaN_var)); \ - check (#FLOAT " isnan (-NaN)", isnan (-NaN_var)); \ + check (#FLOAT " isnan (qNaN)", isnan (qNaN_var)); \ + check (#FLOAT " isnan (-qNaN)", isnan (-qNaN_var)); \ check (#FLOAT " !isnan (1)", !(isnan (one_var))); \ check (#FLOAT " !isnan (inf)", !(isnan (Inf_var))); \ \ check (#FLOAT " inf == inf", Inf_var == Inf_var); \ check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \ check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \ - check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \ + check (#FLOAT " qNaN != qNaN", qNaN_var != qNaN_var); \ \ /* \ the same tests but this time with NAN from <bits/nan.h> \ @@ -80,11 +80,12 @@ NAME (void) \ /* \ And again with the value returned by the `nan' function. \ */ \ - check (#FLOAT " isnan (NAN)", isnan (NANFUNC (""))); \ - check (#FLOAT " isnan (-NAN)", isnan (-NANFUNC (""))); \ - check (#FLOAT " !isinf (NAN)", !(isinf (NANFUNC ("")))); \ - check (#FLOAT " !isinf (-NAN)", !(isinf (-NANFUNC ("")))); \ - check (#FLOAT " NAN != NAN", NANFUNC ("") != NANFUNC ("")); \ + check (#FLOAT " isnan (nan (\"\"))", isnan (nan ## SUFFIX (""))); \ + check (#FLOAT " isnan (-nan (\"\"))", isnan (-nan ## SUFFIX (""))); \ + check (#FLOAT " !isinf (nan (\"\"))", !(isinf (nan ## SUFFIX ("")))); \ + check (#FLOAT " !isinf (-nan (\"\"))", !(isinf (-nan ## SUFFIX ("")))); \ + check (#FLOAT " nan (\"\") != nan (\"\")", \ + nan ## SUFFIX ("") != nan ## SUFFIX ("")); \ \ /* test if EPSILON is ok */ \ x1 = 1.0; \ @@ -102,34 +103,34 @@ NAME (void) \ check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \ } -#define TEST_TRUNC(NAME, FLOAT, DOUBLE) \ +#define TEST_TRUNC(NAME, FLOAT, DOUBLE, SUFFIX) \ void \ NAME (void) \ { \ - volatile DOUBLE Inf_var, NaN_var, zero_var, one_var; \ + volatile DOUBLE Inf_var, qNaN_var, zero_var, one_var; \ FLOAT x1, x2; \ \ zero_var = 0.0; \ one_var = 1.0; \ - NaN_var = zero_var / zero_var; \ + qNaN_var = __builtin_nan ## SUFFIX (""); \ Inf_var = one_var / zero_var; \ \ - (void) &NaN_var; \ + (void) &qNaN_var; \ (void) &Inf_var; \ \ - x1 = (FLOAT) NaN_var; \ - check (" "#FLOAT" x = ("#FLOAT") ("#DOUBLE") NaN", isnan (x1) != 0); \ + x1 = (FLOAT) qNaN_var; \ + check (" "#FLOAT" x = ("#FLOAT") ("#DOUBLE") qNaN", isnan (x1) != 0); \ x2 = (FLOAT) Inf_var; \ check (" "#FLOAT" x = ("#FLOAT") ("#DOUBLE") Inf", isinf (x2) != 0); \ } -TEST_FUNC (float_test, float, nanf, FLT_EPSILON, HUGE_VALF) -TEST_FUNC (double_test, double, nan, DBL_EPSILON, HUGE_VAL) -TEST_TRUNC (truncdfsf_test, float, double) +TEST_FUNC (float_test, float, f, FLT_EPSILON, HUGE_VALF) +TEST_FUNC (double_test, double, , DBL_EPSILON, HUGE_VAL) +TEST_TRUNC (truncdfsf_test, float, double, ) #ifndef NO_LONG_DOUBLE -TEST_FUNC (ldouble_test, long double, nanl, LDBL_EPSILON, HUGE_VALL) -TEST_TRUNC (trunctfsf_test, float, long double) -TEST_TRUNC (trunctfdf_test, double, long double) +TEST_FUNC (ldouble_test, long double, l, LDBL_EPSILON, HUGE_VALL) +TEST_TRUNC (trunctfsf_test, float, long double, l) +TEST_TRUNC (trunctfdf_test, double, long double, l) #endif int diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index e90a34b0f7..e5af507257 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -220,7 +220,7 @@ __END_NAMESPACE_C99 #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 -/* Return representation of NaN for double type. */ +/* Return representation of qNaN for double type. */ __MATHCALLX (nan,, (const char *__tagb), (__const__)); __END_NAMESPACE_C99 #endif diff --git a/math/fegetenv.c b/math/fegetenv.c index fe08edaa78..14bb801237 100644 --- a/math/fegetenv.c +++ b/math/fegetenv.c @@ -19,7 +19,6 @@ #include <fenv.h> #include <shlib-compat.h> -#include <bp-sym.h> int __fegetenv (fenv_t *envp) @@ -29,9 +28,9 @@ __fegetenv (fenv_t *envp) } #if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) strong_alias (__fegetenv, __old_fegetenv) -compat_symbol (libm, BP_SYM (__old_fegetenv), BP_SYM (fegetenv), GLIBC_2_1); +compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif libm_hidden_ver (__fegetenv, fegetenv) -versioned_symbol (libm, BP_SYM (__fegetenv), BP_SYM (fegetenv), GLIBC_2_2); +versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); stub_warning (fegetenv) diff --git a/math/gen-libm-test.pl b/math/gen-libm-test.pl index 998a9e5e32..f50f1d9e02 100755 --- a/math/gen-libm-test.pl +++ b/math/gen-libm-test.pl @@ -58,7 +58,7 @@ use vars qw ($output_dir $ulps_file); "plus_zero" => "+0", "minus_infty" => "-inf", "plus_infty" => "inf", - "nan_value" => "NaN", + "qnan_value" => "qNaN", "M_El" => "e", "M_E2l" => "e^2", "M_E3l" => "e^3", @@ -203,22 +203,24 @@ sub special_functions { unless ($args[0] =~ /sincos/) { die ("Don't know how to handle $args[0] extra."); } - print $file " FUNC (sincos) ($args[1], &sin_res, &cos_res);\n"; + print $file " {\n"; + print $file " FUNC (sincos) ($args[1], &sin_res, &cos_res);\n"; $str = 'sincos (' . &beautify ($args[1]) . ', &sin_res, &cos_res)'; # handle sin $test = $str . ' puts ' . &beautify ($args[2]) . ' in sin_res'; - $cline = " check_float (\"$test\", sin_res, $args[2]"; + $cline = " check_float (\"$test\", sin_res, $args[2]"; $cline .= &new_test ($test, $args[4]); print $file $cline; # handle cos $test = $str . ' puts ' . &beautify ($args[3]) . ' in cos_res'; - $cline = " check_float (\"$test\", cos_res, $args[3]"; + $cline = " check_float (\"$test\", cos_res, $args[3]"; # only tests once for exception $cline .= &new_test ($test, undef); print $file $cline; + print $file " }\n"; } # Parse the arguments to TEST_x_y @@ -398,11 +400,15 @@ sub parse_args { } } - print $file $pre if (defined $pre); - - print $file " $cline"; - - print $file $post if (defined $post); + if (defined $pre or defined $post) { + print $file " {\n"; + print $file " $pre" if (defined $pre); + print $file " $cline"; + print $file " $post" if (defined $post); + print $file " }\n"; + } else { + print $file " $cline"; + } } # Generate libm-test.c diff --git a/math/k_casinh.c b/math/k_casinh.c index 41cd5ec47d..4cb232a17a 100644 --- a/math/k_casinh.c +++ b/math/k_casinh.c @@ -77,6 +77,63 @@ __kernel_casinh (__complex__ double x, int adj) else __imag__ res = __ieee754_atan2 (s, rx); } + else if (ix > 1.0 && ix < 1.5 && rx < 0.5) + { + if (rx < DBL_EPSILON * DBL_EPSILON) + { + double ix2m1 = (ix + 1.0) * (ix - 1.0); + double s = __ieee754_sqrt (ix2m1); + + __real__ res = __log1p (2.0 * (ix2m1 + ix * s)) / 2.0; + if (adj) + __imag__ res = __ieee754_atan2 (rx, __copysign (s, __imag__ x)); + else + __imag__ res = __ieee754_atan2 (s, rx); + } + else + { + double ix2m1 = (ix + 1.0) * (ix - 1.0); + double rx2 = rx * rx; + double f = rx2 * (2.0 + rx2 + 2.0 * ix * ix); + double d = __ieee754_sqrt (ix2m1 * ix2m1 + f); + double dp = d + ix2m1; + double dm = f / dp; + double r1 = __ieee754_sqrt ((dm + rx2) / 2.0); + double r2 = rx * ix / r1; + + __real__ res = __log1p (rx2 + dp + 2.0 * (rx * r1 + ix * r2)) / 2.0; + if (adj) + __imag__ res = __ieee754_atan2 (rx + r1, __copysign (ix + r2, + __imag__ x)); + else + __imag__ res = __ieee754_atan2 (ix + r2, rx + r1); + } + } + else if (ix == 1.0 && rx < 0.5) + { + if (rx < DBL_EPSILON / 8.0) + { + __real__ res = __log1p (2.0 * (rx + __ieee754_sqrt (rx))) / 2.0; + if (adj) + __imag__ res = __ieee754_atan2 (__ieee754_sqrt (rx), + __copysign (1.0, __imag__ x)); + else + __imag__ res = __ieee754_atan2 (1.0, __ieee754_sqrt (rx)); + } + else + { + double d = rx * __ieee754_sqrt (4.0 + rx * rx); + double s1 = __ieee754_sqrt ((d + rx * rx) / 2.0); + double s2 = __ieee754_sqrt ((d - rx * rx) / 2.0); + + __real__ res = __log1p (rx * rx + d + 2.0 * (rx * s1 + s2)) / 2.0; + if (adj) + __imag__ res = __ieee754_atan2 (rx + s1, __copysign (1.0 + s2, + __imag__ x)); + else + __imag__ res = __ieee754_atan2 (1.0 + s2, rx + s1); + } + } else { __real__ y = (rx - ix) * (rx + ix) + 1.0; diff --git a/math/k_casinhf.c b/math/k_casinhf.c index 3152ea2f7d..b368313390 100644 --- a/math/k_casinhf.c +++ b/math/k_casinhf.c @@ -77,10 +77,69 @@ __kernel_casinhf (__complex__ float x, int adj) else __imag__ res = __ieee754_atan2f (s, rx); } + else if (ix > 1.0f && ix < 1.5f && rx < 0.5f) + { + if (rx < FLT_EPSILON * FLT_EPSILON) + { + float ix2m1 = (ix + 1.0f) * (ix - 1.0f); + float s = __ieee754_sqrtf (ix2m1); + + __real__ res = __log1pf (2.0f * (ix2m1 + ix * s)) / 2.0f; + if (adj) + __imag__ res = __ieee754_atan2f (rx, __copysignf (s, __imag__ x)); + else + __imag__ res = __ieee754_atan2f (s, rx); + } + else + { + float ix2m1 = (ix + 1.0f) * (ix - 1.0f); + float rx2 = rx * rx; + float f = rx2 * (2.0f + rx2 + 2.0f * ix * ix); + float d = __ieee754_sqrtf (ix2m1 * ix2m1 + f); + float dp = d + ix2m1; + float dm = f / dp; + float r1 = __ieee754_sqrtf ((dm + rx2) / 2.0f); + float r2 = rx * ix / r1; + + __real__ res + = __log1pf (rx2 + dp + 2.0f * (rx * r1 + ix * r2)) / 2.0f; + if (adj) + __imag__ res = __ieee754_atan2f (rx + r1, __copysignf (ix + r2, + __imag__ x)); + else + __imag__ res = __ieee754_atan2f (ix + r2, rx + r1); + } + } + else if (ix == 1.0f && rx < 0.5f) + { + if (rx < FLT_EPSILON / 8.0f) + { + __real__ res = __log1pf (2.0f * (rx + __ieee754_sqrtf (rx))) / 2.0f; + if (adj) + __imag__ res = __ieee754_atan2f (__ieee754_sqrtf (rx), + __copysignf (1.0f, __imag__ x)); + else + __imag__ res = __ieee754_atan2f (1.0f, __ieee754_sqrtf (rx)); + } + else + { + float d = rx * __ieee754_sqrtf (4.0f + rx * rx); + float s1 = __ieee754_sqrtf ((d + rx * rx) / 2.0f); + float s2 = __ieee754_sqrtf ((d - rx * rx) / 2.0f); + + __real__ res = __log1pf (rx * rx + d + 2.0f * (rx * s1 + s2)) / 2.0f; + if (adj) + __imag__ res = __ieee754_atan2f (rx + s1, + __copysignf (1.0f + s2, + __imag__ x)); + else + __imag__ res = __ieee754_atan2f (1.0f + s2, rx + s1); + } + } else { - __real__ y = (rx - ix) * (rx + ix) + 1.0; - __imag__ y = 2.0 * rx * ix; + __real__ y = (rx - ix) * (rx + ix) + 1.0f; + __imag__ y = 2.0f * rx * ix; y = __csqrtf (y); diff --git a/math/k_casinhl.c b/math/k_casinhl.c index 110ae33dee..8e5bbd4385 100644 --- a/math/k_casinhl.c +++ b/math/k_casinhl.c @@ -84,10 +84,69 @@ __kernel_casinhl (__complex__ long double x, int adj) else __imag__ res = __ieee754_atan2l (s, rx); } + else if (ix > 1.0L && ix < 1.5L && rx < 0.5L) + { + if (rx < LDBL_EPSILON * LDBL_EPSILON) + { + long double ix2m1 = (ix + 1.0L) * (ix - 1.0L); + long double s = __ieee754_sqrtl (ix2m1); + + __real__ res = __log1pl (2.0L * (ix2m1 + ix * s)) / 2.0L; + if (adj) + __imag__ res = __ieee754_atan2l (rx, __copysignl (s, __imag__ x)); + else + __imag__ res = __ieee754_atan2l (s, rx); + } + else + { + long double ix2m1 = (ix + 1.0L) * (ix - 1.0L); + long double rx2 = rx * rx; + long double f = rx2 * (2.0L + rx2 + 2.0L * ix * ix); + long double d = __ieee754_sqrtl (ix2m1 * ix2m1 + f); + long double dp = d + ix2m1; + long double dm = f / dp; + long double r1 = __ieee754_sqrtl ((dm + rx2) / 2.0L); + long double r2 = rx * ix / r1; + + __real__ res + = __log1pl (rx2 + dp + 2.0L * (rx * r1 + ix * r2)) / 2.0L; + if (adj) + __imag__ res = __ieee754_atan2l (rx + r1, __copysignl (ix + r2, + __imag__ x)); + else + __imag__ res = __ieee754_atan2l (ix + r2, rx + r1); + } + } + else if (ix == 1.0L && rx < 0.5L) + { + if (rx < LDBL_EPSILON / 8.0L) + { + __real__ res = __log1pl (2.0L * (rx + __ieee754_sqrtl (rx))) / 2.0L; + if (adj) + __imag__ res = __ieee754_atan2l (__ieee754_sqrtl (rx), + __copysignl (1.0L, __imag__ x)); + else + __imag__ res = __ieee754_atan2l (1.0L, __ieee754_sqrtl (rx)); + } + else + { + long double d = rx * __ieee754_sqrtl (4.0L + rx * rx); + long double s1 = __ieee754_sqrtl ((d + rx * rx) / 2.0L); + long double s2 = __ieee754_sqrtl ((d - rx * rx) / 2.0L); + + __real__ res = __log1pl (rx * rx + d + 2.0L * (rx * s1 + s2)) / 2.0L; + if (adj) + __imag__ res = __ieee754_atan2l (rx + s1, + __copysignl (1.0L + s2, + __imag__ x)); + else + __imag__ res = __ieee754_atan2l (1.0L + s2, rx + s1); + } + } else { - __real__ y = (rx - ix) * (rx + ix) + 1.0; - __imag__ y = 2.0 * rx * ix; + __real__ y = (rx - ix) * (rx + ix) + 1.0L; + __imag__ y = 2.0L * rx * ix; y = __csqrtl (y); diff --git a/math/libm-test.inc b/math/libm-test.inc index 6ac3cd2d0b..0ea456bb94 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -224,7 +224,7 @@ static int output_points; /* Should the single function results printed? */ static int ignore_max_ulp; /* Should we ignore max_ulp? */ static FLOAT minus_zero, plus_zero; -static FLOAT plus_infty, minus_infty, nan_value, max_value, min_value; +static FLOAT plus_infty, minus_infty, qnan_value, max_value, min_value; static FLOAT min_subnorm_value; static FLOAT max_error, real_max_error, imag_max_error; @@ -361,7 +361,7 @@ print_complex_function_ulps (const char *function_name, FLOAT real_ulp, static void fpstack_test (const char *test_name) { -#ifdef i386 +#if defined (__i386__) || defined (__x86_64__) static int old_stack; int sw; @@ -805,15 +805,15 @@ acos_test (void) START (acos); - TEST_f_f (acos, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, nan_value, nan_value); + TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acos, qnan_value, qnan_value); /* |x| > 1: */ - TEST_f_f (acos, 1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, -1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (acos, -max_value, nan_value, INVALID_EXCEPTION); + TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION); TEST_f_f (acos, 0, M_PI_2l); TEST_f_f (acos, minus_zero, M_PI_2l); @@ -971,11 +971,12 @@ acosh_test (void) START (acosh); TEST_f_f (acosh, plus_infty, plus_infty); - TEST_f_f (acosh, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acosh, qnan_value, qnan_value); /* x < 1: */ - TEST_f_f (acosh, -1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (acosh, -max_value, nan_value, INVALID_EXCEPTION); + TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION); TEST_f_f (acosh, 1, 0); TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L); @@ -994,15 +995,15 @@ asin_test (void) START (asin); - TEST_f_f (asin, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, nan_value, nan_value); + TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_f_f (asin, qnan_value, qnan_value); - /* asin x == NaN plus invalid exception for |x| > 1. */ - TEST_f_f (asin, 1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, -1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (asin, -max_value, nan_value, INVALID_EXCEPTION); + /* asin x == qNaN plus invalid exception for |x| > 1. */ + TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION); TEST_f_f (asin, 0, 0); TEST_f_f (asin, minus_zero, minus_zero); @@ -1164,7 +1165,7 @@ asinh_test (void) TEST_f_f (asinh, plus_infty, plus_infty); TEST_f_f (asinh, minus_infty, minus_infty); #endif - TEST_f_f (asinh, nan_value, nan_value); + TEST_f_f (asinh, qnan_value, qnan_value); TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L); END (asinh); @@ -1186,7 +1187,7 @@ atan_test (void) TEST_f_f (atan, plus_infty, M_PI_2l); TEST_f_f (atan, minus_infty, -M_PI_2l); - TEST_f_f (atan, nan_value, nan_value); + TEST_f_f (atan, qnan_value, qnan_value); TEST_f_f (atan, max_value, M_PI_2l); TEST_f_f (atan, -max_value, -M_PI_2l); @@ -1225,13 +1226,13 @@ atanh_test (void) TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (atanh, nan_value, nan_value); + TEST_f_f (atanh, qnan_value, qnan_value); - /* atanh (x) == NaN plus invalid exception if |x| > 1. */ - TEST_f_f (atanh, 1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (atanh, -1.125L, nan_value, INVALID_EXCEPTION); - TEST_f_f (atanh, max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (atanh, -max_value, nan_value, INVALID_EXCEPTION); + /* atanh (x) == qNaN plus invalid exception if |x| > 1. */ + TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION); + TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION); TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L); @@ -1301,7 +1302,7 @@ atan2_test (void) TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l); TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l); TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l); - TEST_ff_f (atan2, nan_value, nan_value, nan_value); + TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value); TEST_ff_f (atan2, max_value, max_value, M_PI_4l); @@ -1341,10 +1342,10 @@ cabs_test (void) /* cabs (-inf + i x) == +inf. */ TEST_c_f (cabs, minus_infty, 1.0, plus_infty); - TEST_c_f (cabs, minus_infty, nan_value, plus_infty); - TEST_c_f (cabs, minus_infty, nan_value, plus_infty); + TEST_c_f (cabs, minus_infty, qnan_value, plus_infty); + TEST_c_f (cabs, minus_infty, qnan_value, plus_infty); - TEST_c_f (cabs, nan_value, nan_value, nan_value); + TEST_c_f (cabs, qnan_value, qnan_value, qnan_value); /* cabs (x,y) == cabs (y,x). */ TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L); @@ -1410,22 +1411,22 @@ cacos_test (void) TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty); TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty); - TEST_c_c (cacos, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (cacos, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (cacos, 0, nan_value, M_PI_2l, nan_value); - TEST_c_c (cacos, minus_zero, nan_value, M_PI_2l, nan_value); + TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value); + TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value); - TEST_c_c (cacos, nan_value, plus_infty, nan_value, minus_infty); - TEST_c_c (cacos, nan_value, minus_infty, nan_value, plus_infty); + TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty); + TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty); - TEST_c_c (cacos, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacos, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacos, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacos, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacos, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L); TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L); @@ -1519,6 +1520,222 @@ cacos_test (void) TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L); #endif + TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L); + TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L); + TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L); + TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L); + TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L); + TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L); + TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L); + TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L); + TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L); + TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L); + TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L); + TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L); + TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L); + TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L); + TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L); + TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L); + TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L); + TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L); + TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L); + TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L); + TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L); + TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L); + TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L); + TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L); + TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L); + TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L); + TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L); + TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L); + TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L); + TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L); + TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L); + TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L); + TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L); + TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L); + TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L); + TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L); + TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L); + TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L); +#ifndef TEST_FLOAT + TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L); + TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L); + TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L); + TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L); + TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L); + TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L); + TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L); + TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L); +#endif +#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381 + TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L); + TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L); + TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L); + TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L); +#endif + + TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L) + TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L) + TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L) + TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L) + TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L) + TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L) + TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L) + TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L) + TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L) + TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L) +#ifndef TEST_FLOAT + TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L) + TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L) + TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L) + TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L) + TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L) + TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L) + TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L) + TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L) + TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM) + TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L) + TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM) + TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L) + TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L) + TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L) + TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L) + TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L) + TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 + TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L) + TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L) + TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L) + TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L) + TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L) + TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L) + TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L) + TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L) +# if LDBL_MIN_EXP <= -16381 + TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L) + TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L) + TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L) + TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L) +# endif + TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L) + TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L) + TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L) + TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L) + TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106 + TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L) + TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L) + TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L) + TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L) + TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113 + TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L) + TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L) + TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L) + TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L) + TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L) +#endif + TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L); TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L); @@ -1564,22 +1781,22 @@ cacosh_test (void) TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0); TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero); - TEST_c_c (cacosh, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (cacosh, minus_infty, nan_value, plus_infty, nan_value); + TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value); + TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value); - TEST_c_c (cacosh, 0, nan_value, nan_value, nan_value); - TEST_c_c (cacosh, minus_zero, nan_value, nan_value, nan_value); + TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value); + TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value); - TEST_c_c (cacosh, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (cacosh, nan_value, minus_infty, plus_infty, nan_value); + TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value); + TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value); - TEST_c_c (cacosh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacosh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacosh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacosh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cacosh, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l); TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l); @@ -1676,7 +1893,7 @@ carg_test (void) TEST_c_f (carg, minus_infty, minus_infty, -3 * M_PI_4l); - TEST_c_f (carg, nan_value, nan_value, nan_value); + TEST_c_f (carg, qnan_value, qnan_value, qnan_value); END (carg); } @@ -1721,22 +1938,22 @@ casin_test (void) TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty); TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty); - TEST_c_c (casin, nan_value, plus_infty, nan_value, plus_infty); - TEST_c_c (casin, nan_value, minus_infty, nan_value, minus_infty); + TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty); + TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty); - TEST_c_c (casin, 0.0, nan_value, 0.0, nan_value); - TEST_c_c (casin, minus_zero, nan_value, minus_zero, nan_value); + TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value); + TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value); - TEST_c_c (casin, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (casin, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (casin, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casin, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casin, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casin, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casin, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L); TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L); @@ -1830,6 +2047,222 @@ casin_test (void) TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L); #endif + TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L); + TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L); + TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L); + TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L); + TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L); + TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L); + TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L); + TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L); + TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L); + TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L); + TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L); + TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L); + TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L); + TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L); + TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L); + TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L); + TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L); + TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L); + TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L); + TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L); + TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L); + TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L); + TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L); + TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L); + TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L); + TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L); + TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L); + TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L); + TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L); + TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L); + TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L); + TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L); + TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L); + TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L); + TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L); + TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L); + TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L); + TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L); + TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L); + TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L); +#ifndef TEST_FLOAT + TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L); + TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L); + TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L); + TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L); + TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L); + TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L); + TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L); + TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L); +#endif +#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381 + TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L); + TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L); + TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION); + TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION); + TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION); + TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION); + TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L); + TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L); + TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L); + TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L); +#endif + + TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L) + TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L) + TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L) + TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L) + TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L) + TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L) + TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L) + TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L) + TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L) + TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L) + TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L) + TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L) + TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L) + TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L) +#ifndef TEST_FLOAT + TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L) + TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L) + TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L) + TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L) + TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L) + TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L) + TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L) + TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L) + TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L) + TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L) + TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L) + TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L) + TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L) + TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 + TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L) + TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L) + TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L) + TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L) + TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L) + TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L) + TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L) + TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L) +# if LDBL_MIN_EXP <= -16381 + TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L) + TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L) + TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L) + TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L) +# endif + TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L) + TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L) + TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L) + TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L) + TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L) + TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L) + TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L) + TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106 + TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L) + TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L) + TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L) + TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L) + TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L) + TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L) + TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113 + TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L) + TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L) + TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L) + TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L) + TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION) + TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L) + TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L) + TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L) +#endif + TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L); TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L); @@ -1877,22 +2310,22 @@ casinh_test (void) TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0); TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero); - TEST_c_c (casinh, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (casinh, minus_infty, nan_value, minus_infty, nan_value); + TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value); + TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value); - TEST_c_c (casinh, nan_value, 0, nan_value, 0.0); - TEST_c_c (casinh, nan_value, minus_zero, nan_value, minus_zero); + TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0); + TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero); - TEST_c_c (casinh, nan_value, plus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (casinh, nan_value, minus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); + TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN); + TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (casinh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casinh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casinh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casinh, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (casinh, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l); TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l); @@ -1986,6 +2419,222 @@ casinh_test (void) TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION); #endif + TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L); + TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L); + TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L); + TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L); + TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L); + TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L); + TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L); + TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L); + TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L); + TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L); + TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L); + TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L); + TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L); + TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L); + TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L); + TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L); + TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L); + TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L); + TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L); + TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L); + TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L); + TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L); + TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L); + TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L); + TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L); + TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L); + TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L); + TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L); + TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L); + TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L); + TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L); + TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L); + TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L); + TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L); + TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L); + TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L); + TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L); + TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L); + TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L); + TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L); + TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L); + TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L); + TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L); + TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L); + TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT); + TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT); +#ifndef TEST_FLOAT + TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM); + TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE); + TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE); +#endif +#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381 + TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L); + TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L); + TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L); + TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L); + TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L); + TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION); + TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION); + TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION); + TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION); +#endif + + TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L) + TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L) + TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L) + TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L) + TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L) + TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L) + TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L) + TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L) + TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L) + TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L) + TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L) + TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L) + TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT) + TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L) + TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L) + TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L) + TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L) +#ifndef TEST_FLOAT + TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L) + TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L) + TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L) + TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L) + TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L) + TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L) + TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L) + TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L) + TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L) + TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L) + TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L) + TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 + TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L) + TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L) + TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L) + TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L) + TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L) + TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L) + TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L) + TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L) +# if LDBL_MIN_EXP <= -16381 + TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION) +# endif + TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L) + TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L) + TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L) + TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106 + TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L) + TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L) + TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L) + TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L) + TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L) + TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L) + TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L) + TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L) + TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE) + TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L) + TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L) + TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L) + TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L) +#endif +#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113 + TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L) + TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L) + TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L) + TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L) + TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L) + TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L) + TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L) + TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L) + TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION) + TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L) + TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L) + TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L) + TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L) + TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L) +#endif + TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L); TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L); @@ -2034,25 +2683,25 @@ catan_test (void) TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0); TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0); - TEST_c_c (catan, nan_value, 0.0, nan_value, 0); - TEST_c_c (catan, nan_value, minus_zero, nan_value, minus_zero); + TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0); + TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero); - TEST_c_c (catan, nan_value, plus_infty, nan_value, 0); - TEST_c_c (catan, nan_value, minus_infty, nan_value, minus_zero); + TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0); + TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero); - TEST_c_c (catan, 0.0, nan_value, nan_value, nan_value); - TEST_c_c (catan, minus_zero, nan_value, nan_value, nan_value); + TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value); + TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value); - TEST_c_c (catan, plus_infty, nan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (catan, minus_infty, nan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (catan, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catan, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catan, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catan, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catan, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L); TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L); @@ -2100,25 +2749,25 @@ catanh_test (void) TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l); TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l); - TEST_c_c (catanh, 0, nan_value, 0.0, nan_value); - TEST_c_c (catanh, minus_zero, nan_value, minus_zero, nan_value); + TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value); + TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value); - TEST_c_c (catanh, plus_infty, nan_value, 0.0, nan_value); - TEST_c_c (catanh, minus_infty, nan_value, minus_zero, nan_value); + TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value); + TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value); - TEST_c_c (catanh, nan_value, 0, nan_value, nan_value); - TEST_c_c (catanh, nan_value, minus_zero, nan_value, nan_value); + TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value); + TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value); - TEST_c_c (catanh, nan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN); - TEST_c_c (catanh, nan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN); + TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN); + TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN); - TEST_c_c (catanh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catanh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catanh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catanh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (catanh, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L); TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L); @@ -2142,7 +2791,7 @@ cbrt_test (void) TEST_f_f (cbrt, plus_infty, plus_infty); TEST_f_f (cbrt, minus_infty, minus_infty); - TEST_f_f (cbrt, nan_value, nan_value); + TEST_f_f (cbrt, qnan_value, qnan_value); TEST_f_f (cbrt, -0.001L, -0.1L); TEST_f_f (cbrt, 8, 2); @@ -2170,50 +2819,50 @@ ccos_test (void) TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0); TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero); - TEST_c_c (ccos, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero); TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0); TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0); TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero); - TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty); TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty); TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty); TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty); - TEST_c_c (ccos, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (ccos, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (ccos, nan_value, minus_infty, plus_infty, nan_value); + TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value); + TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value); - TEST_c_c (ccos, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccos, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, -10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L); TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L); @@ -2269,50 +2918,50 @@ ccosh_test (void) TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero); TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0); - TEST_c_c (ccosh, 0.0, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, minus_zero, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, 0.0, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, minus_zero, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0); TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero); TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero); TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0); - TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty); TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty); TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty); TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty); - TEST_c_c (ccosh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (ccosh, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (ccosh, minus_infty, nan_value, plus_infty, nan_value); + TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value); + TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value); - TEST_c_c (ccosh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ccosh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ccosh, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L); @@ -2362,7 +3011,7 @@ ceil_test (void) TEST_f_f (ceil, minus_zero, minus_zero); TEST_f_f (ceil, plus_infty, plus_infty); TEST_f_f (ceil, minus_infty, minus_infty); - TEST_f_f (ceil, nan_value, nan_value); + TEST_f_f (ceil, qnan_value, qnan_value); TEST_f_f (ceil, M_PIl, 4.0); TEST_f_f (ceil, -M_PIl, -3.0); @@ -2469,40 +3118,40 @@ cexp_test (void) TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0); TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero); - TEST_c_c (cexp, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, 100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, -100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, 100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (cexp, -100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0); TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero); TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty); TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty); - TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN); TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN); - TEST_c_c (cexp, minus_infty, nan_value, 0, 0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (cexp, plus_infty, nan_value, plus_infty, nan_value); + TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value); - TEST_c_c (cexp, nan_value, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, nan_value, 1.0, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (cexp, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L); TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L); @@ -2561,8 +3210,8 @@ cimag_test (void) START (cimag); TEST_c_f (cimag, 1.0, 0.0, 0.0); TEST_c_f (cimag, 1.0, minus_zero, minus_zero); - TEST_c_f (cimag, 1.0, nan_value, nan_value); - TEST_c_f (cimag, nan_value, nan_value, nan_value); + TEST_c_f (cimag, 1.0, qnan_value, qnan_value); + TEST_c_f (cimag, qnan_value, qnan_value, qnan_value); TEST_c_f (cimag, 1.0, plus_infty, plus_infty); TEST_c_f (cimag, 1.0, minus_infty, minus_infty); TEST_c_f (cimag, 2.0, 3.0, 3.0); @@ -2612,23 +3261,23 @@ clog_test (void) TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero); TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero); - TEST_c_c (clog, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (clog, minus_infty, nan_value, plus_infty, nan_value); + TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value); + TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value); - TEST_c_c (clog, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (clog, nan_value, minus_infty, plus_infty, nan_value); + TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value); + TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value); - TEST_c_c (clog, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L); TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L); @@ -2832,23 +3481,23 @@ clog10_test (void) TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero); TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero); - TEST_c_c (clog10, plus_infty, nan_value, plus_infty, nan_value); - TEST_c_c (clog10, minus_infty, nan_value, plus_infty, nan_value); + TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value); + TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value); - TEST_c_c (clog10, nan_value, plus_infty, plus_infty, nan_value); - TEST_c_c (clog10, nan_value, minus_infty, plus_infty, nan_value); + TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value); + TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value); - TEST_c_c (clog10, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L); TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L); @@ -3017,7 +3666,7 @@ conj_test (void) START (conj); TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero); TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0); - TEST_c_c (conj, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty); TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty); TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0); @@ -3048,10 +3697,10 @@ copysign_test (void) TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero); /* XXX More correctly we would have to check the sign of the NaN. */ - TEST_ff_f (copysign, nan_value, 0, nan_value); - TEST_ff_f (copysign, nan_value, minus_zero, nan_value); - TEST_ff_f (copysign, -nan_value, 0, nan_value); - TEST_ff_f (copysign, -nan_value, minus_zero, nan_value); + TEST_ff_f (copysign, qnan_value, 0, qnan_value); + TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value); + TEST_ff_f (copysign, -qnan_value, 0, qnan_value); + TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value); END (copysign); } @@ -3071,14 +3720,14 @@ cos_test (void) TEST_f_f (cos, 0, 1); TEST_f_f (cos, minus_zero, 1); errno = 0; - TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION); check_int ("errno for cos(+inf) == EDOM", errno, EDOM, 0, 0, 0); errno = 0; - TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION); check_int ("errno for cos(-inf) == EDOM", errno, EDOM, 0, 0, 0); errno = 0; - TEST_f_f (cos, nan_value, nan_value); - check_int ("errno for cos(NaN) unchanged", errno, 0, 0, 0, 0); + TEST_f_f (cos, qnan_value, qnan_value); + check_int ("errno for cos(qNaN) unchanged", errno, 0, 0, 0, 0); TEST_f_f (cos, M_PI_6l * 2.0, 0.5); TEST_f_f (cos, M_PI_6l * 4.0, -0.5); @@ -3268,7 +3917,7 @@ cosh_test (void) TEST_f_f (cosh, plus_infty, plus_infty); TEST_f_f (cosh, minus_infty, plus_infty); #endif - TEST_f_f (cosh, nan_value, nan_value); + TEST_f_f (cosh, qnan_value, qnan_value); TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L); @@ -3406,7 +4055,7 @@ cpow_test (void) TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0); TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0); - TEST_cc_c (cpow, nan_value, nan_value, nan_value, nan_value, nan_value, nan_value); + TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value); TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L); TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L); @@ -3426,7 +4075,7 @@ cproj_test (void) TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero); TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0); - TEST_c_c (cproj, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0); TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero); @@ -3446,8 +4095,8 @@ creal_test (void) START (creal); TEST_c_f (creal, 0.0, 1.0, 0.0); TEST_c_f (creal, minus_zero, 1.0, minus_zero); - TEST_c_f (creal, nan_value, 1.0, nan_value); - TEST_c_f (creal, nan_value, nan_value, nan_value); + TEST_c_f (creal, qnan_value, 1.0, qnan_value); + TEST_c_f (creal, qnan_value, qnan_value, qnan_value); TEST_c_f (creal, plus_infty, 1.0, plus_infty); TEST_c_f (creal, minus_infty, 1.0, minus_infty); TEST_c_f (creal, 2.0, 3.0, 2.0); @@ -3476,45 +4125,45 @@ csin_test (void) TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty); TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty); - TEST_c_c (csin, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, plus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, plus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, minus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csin, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csin, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csin, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (csin, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION); TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty); TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty); TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty); TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty); - TEST_c_c (csin, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, nan_value, plus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, nan_value, minus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csin, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, 0.0, nan_value, 0.0, nan_value); - TEST_c_c (csin, minus_zero, nan_value, minus_zero, nan_value); + TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value); + TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value); - TEST_c_c (csin, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L); TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L); @@ -3570,50 +4219,50 @@ csinh_test (void) TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero); TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero); - TEST_c_c (csinh, 0.0, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_zero, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, 0.0, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_zero, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0); TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0); TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero); TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero); - TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN); TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty); TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty); TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty); TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty); - TEST_c_c (csinh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (csinh, 0.0, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_zero, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, plus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, minus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csinh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, 0.0, nan_value, 0.0); - TEST_c_c (csinh, nan_value, minus_zero, nan_value, minus_zero); + TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0); + TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero); - TEST_c_c (csinh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L); TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L); @@ -3692,21 +4341,21 @@ csqrt_test (void) TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty); TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty); - TEST_c_c (csqrt, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN); + TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN); - TEST_c_c (csqrt, plus_infty, nan_value, plus_infty, nan_value); + TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value); - TEST_c_c (csqrt, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, -1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, 8, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, -8, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (csqrt, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0); TEST_c_c (csqrt, -1, 0, 0.0, 1.0); @@ -3800,30 +4449,30 @@ ctan_test (void) TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0); TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0); - TEST_c_c (ctan, plus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, plus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, plus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, plus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, minus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (ctan, nan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ctan, nan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ctan, 0, nan_value, 0.0, nan_value); - TEST_c_c (ctan, minus_zero, nan_value, minus_zero, nan_value); + TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value); + TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value); - TEST_c_c (ctan, 0.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, -4.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, -0.25, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L); TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L); @@ -4019,30 +4668,30 @@ ctanh_test (void) TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero); TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero); - TEST_c_c (ctanh, 0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, 2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, 0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, 2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, -2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, -2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); - TEST_c_c (ctanh, plus_infty, nan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ctanh, minus_infty, nan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN); + TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN); - TEST_c_c (ctanh, nan_value, 0, nan_value, 0.0); - TEST_c_c (ctanh, nan_value, minus_zero, nan_value, minus_zero); + TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0); + TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero); - TEST_c_c (ctanh, nan_value, 0.5, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, nan_value, -4.5, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, 5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, -0.25, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK); - TEST_c_c (ctanh, nan_value, nan_value, nan_value, nan_value); + TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value); TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0); @@ -4230,7 +4879,7 @@ erf_test (void) TEST_f_f (erf, minus_zero, minus_zero); TEST_f_f (erf, plus_infty, 1); TEST_f_f (erf, minus_infty, -1); - TEST_f_f (erf, nan_value, nan_value); + TEST_f_f (erf, qnan_value, qnan_value); TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L); TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L); @@ -4258,7 +4907,7 @@ erfc_test (void) TEST_f_f (erfc, minus_infty, 2.0); TEST_f_f (erfc, 0.0, 1.0); TEST_f_f (erfc, minus_zero, 1.0); - TEST_f_f (erfc, nan_value, nan_value); + TEST_f_f (erfc, qnan_value, qnan_value); TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L); TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L); @@ -4300,7 +4949,7 @@ exp_test (void) TEST_f_f (exp, plus_infty, plus_infty); TEST_f_f (exp, minus_infty, 0); #endif - TEST_f_f (exp, nan_value, nan_value); + TEST_f_f (exp, qnan_value, qnan_value); TEST_f_f (exp, 1, M_El); TEST_f_f (exp, 2, M_E2l); @@ -4308,6 +4957,9 @@ exp_test (void) TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L); TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L); TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L); +#ifndef TEST_FLOAT + TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L); +#endif #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024 /* The result can only be represented in sane long double. */ TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L); @@ -4449,7 +5101,7 @@ exp10_test (void) TEST_f_f (exp10, plus_infty, plus_infty); TEST_f_f (exp10, minus_infty, 0); - TEST_f_f (exp10, nan_value, nan_value); + TEST_f_f (exp10, qnan_value, qnan_value); TEST_f_f (exp10, 3, 1000); TEST_f_f (exp10, -1, 0.1L); TEST_f_f (exp10, 36, 1.0e36L); @@ -4487,7 +5139,7 @@ exp2_test (void) TEST_f_f (exp2, minus_zero, 1); TEST_f_f (exp2, plus_infty, plus_infty); TEST_f_f (exp2, minus_infty, 0); - TEST_f_f (exp2, nan_value, nan_value); + TEST_f_f (exp2, qnan_value, qnan_value); TEST_f_f (exp2, 10, 1024); TEST_f_f (exp2, -1, 0.5); @@ -4534,7 +5186,7 @@ expm1_test (void) TEST_f_f (expm1, plus_infty, plus_infty); TEST_f_f (expm1, minus_infty, -1); #endif - TEST_f_f (expm1, nan_value, nan_value); + TEST_f_f (expm1, qnan_value, qnan_value); TEST_f_f (expm1, 1, M_El - 1.0); TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L); @@ -4591,7 +5243,7 @@ fabs_test (void) TEST_f_f (fabs, plus_infty, plus_infty); TEST_f_f (fabs, minus_infty, plus_infty); - TEST_f_f (fabs, nan_value, nan_value); + TEST_f_f (fabs, qnan_value, qnan_value); TEST_f_f (fabs, 38.0, 38.0); TEST_f_f (fabs, -M_El, M_El); @@ -4620,16 +5272,16 @@ fdim_test (void) TEST_ff_f (fdim, 9, plus_infty, 0); TEST_ff_f (fdim, -9, plus_infty, 0); - TEST_ff_f (fdim, 0, nan_value, nan_value); - TEST_ff_f (fdim, 9, nan_value, nan_value); - TEST_ff_f (fdim, -9, nan_value, nan_value); - TEST_ff_f (fdim, nan_value, 9, nan_value); - TEST_ff_f (fdim, nan_value, -9, nan_value); - TEST_ff_f (fdim, plus_infty, nan_value, nan_value); - TEST_ff_f (fdim, minus_infty, nan_value, nan_value); - TEST_ff_f (fdim, nan_value, plus_infty, nan_value); - TEST_ff_f (fdim, nan_value, minus_infty, nan_value); - TEST_ff_f (fdim, nan_value, nan_value, nan_value); + TEST_ff_f (fdim, 0, qnan_value, qnan_value); + TEST_ff_f (fdim, 9, qnan_value, qnan_value); + TEST_ff_f (fdim, -9, qnan_value, qnan_value); + TEST_ff_f (fdim, qnan_value, 9, qnan_value); + TEST_ff_f (fdim, qnan_value, -9, qnan_value); + TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value); + TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value); + TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value); + TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value); + TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value); TEST_ff_f (fdim, plus_infty, plus_infty, 0); @@ -4648,7 +5300,7 @@ finite_test (void) TEST_f_b (finite, min_subnorm_value, 1); TEST_f_b (finite, plus_infty, 0); TEST_f_b (finite, minus_infty, 0); - TEST_f_b (finite, nan_value, 0); + TEST_f_b (finite, qnan_value, 0); END (finite); } @@ -4663,7 +5315,7 @@ floor_test (void) TEST_f_f (floor, minus_zero, minus_zero); TEST_f_f (floor, plus_infty, plus_infty); TEST_f_f (floor, minus_infty, minus_infty); - TEST_f_f (floor, nan_value, nan_value); + TEST_f_f (floor, qnan_value, qnan_value); TEST_f_f (floor, M_PIl, 3.0); TEST_f_f (floor, -M_PIl, -4.0); @@ -4761,26 +5413,26 @@ fma_test (void) START (fma); TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0); - TEST_fff_f (fma, nan_value, 2.0, 3.0, nan_value); - TEST_fff_f (fma, 1.0, nan_value, 3.0, nan_value); - TEST_fff_f (fma, 1.0, 2.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, plus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, minus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK); - TEST_fff_f (fma, plus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, 0.0, plus_infty, 1.0, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, 0.0, minus_infty, 1.0, nan_value, INVALID_EXCEPTION); - - TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value); + TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value); + TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK); + TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION); + + TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION); TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L); @@ -5728,17 +6380,17 @@ fmax_test (void) TEST_ff_f (fmax, 9, minus_infty, 9); TEST_ff_f (fmax, -9, minus_infty, -9); - TEST_ff_f (fmax, 0, nan_value, 0); - TEST_ff_f (fmax, 9, nan_value, 9); - TEST_ff_f (fmax, -9, nan_value, -9); - TEST_ff_f (fmax, nan_value, 0, 0); - TEST_ff_f (fmax, nan_value, 9, 9); - TEST_ff_f (fmax, nan_value, -9, -9); - TEST_ff_f (fmax, plus_infty, nan_value, plus_infty); - TEST_ff_f (fmax, minus_infty, nan_value, minus_infty); - TEST_ff_f (fmax, nan_value, plus_infty, plus_infty); - TEST_ff_f (fmax, nan_value, minus_infty, minus_infty); - TEST_ff_f (fmax, nan_value, nan_value, nan_value); + TEST_ff_f (fmax, 0, qnan_value, 0); + TEST_ff_f (fmax, 9, qnan_value, 9); + TEST_ff_f (fmax, -9, qnan_value, -9); + TEST_ff_f (fmax, qnan_value, 0, 0); + TEST_ff_f (fmax, qnan_value, 9, 9); + TEST_ff_f (fmax, qnan_value, -9, -9); + TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty); + TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty); + TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty); + TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty); + TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value); END (fmax); } @@ -5765,17 +6417,17 @@ fmin_test (void) TEST_ff_f (fmin, 9, minus_infty, minus_infty); TEST_ff_f (fmin, -9, minus_infty, minus_infty); - TEST_ff_f (fmin, 0, nan_value, 0); - TEST_ff_f (fmin, 9, nan_value, 9); - TEST_ff_f (fmin, -9, nan_value, -9); - TEST_ff_f (fmin, nan_value, 0, 0); - TEST_ff_f (fmin, nan_value, 9, 9); - TEST_ff_f (fmin, nan_value, -9, -9); - TEST_ff_f (fmin, plus_infty, nan_value, plus_infty); - TEST_ff_f (fmin, minus_infty, nan_value, minus_infty); - TEST_ff_f (fmin, nan_value, plus_infty, plus_infty); - TEST_ff_f (fmin, nan_value, minus_infty, minus_infty); - TEST_ff_f (fmin, nan_value, nan_value, nan_value); + TEST_ff_f (fmin, 0, qnan_value, 0); + TEST_ff_f (fmin, 9, qnan_value, 9); + TEST_ff_f (fmin, -9, qnan_value, -9); + TEST_ff_f (fmin, qnan_value, 0, 0); + TEST_ff_f (fmin, qnan_value, 9, 9); + TEST_ff_f (fmin, qnan_value, -9, -9); + TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty); + TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty); + TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty); + TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty); + TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value); END (fmin); } @@ -5798,27 +6450,27 @@ fmod_test (void) /* fmod (-0, y) == -0 for y != 0. */ TEST_ff_f (fmod, minus_zero, 3, minus_zero); - /* fmod (+inf, y) == NaN plus invalid exception. */ + /* fmod (+inf, y) == qNaN plus invalid exception. */ errno = 0; - TEST_ff_f (fmod, plus_infty, 3, nan_value, INVALID_EXCEPTION); + TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION); check_int ("errno for fmod(Inf,3) unchanged", errno, EDOM, 0, 0, 0); - /* fmod (-inf, y) == NaN plus invalid exception. */ + /* fmod (-inf, y) == qNaN plus invalid exception. */ errno = 0; - TEST_ff_f (fmod, minus_infty, 3, nan_value, INVALID_EXCEPTION); + TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION); check_int ("errno for fmod(-Inf,3) unchanged", errno, EDOM, 0, 0, 0); - /* fmod (x, +0) == NaN plus invalid exception. */ + /* fmod (x, +0) == qNaN plus invalid exception. */ errno = 0; - TEST_ff_f (fmod, 3, 0, nan_value, INVALID_EXCEPTION); + TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION); check_int ("errno for fmod(3,0) unchanged", errno, EDOM, 0, 0, 0); - /* fmod (x, -0) == NaN plus invalid exception. */ - TEST_ff_f (fmod, 3, minus_zero, nan_value, INVALID_EXCEPTION); + /* fmod (x, -0) == qNaN plus invalid exception. */ + TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION); /* fmod (x, +inf) == x for x not infinite. */ TEST_ff_f (fmod, 3.0, plus_infty, 3.0); /* fmod (x, -inf) == x for x not infinite. */ TEST_ff_f (fmod, 3.0, minus_infty, 3.0); - TEST_ff_f (fmod, nan_value, nan_value, nan_value); + TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value); TEST_ff_f (fmod, 6.5, 2.25L, 2.0L); TEST_ff_f (fmod, -6.5, 2.25L, -2.0L); @@ -5842,7 +6494,7 @@ fpclassify_test (void) { START (fpclassify); - TEST_f_i (fpclassify, nan_value, FP_NAN); + TEST_f_i (fpclassify, qnan_value, FP_NAN); TEST_f_i (fpclassify, plus_infty, FP_INFINITE); TEST_f_i (fpclassify, minus_infty, FP_INFINITE); TEST_f_i (fpclassify, plus_zero, FP_ZERO); @@ -5863,7 +6515,7 @@ frexp_test (void) TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE); TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE); - TEST_fI_f1 (frexp, nan_value, nan_value, IGNORE); + TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE); TEST_fI_f1 (frexp, 0.0, 0.0, 0.0); TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0); @@ -5891,7 +6543,7 @@ gamma_test (void) TEST_f_f (gamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); TEST_f_f (gamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); TEST_f_f (gamma, minus_infty, plus_infty); - TEST_f_f (gamma, nan_value, nan_value); + TEST_f_f (gamma, qnan_value, qnan_value); TEST_f_f1 (gamma, 1, 0, 1); TEST_f_f1 (gamma, 3, M_LN2l, 1); @@ -5917,13 +6569,13 @@ hypot_test (void) TEST_ff_f (hypot, minus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN); #ifndef TEST_INLINE - TEST_ff_f (hypot, plus_infty, nan_value, plus_infty); - TEST_ff_f (hypot, minus_infty, nan_value, plus_infty); - TEST_ff_f (hypot, nan_value, plus_infty, plus_infty); - TEST_ff_f (hypot, nan_value, minus_infty, plus_infty); + TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty); + TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty); + TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty); + TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty); #endif - TEST_ff_f (hypot, nan_value, nan_value, nan_value); + TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value); /* hypot (x,y) == hypot (+-x, +-y) */ TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L); @@ -5978,10 +6630,10 @@ ilogb_test (void) errno = 0; TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION); check_int ("errno for ilogb(0.0) unchanged", errno, EDOM, 0, 0, 0); - /* ilogb (NaN) == FP_ILOGBNAN plus invalid exception */ + /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception */ errno = 0; - TEST_f_i (ilogb, nan_value, FP_ILOGBNAN, INVALID_EXCEPTION); - check_int ("errno for ilogb(NaN) unchanged", errno, EDOM, 0, 0, 0); + TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION); + check_int ("errno for ilogb(qNaN) unchanged", errno, EDOM, 0, 0, 0); /* ilogb (inf) == INT_MAX plus invalid exception */ errno = 0; TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION); @@ -6005,7 +6657,7 @@ isfinite_test (void) TEST_f_b (isfinite, min_subnorm_value, 1); TEST_f_b (isfinite, plus_infty, 0); TEST_f_b (isfinite, minus_infty, 0); - TEST_f_b (isfinite, nan_value, 0); + TEST_f_b (isfinite, qnan_value, 0); END (isfinite); } @@ -6018,19 +6670,19 @@ isgreater_test (void) TEST_ff_i (isgreater, minus_zero, minus_zero, 0); TEST_ff_i (isgreater, minus_zero, plus_zero, 0); TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0); - TEST_ff_i (isgreater, minus_zero, nan_value, 0); + TEST_ff_i (isgreater, minus_zero, qnan_value, 0); TEST_ff_i (isgreater, plus_zero, minus_zero, 0); TEST_ff_i (isgreater, plus_zero, plus_zero, 0); TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0); - TEST_ff_i (isgreater, plus_zero, nan_value, 0); + TEST_ff_i (isgreater, plus_zero, qnan_value, 0); TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1); TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1); TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0); - TEST_ff_i (isgreater, (FLOAT) 1, nan_value, 0); - TEST_ff_i (isgreater, nan_value, minus_zero, 0); - TEST_ff_i (isgreater, nan_value, plus_zero, 0); - TEST_ff_i (isgreater, nan_value, (FLOAT) 1, 0); - TEST_ff_i (isgreater, nan_value, nan_value, 0); + TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0); + TEST_ff_i (isgreater, qnan_value, minus_zero, 0); + TEST_ff_i (isgreater, qnan_value, plus_zero, 0); + TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0); + TEST_ff_i (isgreater, qnan_value, qnan_value, 0); END (isgreater); } @@ -6043,19 +6695,19 @@ isgreaterequal_test (void) TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1); TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1); TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0); - TEST_ff_i (isgreaterequal, minus_zero, nan_value, 0); + TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0); TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1); TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1); TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0); - TEST_ff_i (isgreaterequal, plus_zero, nan_value, 0); + TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0); TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1); TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1); TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1); - TEST_ff_i (isgreaterequal, (FLOAT) 1, nan_value, 0); - TEST_ff_i (isgreaterequal, nan_value, minus_zero, 0); - TEST_ff_i (isgreaterequal, nan_value, plus_zero, 0); - TEST_ff_i (isgreaterequal, nan_value, (FLOAT) 1, 0); - TEST_ff_i (isgreaterequal, nan_value, nan_value, 0); + TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0); + TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0); + TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0); + TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0); + TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0); END (isgreaterequal); } @@ -6071,7 +6723,7 @@ isinf_test (void) TEST_f_b (isinf, min_subnorm_value, 0); TEST_f_b (isinf, plus_infty, 1); TEST_f_b (isinf, minus_infty, 1); - TEST_f_b (isinf, nan_value, 0); + TEST_f_b (isinf, qnan_value, 0); END (isinf); } @@ -6084,19 +6736,19 @@ isless_test (void) TEST_ff_i (isless, minus_zero, minus_zero, 0); TEST_ff_i (isless, minus_zero, plus_zero, 0); TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1); - TEST_ff_i (isless, minus_zero, nan_value, 0); + TEST_ff_i (isless, minus_zero, qnan_value, 0); TEST_ff_i (isless, plus_zero, minus_zero, 0); TEST_ff_i (isless, plus_zero, plus_zero, 0); TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1); - TEST_ff_i (isless, plus_zero, nan_value, 0); + TEST_ff_i (isless, plus_zero, qnan_value, 0); TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0); TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0); TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0); - TEST_ff_i (isless, (FLOAT) 1, nan_value, 0); - TEST_ff_i (isless, nan_value, minus_zero, 0); - TEST_ff_i (isless, nan_value, plus_zero, 0); - TEST_ff_i (isless, nan_value, (FLOAT) 1, 0); - TEST_ff_i (isless, nan_value, nan_value, 0); + TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0); + TEST_ff_i (isless, qnan_value, minus_zero, 0); + TEST_ff_i (isless, qnan_value, plus_zero, 0); + TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0); + TEST_ff_i (isless, qnan_value, qnan_value, 0); END (isless); } @@ -6109,19 +6761,19 @@ islessequal_test (void) TEST_ff_i (islessequal, minus_zero, minus_zero, 1); TEST_ff_i (islessequal, minus_zero, plus_zero, 1); TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1); - TEST_ff_i (islessequal, minus_zero, nan_value, 0); + TEST_ff_i (islessequal, minus_zero, qnan_value, 0); TEST_ff_i (islessequal, plus_zero, minus_zero, 1); TEST_ff_i (islessequal, plus_zero, plus_zero, 1); TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1); - TEST_ff_i (islessequal, plus_zero, nan_value, 0); + TEST_ff_i (islessequal, plus_zero, qnan_value, 0); TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0); TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0); TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1); - TEST_ff_i (islessequal, (FLOAT) 1, nan_value, 0); - TEST_ff_i (islessequal, nan_value, minus_zero, 0); - TEST_ff_i (islessequal, nan_value, plus_zero, 0); - TEST_ff_i (islessequal, nan_value, (FLOAT) 1, 0); - TEST_ff_i (islessequal, nan_value, nan_value, 0); + TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0); + TEST_ff_i (islessequal, qnan_value, minus_zero, 0); + TEST_ff_i (islessequal, qnan_value, plus_zero, 0); + TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0); + TEST_ff_i (islessequal, qnan_value, qnan_value, 0); END (islessequal); } @@ -6134,19 +6786,19 @@ islessgreater_test (void) TEST_ff_i (islessgreater, minus_zero, minus_zero, 0); TEST_ff_i (islessgreater, minus_zero, plus_zero, 0); TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1); - TEST_ff_i (islessgreater, minus_zero, nan_value, 0); + TEST_ff_i (islessgreater, minus_zero, qnan_value, 0); TEST_ff_i (islessgreater, plus_zero, minus_zero, 0); TEST_ff_i (islessgreater, plus_zero, plus_zero, 0); TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1); - TEST_ff_i (islessgreater, plus_zero, nan_value, 0); + TEST_ff_i (islessgreater, plus_zero, qnan_value, 0); TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1); TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1); TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0); - TEST_ff_i (islessgreater, (FLOAT) 1, nan_value, 0); - TEST_ff_i (islessgreater, nan_value, minus_zero, 0); - TEST_ff_i (islessgreater, nan_value, plus_zero, 0); - TEST_ff_i (islessgreater, nan_value, (FLOAT) 1, 0); - TEST_ff_i (islessgreater, nan_value, nan_value, 0); + TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0); + TEST_ff_i (islessgreater, qnan_value, minus_zero, 0); + TEST_ff_i (islessgreater, qnan_value, plus_zero, 0); + TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0); + TEST_ff_i (islessgreater, qnan_value, qnan_value, 0); END (islessgreater); } @@ -6162,7 +6814,7 @@ isnan_test (void) TEST_f_b (isnan, min_subnorm_value, 0); TEST_f_b (isnan, plus_infty, 0); TEST_f_b (isnan, minus_infty, 0); - TEST_f_b (isnan, nan_value, 1); + TEST_f_b (isnan, qnan_value, 1); END (isnan); } @@ -6178,7 +6830,7 @@ isnormal_test (void) TEST_f_b (isnormal, min_subnorm_value, 0); TEST_f_b (isnormal, plus_infty, 0); TEST_f_b (isnormal, minus_infty, 0); - TEST_f_b (isnormal, nan_value, 0); + TEST_f_b (isnormal, qnan_value, 0); END (isnormal); } @@ -6191,19 +6843,19 @@ isunordered_test (void) TEST_ff_i (isunordered, minus_zero, minus_zero, 0); TEST_ff_i (isunordered, minus_zero, plus_zero, 0); TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0); - TEST_ff_i (isunordered, minus_zero, nan_value, 1); + TEST_ff_i (isunordered, minus_zero, qnan_value, 1); TEST_ff_i (isunordered, plus_zero, minus_zero, 0); TEST_ff_i (isunordered, plus_zero, plus_zero, 0); TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0); - TEST_ff_i (isunordered, plus_zero, nan_value, 1); + TEST_ff_i (isunordered, plus_zero, qnan_value, 1); TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0); TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0); TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0); - TEST_ff_i (isunordered, (FLOAT) 1, nan_value, 1); - TEST_ff_i (isunordered, nan_value, minus_zero, 1); - TEST_ff_i (isunordered, nan_value, plus_zero, 1); - TEST_ff_i (isunordered, nan_value, (FLOAT) 1, 1); - TEST_ff_i (isunordered, nan_value, nan_value, 1); + TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1); + TEST_ff_i (isunordered, qnan_value, minus_zero, 1); + TEST_ff_i (isunordered, qnan_value, plus_zero, 1); + TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1); + TEST_ff_i (isunordered, qnan_value, qnan_value, 1); END (isunordered); } @@ -6225,7 +6877,7 @@ j0_test (void) START (j0); /* j0 is the Bessel function of the first kind of order 0 */ - TEST_f_f (j0, nan_value, nan_value); + TEST_f_f (j0, qnan_value, qnan_value); TEST_f_f (j0, plus_infty, 0); TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L); TEST_f_f (j0, 0.0, 1.0); @@ -6239,12 +6891,16 @@ j0_test (void) TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L); TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L); - /* Bug 14155: spurious exception may occur. */ - TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L, UNDERFLOW_EXCEPTION_OK); + TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L); #ifndef TEST_FLOAT - /* Bug 14155: spurious exception may occur. */ - TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L, UNDERFLOW_EXCEPTION_OK); + TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L); + TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L); + TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L); #endif END (j0); @@ -6269,7 +6925,7 @@ j1_test (void) START (j1); - TEST_f_f (j1, nan_value, nan_value); + TEST_f_f (j1, qnan_value, qnan_value); TEST_f_f (j1, plus_infty, 0); TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L); @@ -6285,8 +6941,13 @@ j1_test (void) TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L); #ifndef TEST_FLOAT - /* Bug 14155: spurious exception may occur. */ - TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L, UNDERFLOW_EXCEPTION_OK); + TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L); + TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L); + TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L); #endif END (j1); @@ -6310,7 +6971,7 @@ jn_test (void) START (jn); /* jn (0, x) == j0 (x) */ - TEST_ff_f (jn, 0, nan_value, nan_value); + TEST_ff_f (jn, 0, qnan_value, qnan_value); TEST_ff_f (jn, 0, plus_infty, 0); TEST_ff_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L); TEST_ff_f (jn, 0, 0.0, 1.0); @@ -6325,7 +6986,7 @@ jn_test (void) TEST_ff_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L); /* jn (1, x) == j1 (x) */ - TEST_ff_f (jn, 1, nan_value, nan_value); + TEST_ff_f (jn, 1, qnan_value, qnan_value); TEST_ff_f (jn, 1, plus_infty, 0); TEST_ff_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L); TEST_ff_f (jn, 1, 0.0, 0.0); @@ -6338,7 +6999,7 @@ jn_test (void) TEST_ff_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L); /* jn (3, x) */ - TEST_ff_f (jn, 3, nan_value, nan_value); + TEST_ff_f (jn, 3, qnan_value, qnan_value); TEST_ff_f (jn, 3, plus_infty, 0); TEST_ff_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L); @@ -6350,7 +7011,7 @@ jn_test (void) TEST_ff_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L); /* jn (10, x) */ - TEST_ff_f (jn, 10, nan_value, nan_value); + TEST_ff_f (jn, 10, qnan_value, qnan_value); TEST_ff_f (jn, 10, plus_infty, 0); TEST_ff_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L); @@ -6381,18 +7042,22 @@ jn_test (void) static void ldexp_test (void) { + START (ldexp); + TEST_ff_f (ldexp, 0, 0, 0); TEST_ff_f (ldexp, minus_zero, 0, minus_zero); TEST_ff_f (ldexp, plus_infty, 1, plus_infty); TEST_ff_f (ldexp, minus_infty, 1, minus_infty); - TEST_ff_f (ldexp, nan_value, 1, nan_value); + TEST_ff_f (ldexp, qnan_value, 1, qnan_value); TEST_ff_f (ldexp, 0.8L, 4, 12.8L); TEST_ff_f (ldexp, -0.854375L, 5, -27.34L); /* ldexp (x, 0) == x. */ TEST_ff_f (ldexp, 1.0L, 0L, 1.0L); + + END (ldexp); } @@ -6412,7 +7077,7 @@ lgamma_test (void) check_int ("signgam for lgamma(0) == 1", signgam, 1, 0, 0, 0); TEST_f_f (lgamma, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); check_int ("signgam for lgamma(-0) == -1", signgam, -1, 0, 0, 0); - TEST_f_f (lgamma, nan_value, nan_value); + TEST_f_f (lgamma, qnan_value, qnan_value); /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */ errno = 0; @@ -6441,6 +7106,7 @@ lrint_test (void) /* XXX this test is incomplete. We need to have a way to specifiy the rounding method and test the critical cases. So far, only unproblematic numbers are tested. */ + /* TODO: missing +/-Inf as well as qNaN tests. */ START (lrint); @@ -6633,6 +7299,7 @@ llrint_test (void) /* XXX this test is incomplete. We need to have a way to specifiy the rounding method and test the critical cases. So far, only unproblematic numbers are tested. */ + /* TODO: missing +/-Inf as well as qNaN tests. */ START (llrint); @@ -7321,11 +7988,11 @@ log_test (void) TEST_f_f (log, 1, 0); - TEST_f_f (log, -1, nan_value, INVALID_EXCEPTION); - TEST_f_f (log, -max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (log, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION); TEST_f_f (log, plus_infty, plus_infty); - TEST_f_f (log, nan_value, nan_value); + TEST_f_f (log, qnan_value, qnan_value); TEST_f_f (log, M_El, 1); TEST_f_f (log, 1.0 / M_El, -1); @@ -7353,13 +8020,13 @@ log10_test (void) TEST_f_f (log10, 1, 0); - /* log10 (x) == NaN plus invalid exception if x < 0. */ - TEST_f_f (log10, -1, nan_value, INVALID_EXCEPTION); - TEST_f_f (log10, -max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (log10, minus_infty, nan_value, INVALID_EXCEPTION); + /* log10 (x) == qNaN plus invalid exception if x < 0. */ + TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION); TEST_f_f (log10, plus_infty, plus_infty); - TEST_f_f (log10, nan_value, nan_value); + TEST_f_f (log10, qnan_value, qnan_value); TEST_f_f (log10, 0.1L, -1); TEST_f_f (log10, 10.0, 1); @@ -7387,12 +8054,12 @@ log1p_test (void) TEST_f_f (log1p, minus_zero, minus_zero); TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (log1p, -2, nan_value, INVALID_EXCEPTION); - TEST_f_f (log1p, -max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (log1p, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION); TEST_f_f (log1p, plus_infty, plus_infty); - TEST_f_f (log1p, nan_value, nan_value); + TEST_f_f (log1p, qnan_value, qnan_value); TEST_f_f (log1p, M_El - 1.0, 1); @@ -7419,12 +8086,12 @@ log2_test (void) TEST_f_f (log2, 1, 0); - TEST_f_f (log2, -1, nan_value, INVALID_EXCEPTION); - TEST_f_f (log2, -max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (log2, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION); TEST_f_f (log2, plus_infty, plus_infty); - TEST_f_f (log2, nan_value, nan_value); + TEST_f_f (log2, qnan_value, qnan_value); TEST_f_f (log2, M_El, M_LOG2El); TEST_f_f (log2, 2.0, 1); @@ -7447,7 +8114,7 @@ logb_test (void) TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - TEST_f_f (logb, nan_value, nan_value); + TEST_f_f (logb, qnan_value, qnan_value); TEST_f_f (logb, 1, 0); TEST_f_f (logb, M_El, 1); @@ -7511,6 +8178,8 @@ logb_test_downward (void) static void lround_test (void) { + /* TODO: missing +/-Inf as well as qNaN tests. */ + START (lround); TEST_f_l (lround, 0, 0); @@ -7553,6 +8222,8 @@ lround_test (void) static void llround_test (void) { + /* TODO: missing +/-Inf as well as qNaN tests. */ + START (llround); TEST_f_L (llround, 0, 0); @@ -7729,7 +8400,7 @@ modf_test (void) TEST_fF_f1 (modf, plus_infty, 0, plus_infty); TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty); - TEST_fF_f1 (modf, nan_value, nan_value, nan_value); + TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value); TEST_fF_f1 (modf, 0, 0, 0); TEST_fF_f1 (modf, 1.5, 0.5, 1); TEST_fF_f1 (modf, 2.5, 0.5, 2); @@ -7751,7 +8422,7 @@ nearbyint_test (void) TEST_f_f (nearbyint, minus_zero, minus_zero); TEST_f_f (nearbyint, plus_infty, plus_infty); TEST_f_f (nearbyint, minus_infty, minus_infty); - TEST_f_f (nearbyint, nan_value, nan_value); + TEST_f_f (nearbyint, qnan_value, qnan_value); /* Subnormal values */ TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307); @@ -7810,9 +8481,9 @@ nextafter_test (void) TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty); TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty); - TEST_ff_f (nextafter, nan_value, 1.1L, nan_value); - TEST_ff_f (nextafter, 1.1L, nan_value, nan_value); - TEST_ff_f (nextafter, nan_value, nan_value, nan_value); + TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value); + TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value); + TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value); FLOAT fltmax = CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX, LDBL_MAX, DBL_MAX, FLT_MAX); @@ -7845,9 +8516,9 @@ nexttoward_test (void) TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty); TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty); - TEST_ff_f (nexttoward, nan_value, 1.1L, nan_value); - TEST_ff_f (nexttoward, 1.1L, nan_value, nan_value); - TEST_ff_f (nexttoward, nan_value, nan_value, nan_value); + TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value); + TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value); + TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value); #ifdef TEST_FLOAT TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0); @@ -7943,8 +8614,8 @@ pow_test (void) TEST_ff_f (pow, -10, 0, 1); TEST_ff_f (pow, -10, minus_zero, 1); - TEST_ff_f (pow, nan_value, 0, 1); - TEST_ff_f (pow, nan_value, minus_zero, 1); + TEST_ff_f (pow, qnan_value, 0, 1); + TEST_ff_f (pow, qnan_value, minus_zero, 1); #ifndef TEST_INLINE @@ -8005,28 +8676,28 @@ pow_test (void) TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0); #endif - TEST_ff_f (pow, nan_value, nan_value, nan_value); - TEST_ff_f (pow, 0, nan_value, nan_value); - TEST_ff_f (pow, 1, nan_value, 1); - TEST_ff_f (pow, -1, nan_value, nan_value); - TEST_ff_f (pow, nan_value, 1, nan_value); - TEST_ff_f (pow, nan_value, -1, nan_value); - - /* pow (x, NaN) == NaN. */ - TEST_ff_f (pow, 3.0, nan_value, nan_value); - TEST_ff_f (pow, minus_zero, nan_value, nan_value); - TEST_ff_f (pow, plus_infty, nan_value, nan_value); - TEST_ff_f (pow, -3.0, nan_value, nan_value); - TEST_ff_f (pow, minus_infty, nan_value, nan_value); - - TEST_ff_f (pow, nan_value, 3.0, nan_value); - TEST_ff_f (pow, nan_value, -3.0, nan_value); - TEST_ff_f (pow, nan_value, plus_infty, nan_value); - TEST_ff_f (pow, nan_value, minus_infty, nan_value); - TEST_ff_f (pow, nan_value, 2.5, nan_value); - TEST_ff_f (pow, nan_value, -2.5, nan_value); - TEST_ff_f (pow, nan_value, min_subnorm_value, nan_value); - TEST_ff_f (pow, nan_value, -min_subnorm_value, nan_value); + TEST_ff_f (pow, qnan_value, qnan_value, qnan_value); + TEST_ff_f (pow, 0, qnan_value, qnan_value); + TEST_ff_f (pow, 1, qnan_value, 1); + TEST_ff_f (pow, -1, qnan_value, qnan_value); + TEST_ff_f (pow, qnan_value, 1, qnan_value); + TEST_ff_f (pow, qnan_value, -1, qnan_value); + + /* pow (x, qNaN) == qNaN. */ + TEST_ff_f (pow, 3.0, qnan_value, qnan_value); + TEST_ff_f (pow, minus_zero, qnan_value, qnan_value); + TEST_ff_f (pow, plus_infty, qnan_value, qnan_value); + TEST_ff_f (pow, -3.0, qnan_value, qnan_value); + TEST_ff_f (pow, minus_infty, qnan_value, qnan_value); + + TEST_ff_f (pow, qnan_value, 3.0, qnan_value); + TEST_ff_f (pow, qnan_value, -3.0, qnan_value); + TEST_ff_f (pow, qnan_value, plus_infty, qnan_value); + TEST_ff_f (pow, qnan_value, minus_infty, qnan_value); + TEST_ff_f (pow, qnan_value, 2.5, qnan_value); + TEST_ff_f (pow, qnan_value, -2.5, qnan_value); + TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value); + TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value); TEST_ff_f (pow, 1, plus_infty, 1); TEST_ff_f (pow, -1, plus_infty, 1); @@ -8057,14 +8728,14 @@ pow_test (void) TEST_ff_f (pow, 0x1p-72L, 0, 1); TEST_ff_f (pow, 0x1p-72L, minus_zero, 1); - TEST_ff_f (pow, -0.1L, 1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -0.1L, -1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -10.1L, 1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -10.1L, -1.1L, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -1.01L, min_subnorm_value, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -1.01L, -min_subnorm_value, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -1.0L, min_subnorm_value, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -1.0L, -min_subnorm_value, nan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION); errno = 0; TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); @@ -8474,9 +9145,9 @@ pow_test (void) #endif TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION); - TEST_ff_f (pow, -max_value, 0.5, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -max_value, 1.5, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -max_value, 1000.5, nan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION); TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION); TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION); TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION); @@ -8575,9 +9246,9 @@ pow_test (void) #endif TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION); - TEST_ff_f (pow, -min_value, 0.5, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -min_value, 1.5, nan_value, INVALID_EXCEPTION); - TEST_ff_f (pow, -min_value, 1000.5, nan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION); TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION); TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION); /* Allow inexact results to be considered to underflow. */ @@ -8813,26 +9484,26 @@ remainder_test (void) START (remainder); errno = 0; - TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION); + TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION); check_int ("errno for remainder(1, 0) = EDOM ", errno, EDOM, 0, 0, 0); errno = 0; - TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION); + TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION); check_int ("errno for remainder(1, -0) = EDOM ", errno, EDOM, 0, 0, 0); errno = 0; - TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION); + TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION); check_int ("errno for remainder(INF, 1) = EDOM ", errno, EDOM, 0, 0, 0); errno = 0; - TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION); + TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION); check_int ("errno for remainder(-INF, 1) = EDOM ", errno, EDOM, 0, 0, 0); errno = 0; - TEST_ff_f (remainder, nan_value, nan_value, nan_value); - check_int ("errno for remainder(NAN, NAN) unchanged", errno, 0, 0, 0, 0); + TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value); + check_int ("errno for remainder(qNAN, qNAN) unchanged", errno, 0, 0, 0, 0); errno = 0; - TEST_ff_f (remainder, 0, nan_value, nan_value); - check_int ("errno for remainder(0, NAN) unchanged", errno, 0, 0, 0, 0); + TEST_ff_f (remainder, 0, qnan_value, qnan_value); + check_int ("errno for remainder(0, qNAN) unchanged", errno, 0, 0, 0, 0); errno = 0; - TEST_ff_f (remainder, nan_value, 0, nan_value); - check_int ("errno for remainder(NaN, 0) unchanged", errno, 0, 0, 0, 0); + TEST_ff_f (remainder, qnan_value, 0, qnan_value); + check_int ("errno for remainder(qNaN, 0) unchanged", errno, 0, 0, 0, 0); TEST_ff_f (remainder, 1.625, 1.0, -0.375); TEST_ff_f (remainder, -1.625, 1.0, 0.375); @@ -8858,11 +9529,11 @@ remquo_test (void) START (remquo); - TEST_ffI_f1 (remquo, 1, 0, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, 1, minus_zero, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, plus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, minus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION); - TEST_ffI_f1 (remquo, nan_value, nan_value, nan_value, IGNORE); + TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION); + TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION); + TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION); + TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION); + TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE); TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2); TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2); @@ -8878,6 +9549,8 @@ remquo_test (void) static void rint_test (void) { + /* TODO: missing qNaN tests. */ + START (rint); TEST_f_f (rint, 0.0, 0.0); @@ -9343,6 +10016,8 @@ rint_test_upward (void) static void round_test (void) { + /* TODO: missing +/-Inf as well as qNaN tests. */ + START (round); TEST_f_f (round, 0, 0); @@ -9445,17 +10120,17 @@ scalb_test (void) START (scalb); - TEST_ff_f (scalb, 2.0, 0.5, nan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, 3.0, -2.5, nan_value, INVALID_EXCEPTION); + TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, 0, nan_value, nan_value); - TEST_ff_f (scalb, 1, nan_value, nan_value); + TEST_ff_f (scalb, 0, qnan_value, qnan_value); + TEST_ff_f (scalb, 1, qnan_value, qnan_value); TEST_ff_f (scalb, 1, 0, 1); TEST_ff_f (scalb, -1, 0, -1); - TEST_ff_f (scalb, 0, plus_infty, nan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, minus_zero, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION); TEST_ff_f (scalb, 0, 2, 0); TEST_ff_f (scalb, minus_zero, -4, minus_zero); @@ -9481,16 +10156,16 @@ scalb_test (void) TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty); TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty); - TEST_ff_f (scalb, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION); - TEST_ff_f (scalb, nan_value, 1, nan_value); - TEST_ff_f (scalb, 1, nan_value, nan_value); - TEST_ff_f (scalb, nan_value, 0, nan_value); - TEST_ff_f (scalb, 0, nan_value, nan_value); - TEST_ff_f (scalb, nan_value, plus_infty, nan_value); - TEST_ff_f (scalb, plus_infty, nan_value, nan_value); - TEST_ff_f (scalb, nan_value, nan_value, nan_value); + TEST_ff_f (scalb, qnan_value, 1, qnan_value); + TEST_ff_f (scalb, 1, qnan_value, qnan_value); + TEST_ff_f (scalb, qnan_value, 0, qnan_value); + TEST_ff_f (scalb, 0, qnan_value, qnan_value); + TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value); + TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value); + TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value); TEST_ff_f (scalb, 0.8L, 4, 12.8L); TEST_ff_f (scalb, -0.854375L, 5, -27.34L); @@ -9510,7 +10185,7 @@ scalbn_test (void) TEST_fi_f (scalbn, plus_infty, 1, plus_infty); TEST_fi_f (scalbn, minus_infty, 1, minus_infty); - TEST_fi_f (scalbn, nan_value, 1, nan_value); + TEST_fi_f (scalbn, qnan_value, 1, qnan_value); TEST_fi_f (scalbn, 0.8L, 4, 12.8L); TEST_fi_f (scalbn, -0.854375L, 5, -27.34L); @@ -9541,7 +10216,7 @@ scalbln_test (void) TEST_fl_f (scalbln, plus_infty, 1, plus_infty); TEST_fl_f (scalbln, minus_infty, 1, minus_infty); - TEST_fl_f (scalbln, nan_value, 1, nan_value); + TEST_fl_f (scalbln, qnan_value, 1, qnan_value); TEST_fl_f (scalbln, 0.8L, 4, 12.8L); TEST_fl_f (scalbln, -0.854375L, 5, -27.34L); @@ -9584,6 +10259,7 @@ scalbln_test (void) static void signbit_test (void) { + /* TODO: missing qNaN tests. */ START (signbit); @@ -9615,14 +10291,14 @@ sin_test (void) TEST_f_f (sin, 0, 0); TEST_f_f (sin, minus_zero, minus_zero); errno = 0; - TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION); check_int ("errno for sin(+inf) == EDOM", errno, EDOM, 0, 0, 0); errno = 0; - TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION); check_int ("errno for sin(-inf) == EDOM", errno, EDOM, 0, 0, 0); errno = 0; - TEST_f_f (sin, nan_value, nan_value); - check_int ("errno for sin(NaN) unchanged", errno, 0, 0, 0, 0); + TEST_f_f (sin, qnan_value, qnan_value); + check_int ("errno for sin(qNaN) unchanged", errno, 0, 0, 0, 0); TEST_f_f (sin, M_PI_6l, 0.5); TEST_f_f (sin, -M_PI_6l, -0.5); @@ -9814,9 +10490,9 @@ sincos_test (void) TEST_extra (sincos, 0, 0, 1); TEST_extra (sincos, minus_zero, minus_zero, 1); - TEST_extra (sincos, plus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_extra (sincos, minus_infty, nan_value, nan_value, INVALID_EXCEPTION); - TEST_extra (sincos, nan_value, nan_value, nan_value); + TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION); + TEST_extra (sincos, qnan_value, qnan_value, qnan_value); TEST_extra (sincos, M_PI_2l, 1, 0); TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L); @@ -9866,7 +10542,7 @@ sinh_test (void) TEST_f_f (sinh, plus_infty, plus_infty); TEST_f_f (sinh, minus_infty, minus_infty); #endif - TEST_f_f (sinh, nan_value, nan_value); + TEST_f_f (sinh, qnan_value, qnan_value); TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L); TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L); @@ -9995,16 +10671,15 @@ sqrt_test (void) START (sqrt); TEST_f_f (sqrt, 0, 0); - TEST_f_f (sqrt, nan_value, nan_value); + TEST_f_f (sqrt, qnan_value, qnan_value); TEST_f_f (sqrt, plus_infty, plus_infty); TEST_f_f (sqrt, minus_zero, minus_zero); - /* sqrt (x) == NaN plus invalid exception for x < 0. */ - TEST_f_f (sqrt, -1, nan_value, INVALID_EXCEPTION); - TEST_f_f (sqrt, -max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (sqrt, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (sqrt, nan_value, nan_value); + /* sqrt (x) == qNaN plus invalid exception for x < 0. */ + TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION); + TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION); TEST_f_f (sqrt, 2209, 47); TEST_f_f (sqrt, 4, 2); @@ -10032,14 +10707,14 @@ tan_test (void) TEST_f_f (tan, 0, 0); TEST_f_f (tan, minus_zero, minus_zero); errno = 0; - TEST_f_f (tan, plus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION); check_int ("errno for tan(Inf) == EDOM", errno, EDOM, 0, 0, 0); errno = 0; - TEST_f_f (tan, minus_infty, nan_value, INVALID_EXCEPTION); + TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION); check_int ("errno for tan(-Inf) == EDOM", errno, EDOM, 0, 0, 0); errno = 0; - TEST_f_f (tan, nan_value, nan_value); - check_int ("errno for tan(NaN) == 0", errno, 0, 0, 0, 0); + TEST_f_f (tan, qnan_value, qnan_value); + check_int ("errno for tan(qNaN) == 0", errno, 0, 0, 0, 0); TEST_f_f (tan, M_PI_4l, 1); TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L); @@ -10252,7 +10927,7 @@ tanh_test (void) TEST_f_f (tanh, plus_infty, 1); TEST_f_f (tanh, minus_infty, -1); #endif - TEST_f_f (tanh, nan_value, nan_value); + TEST_f_f (tanh, qnan_value, qnan_value); TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L); TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L); @@ -10281,11 +10956,11 @@ tgamma_test (void) TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION); TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION); TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION); - /* tgamma (x) == NaN plus invalid exception for integer x <= 0. */ - TEST_f_f (tgamma, -2, nan_value, INVALID_EXCEPTION); - TEST_f_f (tgamma, -max_value, nan_value, INVALID_EXCEPTION); - TEST_f_f (tgamma, minus_infty, nan_value, INVALID_EXCEPTION); - TEST_f_f (tgamma, nan_value, nan_value); + /* tgamma (x) == qNaN plus invalid exception for integer x <= 0. */ + TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION); + TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION); + TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION); + TEST_f_f (tgamma, qnan_value, qnan_value); TEST_f_f (tgamma, 0.5, M_SQRT_PIl); TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl); @@ -10307,7 +10982,7 @@ trunc_test (void) TEST_f_f (trunc, plus_infty, plus_infty); TEST_f_f (trunc, minus_infty, minus_infty); - TEST_f_f (trunc, nan_value, nan_value); + TEST_f_f (trunc, qnan_value, qnan_value); TEST_f_f (trunc, 0, 0); TEST_f_f (trunc, minus_zero, minus_zero); @@ -10429,7 +11104,7 @@ y0_test (void) TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION); TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION); TEST_f_f (y0, 0.0, minus_infty); - TEST_f_f (y0, nan_value, nan_value); + TEST_f_f (y0, qnan_value, qnan_value); TEST_f_f (y0, plus_infty, 0); TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L); @@ -10443,8 +11118,13 @@ y0_test (void) TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L); #ifndef TEST_FLOAT - /* Bug 14155: spurious exception may occur. */ - TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L, UNDERFLOW_EXCEPTION_OK); + TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L); + TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L); + TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L); #endif TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L); @@ -10484,7 +11164,7 @@ y1_test (void) TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION); TEST_f_f (y1, 0.0, minus_infty); TEST_f_f (y1, plus_infty, 0); - TEST_f_f (y1, nan_value, nan_value); + TEST_f_f (y1, qnan_value, qnan_value); TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L); TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L); @@ -10494,12 +11174,16 @@ y1_test (void) TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L); TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L); - /* Bug 14155: spurious exception may occur. */ - TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L, UNDERFLOW_EXCEPTION_OK); + TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L); #ifndef TEST_FLOAT - /* Bug 14155: spurious exception may occur. */ - TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L, UNDERFLOW_EXCEPTION_OK); + TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L); + TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L); + TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L); #endif TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L); @@ -10539,7 +11223,7 @@ yn_test (void) TEST_ff_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION); TEST_ff_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION); TEST_ff_f (yn, 0, 0.0, minus_infty); - TEST_ff_f (yn, 0, nan_value, nan_value); + TEST_ff_f (yn, 0, qnan_value, qnan_value); TEST_ff_f (yn, 0, plus_infty, 0); TEST_ff_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L); @@ -10554,7 +11238,7 @@ yn_test (void) TEST_ff_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION); TEST_ff_f (yn, 1, 0.0, minus_infty); TEST_ff_f (yn, 1, plus_infty, 0); - TEST_ff_f (yn, 1, nan_value, nan_value); + TEST_ff_f (yn, 1, qnan_value, qnan_value); TEST_ff_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L); TEST_ff_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L); @@ -10566,7 +11250,7 @@ yn_test (void) /* yn (3, x) */ TEST_ff_f (yn, 3, plus_infty, 0); - TEST_ff_f (yn, 3, nan_value, nan_value); + TEST_ff_f (yn, 3, qnan_value, qnan_value); TEST_ff_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L); TEST_ff_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L); @@ -10576,7 +11260,7 @@ yn_test (void) /* yn (10, x) */ TEST_ff_f (yn, 10, plus_infty, 0); - TEST_ff_f (yn, 10, nan_value, nan_value); + TEST_ff_f (yn, 10, qnan_value, qnan_value); TEST_ff_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L); TEST_ff_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L); @@ -10600,6 +11284,9 @@ static void significand_test (void) { /* significand returns the mantissa of the exponential representation. */ + + /* TODO: missing +/-Inf as well as qNaN tests. */ + START (significand); TEST_f_f (significand, 4.0, 1.0); @@ -10614,10 +11301,10 @@ static void initialize (void) { fpstack_test ("start *init*"); - plus_zero = 0.0; - nan_value = plus_zero / plus_zero; /* Suppress GCC warning */ - minus_zero = FUNC(copysign) (0.0, -1.0); + plus_zero = 0.0; + qnan_value = FUNC (__builtin_nan) (""); + minus_zero = FUNC (copysign) (0.0, -1.0); plus_infty = CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF, HUGE_VALL, HUGE_VAL, HUGE_VALF); minus_infty = CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF, @@ -10634,7 +11321,7 @@ initialize (void) __FLT_DENORM_MIN__); (void) &plus_zero; - (void) &nan_value; + (void) &qnan_value; (void) &minus_zero; (void) &plus_infty; (void) &minus_infty; diff --git a/math/test-misc.c b/math/test-misc.c index d64e8e2fcc..c13bafa117 100644 --- a/math/test-misc.c +++ b/math/test-misc.c @@ -1056,7 +1056,7 @@ main (void) } #endif -#ifdef __i386__ +#if defined (__i386__) || defined (__x86_64__) /* This is a test for the strange long doubles in x86 FPUs. */ { union @@ -1074,7 +1074,7 @@ main (void) } } - /* Special NaNs in x86 long double. Test for scalbl. */ + /* Special qNaNs in x86 long double. Test for scalbl. */ { union { @@ -1087,12 +1087,12 @@ main (void) r = scalbl (u.d, 0.0); if (!isnan (r)) { - puts ("scalbl(NaN, 0) does not return NaN"); + puts ("scalbl (qNaN, 0) does not return NaN"); result = 1; } else if (memcmp (&r, &u.d, sizeof (double)) != 0) { - puts ("scalbl(NaN, 0) does not return the same NaN"); + puts ("scalbl (qNaN, 0) does not return the same NaN"); result = 1; } } @@ -1116,7 +1116,7 @@ main (void) } else if (fetestexcept (FE_UNDERFLOW)) { - puts ("scalbl(NaN, 0) raises underflow exception"); + puts ("scalbl (LDBL_MIN, 2147483647) raises underflow exception"); result = 1; } @@ -1134,7 +1134,7 @@ main (void) } else if (fetestexcept (FE_OVERFLOW)) { - puts ("scalbl(NaN, 0) raises overflow exception"); + puts ("scalbl (LDBL_MAX, -2147483647) raises overflow exception"); result = 1; } } diff --git a/math/test-snan.c b/math/test-snan.c new file mode 100644 index 0000000000..f185cbb45c --- /dev/null +++ b/math/test-snan.c @@ -0,0 +1,351 @@ +/* Test signaling NaNs in isnan, isinf, and similar functions. + Copyright (C) 2008-2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andreas Jaeger <aj@suse.de>, 2005. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#define _GNU_SOURCE 1 +#include <stdio.h> +#include <stdlib.h> +#include <sys/time.h> +#include <string.h> +#include <math.h> +#include <float.h> +#include <fenv.h> +#include <signal.h> +#include <setjmp.h> +#include <errno.h> + +#include <math-tests.h> + + +int dest_offset; +char *dest_address; +double value = 123.456; +double zero = 0.0; + +static sigjmp_buf sigfpe_buf; + +typedef long double ldouble; + + +void +myFPsighandler(int signal, + siginfo_t *info, + void *context) +{ + siglongjmp(sigfpe_buf, 0); +} + +int +set_sigaction_FP(void) +{ + struct sigaction sa; + /* register RT signal handler via sigaction */ + sa.sa_flags = SA_SIGINFO; + sa.sa_sigaction = &myFPsighandler; + sigemptyset(&sa.sa_mask); + sigaction(SIGFPE, &sa, NULL); + + return 0; +} + +int +remove_sigaction_FP(void) +{ + struct sigaction sa; + /* restore default RT signal handler via sigaction */ + sa.sa_flags = SA_SIGINFO; + sa.sa_handler = SIG_DFL; + sigemptyset(&sa.sa_mask); + sigaction(SIGFPE, &sa, NULL); + + return 0; +} + +static int errors = 0; + +static void +check (const char *testname, int result) +{ + if (!result) { + printf ("Failure: %s\n", testname); + errors++; + } +} + +#define TEST_FUNC(NAME, FLOAT, SUFFIX) \ +static void \ +NAME (void) \ +{ \ + /* Variables are declared volatile to forbid some compiler \ + optimizations. */ \ + volatile FLOAT Inf_var, qNaN_var, zero_var, one_var; \ + /* A sNaN is only guaranteed to be representable in variables with */ \ + /* static (or thread-local) storage duration. */ \ + static volatile FLOAT sNaN_var = __builtin_nans ## SUFFIX (""); \ + static volatile FLOAT minus_sNaN_var = -__builtin_nans ## SUFFIX (""); \ + fenv_t saved_fenv; \ + \ + zero_var = 0.0; \ + one_var = 1.0; \ + qNaN_var = __builtin_nan ## SUFFIX (""); \ + Inf_var = one_var / zero_var; \ + \ + (void) &zero_var; \ + (void) &one_var; \ + (void) &qNaN_var; \ + (void) &sNaN_var; \ + (void) &minus_sNaN_var; \ + (void) &Inf_var; \ + \ + set_sigaction_FP (); \ + fegetenv(&saved_fenv); \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnan (qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnan (qNaN)", isnan (qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnan (-qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnan (-qNaN)", isnan (-qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnan (sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnan (sNaN)", \ + SNAN_TESTS (FLOAT) ? isnan (sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnan (-sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnan (-sNaN)", \ + SNAN_TESTS (FLOAT) ? isnan (minus_sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isinf (qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isinf (qNaN)", !isinf (qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isinf (-qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isinf (-qNaN)", !isinf (-qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isinf (sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isinf (sNaN)", \ + SNAN_TESTS (FLOAT) ? !isinf (sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isinf (-sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isinf (-sNaN)", \ + SNAN_TESTS (FLOAT) ? !isinf (minus_sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isfinite (qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isfinite (qNaN)", !isfinite (qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isfinite (-qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isfinite (-qNaN)", !isfinite (-qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isfinite (sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isfinite (sNaN)", \ + SNAN_TESTS (FLOAT) ? !isfinite (sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isfinite (-sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isfinite (-sNaN)", \ + SNAN_TESTS (FLOAT) ? !isfinite (minus_sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnormal (qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnormal (qNaN)", !isnormal (qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnormal (-qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnormal (-qNaN)", !isnormal (-qNaN_var)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnormal (sNaN) isnormal SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnormal (sNaN)", \ + SNAN_TESTS (FLOAT) ? !isnormal (sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " isnormal (-sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " isnormal (-sNaN)", \ + SNAN_TESTS (FLOAT) ? !isnormal (minus_sNaN_var) : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " fpclassify (qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " fpclassify (qNaN)", (fpclassify (qNaN_var)==FP_NAN)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " fpclassify (-qNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " fpclassify (-qNaN)", (fpclassify (-qNaN_var)==FP_NAN)); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " fpclassify (sNaN) isnormal SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " fpclassify (sNaN)", \ + SNAN_TESTS (FLOAT) ? fpclassify (sNaN_var) == FP_NAN : 1); \ + } \ + \ + feclearexcept(FE_ALL_EXCEPT); \ + feenableexcept (FE_ALL_EXCEPT); \ + if (sigsetjmp(sigfpe_buf, 0)) \ + { \ + printf (#FLOAT " fpclassify (-sNaN) raised SIGFPE\n"); \ + errors++; \ + } else { \ + check (#FLOAT " fpclassify (-sNaN)", \ + SNAN_TESTS (FLOAT) ? fpclassify (minus_sNaN_var) == FP_NAN : 1); \ + } \ + \ + fesetenv(&saved_fenv); /* restore saved fenv */ \ + remove_sigaction_FP(); \ +} + +TEST_FUNC (float_test, float, f) +TEST_FUNC (double_test, double, ) +#ifndef NO_LONG_DOUBLE +TEST_FUNC (ldouble_test, ldouble, l) +#endif + +static int +do_test (void) +{ + float_test(); + double_test(); +#ifndef NO_LONG_DOUBLE + ldouble_test(); +#endif + + return errors != 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |