Changeset View
Changeset View
Standalone View
Standalone View
lib/msun/tests/ctrig_test.c
Show First 20 Lines • Show All 132 Lines • ▼ Show 20 Lines | |||||
ATF_TC_HEAD(test_zero_input, tc) | ATF_TC_HEAD(test_zero_input, tc) | ||||
{ | { | ||||
atf_tc_set_md_var(tc, "descr", "test 0 input"); | atf_tc_set_md_var(tc, "descr", "test 0 input"); | ||||
} | } | ||||
ATF_TC_BODY(test_zero_input, tc) | ATF_TC_BODY(test_zero_input, tc) | ||||
{ | { | ||||
long double complex zero = CMPLXL(0.0, 0.0); | long double complex zero = CMPLXL(0.0, 0.0); | ||||
#if defined(__amd64__) | |||||
#if defined(__clang__) && \ | |||||
((__clang_major__ >= 4)) | |||||
atf_tc_expect_fail("test fails with clang 4.x+ - bug 217528"); | |||||
#endif | |||||
#endif | |||||
/* csinh(0) = ctanh(0) = 0; ccosh(0) = 1 (no exceptions raised) */ | /* csinh(0) = ctanh(0) = 0; ccosh(0) = 1 (no exceptions raised) */ | ||||
testall_odd(csinh, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | testall_odd(csinh, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | ||||
testall_odd(csin, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | testall_odd(csin, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | ||||
testall_even(ccosh, zero, 1.0, ALL_STD_EXCEPT, 0, CS_BOTH); | testall_even(ccosh, zero, 1.0, ALL_STD_EXCEPT, 0, CS_BOTH); | ||||
testall_even(ccos, zero, CMPLXL(1.0, -0.0), ALL_STD_EXCEPT, 0, CS_BOTH); | testall_even(ccos, zero, CMPLXL(1.0, -0.0), ALL_STD_EXCEPT, 0, CS_BOTH); | ||||
testall_odd(ctanh, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | testall_odd(ctanh, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | ||||
testall_odd(ctan, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | testall_odd(ctan, zero, zero, ALL_STD_EXCEPT, 0, CS_BOTH); | ||||
} | } | ||||
Show All 10 Lines | ATF_TC_BODY(test_nan_inputs, tc) | ||||
/* | /* | ||||
* IN CSINH CCOSH CTANH | * IN CSINH CCOSH CTANH | ||||
* NaN,NaN NaN,NaN NaN,NaN NaN,NaN | * NaN,NaN NaN,NaN NaN,NaN NaN,NaN | ||||
* finite,NaN NaN,NaN [inval] NaN,NaN [inval] NaN,NaN [inval] | * finite,NaN NaN,NaN [inval] NaN,NaN [inval] NaN,NaN [inval] | ||||
* NaN,finite NaN,NaN [inval] NaN,NaN [inval] NaN,NaN [inval] | * NaN,finite NaN,NaN [inval] NaN,NaN [inval] NaN,NaN [inval] | ||||
* NaN,Inf NaN,NaN [inval] NaN,NaN [inval] NaN,NaN [inval] | * NaN,Inf NaN,NaN [inval] NaN,NaN [inval] NaN,NaN [inval] | ||||
* Inf,NaN +-Inf,NaN Inf,NaN 1,+-0 | * Inf,NaN +-Inf,NaN Inf,NaN 1,+-0 | ||||
* 0,NaN +-0,NaN NaN,+-0 NaN,NaN [inval] | * 0,NaN +-0,NaN NaN,+-0 +-0,NaN | ||||
* NaN,0 NaN,0 NaN,+-0 NaN,0 | * NaN,0 NaN,0 NaN,+-0 NaN,+-0 | ||||
*/ | */ | ||||
z = nan_nan; | z = nan_nan; | ||||
testall_odd(csinh, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | testall_odd(csinh, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | ||||
testall_even(ccosh, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | testall_even(ccosh, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(ctanh, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | testall_odd(ctanh, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(csin, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | testall_odd(csin, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | ||||
testall_even(ccos, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | testall_even(ccos, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(ctan, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | testall_odd(ctan, z, nan_nan, ALL_STD_EXCEPT, 0, 0); | ||||
Show All 30 Lines | ATF_TC_BODY(test_nan_inputs, tc) | ||||
testall_even(ccosh, z, CMPLXL(INFINITY, NAN), ALL_STD_EXCEPT, 0, | testall_even(ccosh, z, CMPLXL(INFINITY, NAN), ALL_STD_EXCEPT, 0, | ||||
CS_REAL); | CS_REAL); | ||||
testall_odd(ctanh, z, CMPLXL(1, 0), ALL_STD_EXCEPT, 0, CS_REAL); | testall_odd(ctanh, z, CMPLXL(1, 0), ALL_STD_EXCEPT, 0, CS_REAL); | ||||
testall_odd(csin, z, nan_nan, OPT_INVALID, 0, 0); | testall_odd(csin, z, nan_nan, OPT_INVALID, 0, 0); | ||||
testall_even(ccos, z, nan_nan, OPT_INVALID, 0, 0); | testall_even(ccos, z, nan_nan, OPT_INVALID, 0, 0); | ||||
testall_odd(ctan, z, nan_nan, OPT_INVALID, 0, 0); | testall_odd(ctan, z, nan_nan, OPT_INVALID, 0, 0); | ||||
z = CMPLXL(0, NAN); | z = CMPLXL(0, NAN); | ||||
testall_odd(csinh, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, 0, 0); | testall_odd(csinh, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, 0, CS_REAL); | ||||
testall_even(ccosh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | testall_even(ccosh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(ctanh, z, nan_nan, OPT_INVALID, 0, 0); | testall_odd(ctanh, z, CMPLXL(0, NAN), OPT_INVALID, 0, CS_REAL); | ||||
testall_odd(csin, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, 0, CS_REAL); | testall_odd(csin, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, 0, CS_REAL); | ||||
testall_even(ccos, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | testall_even(ccos, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(ctan, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, 0, CS_REAL); | testall_odd(ctan, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, 0, CS_REAL); | ||||
z = CMPLXL(NAN, 0); | z = CMPLXL(NAN, 0); | ||||
testall_odd(csinh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, CS_IMAG); | testall_odd(csinh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, CS_IMAG); | ||||
testall_even(ccosh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | testall_even(ccosh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(ctanh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, CS_IMAG); | testall_odd(ctanh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, CS_IMAG); | ||||
testall_odd(csin, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | testall_odd(csin, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | ||||
testall_even(ccos, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | testall_even(ccos, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, 0); | ||||
testall_odd(ctan, z, nan_nan, OPT_INVALID, 0, 0); | testall_odd(ctan, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, 0, CS_IMAG); | ||||
} | } | ||||
ATF_TC(test_inf_inputs); | ATF_TC(test_inf_inputs); | ||||
ATF_TC_HEAD(test_inf_inputs, tc) | ATF_TC_HEAD(test_inf_inputs, tc) | ||||
{ | { | ||||
atf_tc_set_md_var(tc, "descr", "test infinity inputs"); | atf_tc_set_md_var(tc, "descr", "test infinity inputs"); | ||||
} | } | ||||
ATF_TC_BODY(test_inf_inputs, tc) | ATF_TC_BODY(test_inf_inputs, tc) | ||||
{ | { | ||||
static const long double finites[] = { | static const long double finites[] = { | ||||
0, M_PI / 4, 3 * M_PI / 4, 5 * M_PI / 4, | 0, M_PI / 4, 3 * M_PI / 4, 5 * M_PI / 4, | ||||
}; | }; | ||||
long double complex z, c, s; | long double complex z, c, s; | ||||
unsigned i; | unsigned i; | ||||
/* | /* | ||||
* IN CSINH CCOSH CTANH | * IN CSINH CCOSH CTANH | ||||
* Inf,Inf +-Inf,NaN inval +-Inf,NaN inval 1,+-0 | * Inf,Inf +-Inf,NaN inval +-Inf,NaN inval 1,+-0 | ||||
* Inf,finite Inf cis(finite) Inf cis(finite) 1,0 sin(2 finite) | * Inf,finite Inf cis(finite) Inf cis(finite) 1,0 sin(2 finite) | ||||
* 0,Inf +-0,NaN inval NaN,+-0 inval NaN,NaN inval | * 0,Inf +-0,NaN inval NaN,+-0 inval +-0,NaN | ||||
* finite,Inf NaN,NaN inval NaN,NaN inval NaN,NaN inval | * finite,Inf NaN,NaN inval NaN,NaN inval NaN,NaN inval | ||||
*/ | */ | ||||
z = CMPLXL(INFINITY, INFINITY); | z = CMPLXL(INFINITY, INFINITY); | ||||
testall_odd(csinh, z, CMPLXL(INFINITY, NAN), | testall_odd(csinh, z, CMPLXL(INFINITY, NAN), | ||||
ALL_STD_EXCEPT, FE_INVALID, 0); | ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_even(ccosh, z, CMPLXL(INFINITY, NAN), | testall_even(ccosh, z, CMPLXL(INFINITY, NAN), | ||||
ALL_STD_EXCEPT, FE_INVALID, 0); | ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_odd(ctanh, z, CMPLXL(1, 0), ALL_STD_EXCEPT, 0, CS_REAL); | testall_odd(ctanh, z, CMPLXL(1, 0), ALL_STD_EXCEPT, 0, CS_REAL); | ||||
Show All 17 Lines | for (i = 0; i < nitems(finites); i++) { | ||||
testall_even(ccos, z, CMPLXL(c, -s), OPT_INEXACT, 0, CS_BOTH); | testall_even(ccos, z, CMPLXL(c, -s), OPT_INEXACT, 0, CS_BOTH); | ||||
testall_odd(ctan, z, CMPLXL(0 * sin(finites[i] * 2), 1), | testall_odd(ctan, z, CMPLXL(0 * sin(finites[i] * 2), 1), | ||||
OPT_INEXACT, 0, CS_BOTH); | OPT_INEXACT, 0, CS_BOTH); | ||||
} | } | ||||
z = CMPLXL(0, INFINITY); | z = CMPLXL(0, INFINITY); | ||||
testall_odd(csinh, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_odd(csinh, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_even(ccosh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_even(ccosh, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_odd(ctanh, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_odd(ctanh, z, CMPLXL(0, NAN), ALL_STD_EXCEPT, FE_INVALID, CS_REAL); | ||||
z = CMPLXL(INFINITY, 0); | z = CMPLXL(INFINITY, 0); | ||||
testall_odd(csin, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_odd(csin, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_even(ccos, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_even(ccos, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_odd(ctan, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_odd(ctan, z, CMPLXL(NAN, 0), ALL_STD_EXCEPT, FE_INVALID, CS_IMAG); | ||||
z = CMPLXL(42, INFINITY); | z = CMPLXL(42, INFINITY); | ||||
testall_odd(csinh, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_odd(csinh, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
testall_even(ccosh, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_even(ccosh, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
/* XXX We allow a spurious inexact exception here. */ | /* XXX We allow a spurious inexact exception here. */ | ||||
testall_odd(ctanh, z, CMPLXL(NAN, NAN), OPT_INEXACT, FE_INVALID, 0); | testall_odd(ctanh, z, CMPLXL(NAN, NAN), OPT_INEXACT, FE_INVALID, 0); | ||||
z = CMPLXL(INFINITY, 42); | z = CMPLXL(INFINITY, 42); | ||||
testall_odd(csin, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | testall_odd(csin, z, CMPLXL(NAN, NAN), ALL_STD_EXCEPT, FE_INVALID, 0); | ||||
▲ Show 20 Lines • Show All 193 Lines • Show Last 20 Lines |