diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-12-14 22:24:57 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-12-14 22:24:57 +0000 |
commit | bd355af04fc1df69d4ebb6733be170b9baf0dfb5 (patch) | |
tree | 7c003a29de4031db7de6ddd8e86c43bd746891a0 /math | |
parent | afe93c0bb33ca7f45b9b60c30067e7b84827e900 (diff) | |
download | glibc-bd355af04fc1df69d4ebb6733be170b9baf0dfb5.zip glibc-bd355af04fc1df69d4ebb6733be170b9baf0dfb5.tar.gz glibc-bd355af04fc1df69d4ebb6733be170b9baf0dfb5.tar.bz2 |
Update.cvs/libc-ud-971214
1997-12-14 21:33 Ulrich Drepper <drepper@cygnus.com>
* version.h (VERSION): Bump to 2.0.91.
* db2/makedb.c (process_input): Fix typo in message.
* sunrpc/rpcinfo.c (pmapdump): Unify messages.
* elf/dynamic-link.h: Pretty print.
* elf/rtld.c: Allow multiple preloading of a shared object.
* include/limits.h: Prevent multiple inclusion.
* malloc/Makefile (headers): Add mcheck.h.
(distribute): Remove it here.
* malloc/mcheck.h: Pretty print.
* malloc/mtrace.c (mallenv): Make `const'.
* malloc/mtrace.pl: Don't print table head for memory leaks if there
are none.
* manual/memory.texi: Update descriptor of malloc hooks.
* posix/Makefile (routines): Add waitid.
* posix/sys/types.h [__USE_SVID || __USE_POSIX]: Define id_t based
on __id_t.
* posix/sys/wait.h: Define idtype_t type.
Add prototype for waitid.
* signal/signal.h: Move definition of sigval_t to <bits/siginfo.h>.
* sysdeps/generic/waitid.c: Stub for waitid.
* sysdeps/generic/bits/siginfo.h: Define sigval_t. Arrange to work
the __need_siginfo_t defined.
* sysdeps/unix/sysv/linux/bits/siginfo: Likewise.
* sysdeps/generic/bits/types.h: Define __id_t.
Correct definition of __FDMASK.
* sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h: Likewise.
* sysdeps/posix/waitid.c: New file.
Provided by Zack Weinberg.
* rt/aio_misc.c: Rename __aio_free_req to __aio_free_request.
* sysdeps/alpha/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
Add missing parameters.
* sysdeps/generic/dl-sysdep.c: Don't call __libc_init_secure.
* sysdeps/generic/enbl-secure.c: Don't define __libc_uid.
* sysdeps/unix/sysv/linux/init-first.c: Define __libc_uid.
* sysdeps/unix/sysv/linux/sigqueue.c: Make sure __libc_uid is
initialized.
* sysdeps/i386/dl-machine.h: Little cleanup.
* sysdeps/i386/fpu/bits/mathinline.h: Use __signbit* inline functions.
(__finite): Mark function as const.
Add inline code for __ieee754_atan2.
* sysdeps/libm-ieee754/s_cacoshf.c: Add alternate implementation
(but don't use it now).
* sysdeps/libm-ieee754/s_catan.c: Use __ieee754_atan2 instead of
__atan.
* sysdeps/libm-ieee754/s_catanf.c: Likewise.
* sysdeps/libm-ieee754/s_catanl.c: Likewise.
* sysdeps/libm-ieee754/s_catanh.c: Likewise. Correct sign of
real part.
* sysdeps/libm-ieee754/s_catanhf.c: Likewise.
* sysdeps/libm-ieee754/s_catanhl.c: Likewise.
* sysdeps/libm-ieee754/s_clog10.c: Use factor to correct
__ieee754_atan2 to base 10.
* sysdeps/libm-ieee754/s_clog10f.c: Likewise.
* sysdeps/libm-ieee754/s_clog10l.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Define as
old_kernel_sigaction.
* sysdeps/unix/sysv/linux/net/if_slip.h: Pretty print.
* wctype/Makefile (routines): Add wctype_l.
* wctype/wctype.h: Add declaration of __wctype_l.
* wctype/wctype_l.c: New file.
1997-12-10 00:38 Ulrich Drepper <drepper@cygnus.com>
* locale/C-ctype.c: Correct data for isw* functions.
* locale/programs/ld-ctype.c: Write 32bit char classes in correct
byte order.
* wctype/test_wctype.c: Add test for isw* functions.
* wctype/wctype.c: Return value with expected byte order.
* sysdeps/generic/_G_config.h: Define _G_HAVE_IO_FILE_OPEN.
* sysdeps/unix/sysv/linux/_G_config.h: Likewise.
Diffstat (limited to 'math')
-rw-r--r-- | math/libm-test.c | 299 |
1 files changed, 279 insertions, 20 deletions
diff --git a/math/libm-test.c b/math/libm-test.c index c9b3b4d..a1050ba 100644 --- a/math/libm-test.c +++ b/math/libm-test.c @@ -847,6 +847,9 @@ acos_test (void) check ("acos (0.5) == pi/3", FUNC(acos) (0.5), M_PI_6 * 2.0); check ("acos (-0.5) == 2*pi/3", FUNC(acos) (-0.5), M_PI_6 * 4.0); + check_eps ("acos (0.7) == 0.795398830...", FUNC(acos) (0.7), + 0.7953988301841435554L, CHOOSE(7e-17L, 0, 0)); + } @@ -864,6 +867,8 @@ acosh_test (void) #endif check ("acosh(1) == 0", FUNC(acosh) (1), 0); + check ("acosh(7) == 2.633915793...", FUNC(acosh) (7), + 2.6339157938496334172L); } @@ -892,7 +897,8 @@ asin_test (void) CHOOSE(3.5e-18, 0, 2e-7)); check ("asin (1.0) == pi/2", FUNC(asin) (1.0), M_PI_2); check ("asin (-1.0) == -pi/2", FUNC(asin) (-1.0), -M_PI_2); - + check_eps ("asin (0.7) == 0.775397496...", FUNC(asin) (0.7), + 0.7753974966107530637L, CHOOSE(7e-17L, 2e-16, 0)); } @@ -906,6 +912,8 @@ asinh_test (void) check_isinfp ("asinh(+inf) == +inf", FUNC(asinh) (plus_infty)); check_isinfn ("asinh(-inf) == -inf", FUNC(asinh) (minus_infty)); #endif + check_eps ("asinh(0.7) == 0.652666566...", FUNC(asinh) (0.7), + 0.652666566082355786L, CHOOSE(4e-17L, 0, 0)); } @@ -922,6 +930,8 @@ atan_test (void) check ("atan (1) == pi/4", FUNC(atan) (1), M_PI_4); check ("atan (-1) == -pi/4", FUNC(atan) (1), M_PI_4); + check_eps ("atan (0.7) == 0.610725964...", FUNC(atan) (0.7), + 0.6107259643892086165L, CHOOSE(3e-17L, 0, 0)); } @@ -1026,6 +1036,8 @@ atanh_test (void) FUNC(atanh) (x), INVALID_EXCEPTION, x); #endif + check_eps ("atanh(0.7) == 0.867300527...", FUNC(atanh) (0.7), + 0.8673005276940531944L, CHOOSE(9e-17L, 2e-16, 0)); } @@ -1047,6 +1059,9 @@ cbrt_test (void) CHOOSE (3e-16L, 5e-16, 0)); check_eps ("cbrt (0.970299) == 0.99", FUNC(cbrt) (0.970299), 0.99, CHOOSE (2e-17L, 0, 0)); + check_eps ("cbrt (0.7) == .8879040017...", FUNC(cbrt) (0.7), + 0.8879040017426007084L, CHOOSE(2e-17L, 2e-16, 0)); + } @@ -1083,6 +1098,8 @@ cos_test (void) check_eps ("cos (pi/2) == 0", FUNC(cos) (M_PI_2), 0, CHOOSE (1e-19L, 1e-16L, 1e-7L)); + check_eps ("cos (0.7) == 0.7648421872...", FUNC(cos) (0.7), + 0.7648421872844884262L, CHOOSE(3e-17, 2e-16, 0)); } static void @@ -1095,6 +1112,9 @@ cosh_test (void) check_isinfp ("cosh (+inf) == +inf", FUNC(cosh) (plus_infty)); check_isinfp ("cosh (-inf) == +inf", FUNC(cosh) (minus_infty)); #endif + + check_eps ("cosh (0.7) == 1.2551690056...", FUNC(cosh) (0.7), + 1.255169005630943018L, CHOOSE(4e-17L, 0, 0)); } @@ -1111,6 +1131,9 @@ erf_test (void) check ("erf (-0) == -0", FUNC(erf) (minus_zero), minus_zero); check ("erf (+inf) == +1", FUNC(erf) (plus_infty), 1); check ("erf (-inf) == -1", FUNC(erf) (minus_infty), -1); + + check_eps ("erf (0.7) == 0.6778011938...", FUNC(erf) (0.7), + 0.67780119383741847297L, CHOOSE(0, 2e-16, 0)); } @@ -1127,6 +1150,9 @@ erfc_test (void) check ("erfc (-inf) == 2", FUNC(erfc) (minus_infty), 2.0); check ("erfc (+0) == 1", FUNC(erfc) (0.0), 1.0); check ("erfc (-0) == 1", FUNC(erfc) (minus_zero), 1.0); + + check_eps ("erfc (0.7) == 0.3221988061...", FUNC(erfc) (0.7), + 0.32219880616258152702L, CHOOSE(0, 6e-17, 0)); } @@ -1144,6 +1170,8 @@ exp_test (void) check ("exp (2) == e^2", FUNC(exp) (2), M_E * M_E); check ("exp (3) == e^3", FUNC(exp) (3), M_E * M_E * M_E); + check_eps ("exp (0.7) == 2.0137527074...", FUNC(exp) (0.7), + 2.0137527074704765216L, CHOOSE(9e-17L, 0, 0)); } @@ -1165,6 +1193,8 @@ exp2_test (void) check ("exp2 (-1) == 0.5", FUNC(exp2) (-1), 0.5); check_isinfp ("exp2 (1e6) == +inf", FUNC(exp2) (1e6)); check ("exp2 (-1e6) == 0", FUNC(exp2) (-1e6), 0); + check_eps ("exp2 (0.7) == 1.6245047927...", FUNC(exp2) (0.7), + 1.6245047927124710452L, CHOOSE(6e-17L, 0, 6e-8)); } @@ -1398,8 +1428,10 @@ gamma_test (void) check_isnan_exc ("gamma (-inf) == NaN plus invalid exception", FUNC(gamma) (minus_infty), INVALID_EXCEPTION); +#ifdef TODO check_eps ("gamma (0.5) == sqrt(pi)", FUNC(gamma) (0.5), FUNC(sqrt) (M_PI), CHOOSE (0, 5e-16, 2e-7)); +#endif check_eps ("gamma (-0.5) == -2*sqrt(pi)", FUNC(gamma) (-0.5), -2*FUNC(sqrt) (M_PI), CHOOSE (0, 5e-16, 3e-7)); @@ -1513,6 +1545,8 @@ log_test (void) check ("log (2) == M_LN2", FUNC(log) (2), M_LN2); check_eps ("log (10) == M_LN10", FUNC(log) (10), M_LN10, CHOOSE (1e-18L, 0, 0)); + check_eps ("log (0.7) == -0.3566749439...", FUNC(log) (0.7), + -0.35667494393873237891L, CHOOSE(7e-17L, 6e-17, 3e-8)); } @@ -1540,6 +1574,8 @@ log10_test (void) check ("log10 (10000) == 4", FUNC(log10) (10000.0), 4); check_eps ("log10 (e) == M_LOG10E", FUNC(log10) (M_E), M_LOG10E, CHOOSE (1e-18, 0, 9e-8)); + check_eps ("log10 (0.7) == -0.1549019599...", FUNC(log10) (0.7), + -0.15490195998574316929L, CHOOSE(3e-17L, 3e-17, 0)); } @@ -1582,6 +1618,8 @@ log2_test (void) check ("log2 (2) == 1", FUNC(log2) (2.0), 1); check_eps ("log2 (16) == 4", FUNC(log2) (16.0), 4, CHOOSE (1e-18L, 0, 0)); check ("log2 (256) == 8", FUNC(log2) (256.0), 8); + check_eps ("log2 (0.7) == -0.5145731728...", FUNC(log2) (0.7), + -0.51457317282975824043L, CHOOSE(1e-16L, 2e-16, 6e-8)); } @@ -1750,6 +1788,8 @@ sin_test (void) -0.5, CHOOSE (4e-18L, 0, 0)); check ("sin (pi/2) == 1", FUNC(sin) (M_PI_2), 1); check ("sin (-pi/2) == -1", FUNC(sin) (-M_PI_2), -1); + check_eps ("sin (0.7) == 0.6442176872...", FUNC(sin) (0.7), + 0.64421768723769105367L, CHOOSE(4e-17L, 0, 0)); } @@ -1764,6 +1804,9 @@ sinh_test (void) check_isinfp ("sinh (+inf) == +inf", FUNC(sinh) (plus_infty)); check_isinfn ("sinh (-inf) == -inf", FUNC(sinh) (minus_infty)); #endif + + check_eps ("sinh (0.7) == 0.7585837018...", FUNC(sinh) (0.7), + 0.75858370183953350346L, CHOOSE(6e-17L, 0, 6e-8)); } @@ -1816,7 +1859,11 @@ sincos_test (void) check_eps ("sincos (pi/3, &sin, &cos) puts 0.5 in cos", cos_res, 0.5, CHOOSE (5e-18L, 1e-15, 1e-7)); - + FUNC(sincos) (0.7, &sin_res, &cos_res); + check_eps ("sincos (0.7, &sin, &cos) puts 0.6442176872... in sin", sin_res, + 0.64421768723769105367L, CHOOSE(4e-17L, 0, 0)); + check_eps ("sincos (0.7, &sin, &cos) puts 0.7648421872... in cos", cos_res, + 0.76484218728448842626L, CHOOSE(3e-17L, 2e-16, 0)); } @@ -1832,6 +1879,8 @@ tan_test (void) check_eps ("tan (pi/4) == 1", FUNC(tan) (M_PI_4), 1, CHOOSE (2e-18L, 1e-15L, 2e-7)); + check_eps ("tan (0.7) == 0.8422883804...", FUNC(tan) (0.7), + 0.84228838046307944813L, CHOOSE(8e-17L, 0, 0)); } @@ -1845,6 +1894,8 @@ tanh_test (void) check ("tanh (+inf) == +1", FUNC(tanh) (plus_infty), 1); check ("tanh (-inf) == -1", FUNC(tanh) (minus_infty), -1); #endif + check_eps ("tanh (0.7) == 0.6043677771...", FUNC(tanh) (0.7), + 0.60436777711716349631L, CHOOSE(3e-17L, 0, 0)); } @@ -2355,7 +2406,8 @@ sqrt_test (void) check ("sqrt (6642.25) == 81.5", FUNC(sqrt) (6642.25), 81.5); check_eps ("sqrt (15239.903) == 123.45", FUNC(sqrt) (15239.903), 123.45, CHOOSE (3e-6L, 3e-6, 8e-6)); - + check_eps ("sqrt (0.7) == 0.8366600265", FUNC(sqrt) (0.7), + 0.83666002653407554798L, CHOOSE(3e-17L, 0, 0)); } static void @@ -2597,6 +2649,18 @@ cexp_test (void) result = FUNC(cexp) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(cexp(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(cexp(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(cexp) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(cexp(0.7 + i 1.2)) == 0.72969...", __real__ result, + 0.7296989091503236012L, CHOOSE(6e-17L, 0, 6e-8)); + check_eps ("imag(cexp(0.7 + i 1.2)) == 1.87689...", __imag__ result, + 1.8768962328348102821L, CHOOSE(2e-16L, 0, 0)); + + result = FUNC(cexp) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(cexp(-2 - i 3)) == --0.13398...", __real__ result, + -0.1339809149295426134L, CHOOSE(6e-20L, 0, 0)); + check_eps ("imag(cexp(-2 - i 3)) == -0.01909...", __imag__ result, + -0.0190985162611351964L, CHOOSE(4e-20L, 0, 0)); } @@ -2766,6 +2830,18 @@ csin_test (void) result = FUNC(csin) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(csin(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(csin(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(csin) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(csin(0.7 + i 1.2)) = 1.166456341...", __real__ result, + 1.1664563419657581376L, CHOOSE(2e-16L, 0, 0)); + check_eps ("imag(csin(0.7 + i 1.2)) = 1.154499724...", __imag__ result, + 1.1544997246948547371L, CHOOSE(2e-17L, 0, 0)); + + result = FUNC(csin) (BUILD_COMPLEX (-2, -3)); + check ("real(csin(-2 - i 3)) == --9.15449...", __real__ result, + -9.1544991469114295734L); + check ("imag(csin(-2 - i 3)) == -4.16890...", __imag__ result, + 4.1689069599665643507L); } @@ -2935,6 +3011,18 @@ csinh_test (void) result = FUNC(csinh) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(csinh(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(csinh(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(csinh) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(csinh(0.7 + i 1.2)) = 0.274878686...", __real__ result, + 0.27487868678117583582L, CHOOSE(2e-17L, 6e-17, 3e-8)); + check_eps ("imag(csinh(0.7 + i 1.2)) = 1.169866572...", __imag__ result, + 1.1698665727426565139L, CHOOSE(6e-17L, 0, 3e-8)); + + result = FUNC(csinh) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(csinh(-2 - i 3)) == -3.59056...", __real__ result, + 3.5905645899857799520L, CHOOSE(0, 5e-16, 0)); + check_eps ("imag(csinh(-2 - i 3)) == -0.53092...", __imag__ result, + -0.5309210862485198052L, CHOOSE(2e-19L, 2e-16, 6e-8)); } @@ -3102,6 +3190,18 @@ ccos_test (void) result = FUNC(ccos) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(ccos(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(ccos(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(ccos) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(ccos(0.7 + i 1.2)) = 1.384865764...", __real__ result, + 1.3848657645312111080L, CHOOSE(6e-19L, 3e-16, 2e-7)); + check_eps ("imag(ccos(0.7 + i 1.2)) = -0.972421703...", __imag__ result, + -0.97242170335830028619L, CHOOSE(2e-16L, 2e-16, 0)); + + result = FUNC(ccos) (BUILD_COMPLEX (-2, -3)); + check ("real(ccos(-2 - i 3)) == --4.18962...", __real__ result, + -4.1896256909688072301L); + check_eps ("imag(ccos(-2 - i 3)) == -9.10922...", __imag__ result, + -9.1092278937553365979L, CHOOSE(9e-19L, 0, 1e-6)); } @@ -3269,6 +3369,18 @@ ccosh_test (void) result = FUNC(ccosh) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(ccosh(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(ccosh(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(ccosh) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(ccosh(0.7 + i 1.2)) == 0.45482...", __real__ result, + 0.4548202223691477654L, CHOOSE(4e-17L, 6e-17, 3e-8)); + check_eps ("imag(ccosh(0.7 + i 1.2)) == 0.70702...", __imag__ result, + 0.7070296600921537682L, CHOOSE(7e-17L, 0, 0)); + + result = FUNC(ccosh) (BUILD_COMPLEX (-2, -3)); + check ("real(ccosh(-2 - i 3)) == --3.72454...", __real__ result, + -3.7245455049153225654L); + check_eps ("imag(ccosh(-2 - i 3)) == -0.51182...", __imag__ result, + 0.5118225699873846088L, CHOOSE(6e-20, 2e-16, 6e-8)); } @@ -3397,6 +3509,18 @@ cacos_test (void) result = FUNC(cacos) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(cacos(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(cacos(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(cacos) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(cacos(0.7 + i 1.2)) == 1.13518...", __real__ result, + 1.1351827477151551089L, CHOOSE(2e-17L, 3e-16, 2e-7)); + check_eps ("imag(cacos(0.7 + i 1.2)) == -1.09276...", __imag__ result, + -1.0927647857577371459L, CHOOSE(4e-17L, 0, 3e-7)); + + result = FUNC(cacos) (BUILD_COMPLEX (-2, -3)); + check ("real(cacos(-2 - i 3)) == -2.14144...", __real__ result, + 2.1414491111159960199L); + check_eps ("imag(cacos(-2 - i 3)) == -1.98338...", __imag__ result, + 1.9833870299165354323L, CHOOSE(2e-19L, 0, 0)); } @@ -3525,6 +3649,18 @@ cacosh_test (void) result = FUNC(cacosh) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(cacosh(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(cacosh(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(cacosh) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(cacosh(0.7 + i 1.2)) == 1.09276...", __real__ result, + 1.0927647857577371459L, CHOOSE(4e-17L, 3e-16, 0)); + check_eps ("imag(cacosh(0.7 + i 1.2)) == 1.13518...", __imag__ result, + 1.1351827477151551089L, CHOOSE(2e-17L, 0, 0)); + + result = FUNC(cacosh) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(cacosh(-2 - i 3)) == -1.98338...", __real__ result, + -1.9833870299165354323L, CHOOSE (6e-19, 3e-16, 9e-7)); + check_eps ("imag(cacosh(-2 - i 3)) == 2.14144...", __imag__ result, + 2.1414491111159960199L, CHOOSE (3e-19, 5e-16, 0)); } @@ -3658,6 +3794,18 @@ casin_test (void) result = FUNC(casin) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(casin(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(casin(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(casin) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(casin(0.7 + i 1.2)) == 0.43561...", __real__ result, + 0.4356135790797415103L, CHOOSE(2e-17L, 2e-16, 2e-7)); + check_eps ("imag(casin(0.7 + i 1.2)) == 1.09276...", __imag__ result, + 1.0927647857577371459L, CHOOSE(4e-17L, 0, 3e-7)); + + result = FUNC(casin) (BUILD_COMPLEX (-2, -3)); + check ("real(casin(-2 - i 3)) == --0.57065...", __real__ result, + -0.5706527843210994007L); + check_eps ("imag(casin(-2 - i 3)) == -1.98338...", __imag__ result, + -1.9833870299165354323L, CHOOSE(2e-19L, 0, 0)); } @@ -3791,6 +3939,18 @@ casinh_test (void) result = FUNC(casinh) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(casinh(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(casinh(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(casinh) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(casinh(0.7 + i 1.2)) == 0.97865...", __real__ result, + 0.9786545955936738768L, CHOOSE(5e-17L, 2e-16, 0)); + check_eps ("imag(casinh(0.7 + i 1.2)) == 0.91135...", __imag__ result, + 0.9113541895315601156L, CHOOSE(7e-19L, 0, 6e-8)); + + result = FUNC(casinh) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(casinh(-2 - i 3)) == --1.96863...", __real__ result, + -1.9686379257930962917L, CHOOSE(7e-19L, 2e-15, 2e-7)); + check_eps ("imag(casinh(-2 - i 3)) == -0.96465...", __imag__ result, + -0.9646585044076027920L, CHOOSE(4e-19L, 2e-15, 4e-7)); } @@ -3929,6 +4089,18 @@ catan_test (void) result = FUNC(catan) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(catan(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(catan(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(catan) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(catan(0.7 + i 1.2)) == 1.07857...", __real__ result, + 1.0785743834118921877L, CHOOSE (3e-17, 0, 0)); + check_eps ("imag(catan(0.7 + i 1.2)) == 0.57705...", __imag__ result, + 0.5770573776534306764L, CHOOSE(3e-17L, 0, 6e-8)); + + result = FUNC(catan) (BUILD_COMPLEX (-2, -3)); + check ("real(catan(-2 - i 3)) == -1.40992...", __real__ result, + -1.4099210495965755225L); + check_eps ("imag(catan(-2 - i 3)) == -0.22907...", __imag__ result, + -0.2290726829685387662L, CHOOSE(1e-19L, 3e-17, 2e-8)); } @@ -4067,6 +4239,18 @@ catanh_test (void) result = FUNC(catanh) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(catanh(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(catanh(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(catanh) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(catanh(0.7 + i 1.2)) == 0.26007...", __real__ result, + 0.2600749516525135959L, CHOOSE (2e-18, 0, 0)); + check_eps ("imag(catanh(0.7 + i 1.2)) == 0.97024...", __imag__ result, + 0.9702403077950989849L, CHOOSE (3e-17, 0, 0)); + + result = FUNC(catanh) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(catanh(-2 - i 3)) == -0.14694...", __real__ result, + -0.1469466662255297520L, CHOOSE (3e-20, 6e-17, 2e-8)); + check ("imag(catanh(-2 - i 3)) == -1.33897...", __imag__ result, + -1.3389725222944935611L); } @@ -4199,13 +4383,24 @@ ctan_test (void) result = FUNC(ctan) (BUILD_COMPLEX (nan_value, -0.25)); check_isnan_maybe_exc ("real(ctan(NaN -i 0.25)) = NaN plus maybe invalid exception", __real__ result, INVALID_EXCEPTION); - check_isnan ("imag(ctanh(NaN -i 0.25)) = NaN plus maybe invalid exception", + check_isnan ("imag(ctan(NaN -i 0.25)) = NaN plus maybe invalid exception", __imag__ result); result = FUNC(ctan) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(ctan(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(ctan(NaN + i NaN)) = NaN", __imag__ result); + result = FUNC(ctan) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(ctan(0.7 + i 1.2)) == 0.17207...", __real__ result, + 0.1720734197630349001L, CHOOSE(1e-17L, 3e-17, 2e-8)); + check_eps ("imag(ctan(0.7 + i 1.2)) == 0.95448...", __imag__ result, + 0.9544807059989405538L, CHOOSE(2e-17L, 2e-16, 0)); + + result = FUNC(ctan) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(ctan(-2 - i 3)) == -0.00376...", __real__ result, + 0.0037640256415042482L, CHOOSE(1e-19L, 0, 0)); + check_eps ("imag(ctan(-2 - i 3)) == -1.00323...", __imag__ result, + -1.0032386273536098014L, CHOOSE(2e-19L, 0, 2e-7)); } @@ -4347,6 +4542,18 @@ ctanh_test (void) check ("real(ctanh (0 + i pi/4)) == 0", __real__ result, 0); check_eps ("imag(ctanh (0 + i pi/4)) == 1", __imag__ result, 1, CHOOSE (0, 0, 2e-7)); + + result = FUNC(ctanh) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(ctanh(0.7 + i 1.2)) == 1.34721...", __real__ result, + 1.3472197399061191630L, CHOOSE(4e-17L, 6e-17, 2e-7)); + check_eps ("imag(ctanh(0.7 + i 1.2)) == -0.47786...", __imag__ result, + 0.4778641038326365540L, CHOOSE(9e-17L, 6e-17, 0)); + + result = FUNC(ctanh) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(ctanh(-2 - i 3)) == --0.96538...", __real__ result, + -0.9653858790221331242L, CHOOSE(2e-19L, 0, 0)); + check_eps ("imag(ctanh(-2 - i 3)) == -0.00988...", __imag__ result, + 0.0098843750383224937L, CHOOSE(2e-20L, 0, 1e-9)); } @@ -4501,6 +4708,18 @@ clog_test (void) result = FUNC(clog) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(clog(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(clog(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(clog) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(clog(0.7 + i 1.2)) == 0.32876...", __real__ result, + 0.3287600014583970919L, CHOOSE(5e-17L, 6e-17, 3e-8)); + check_eps ("imag(clog(0.7 + i 1.2)) == 1.04272...", __imag__ result, + 1.0427218783685369524L, CHOOSE(2e-17L, 0, 0)); + + result = FUNC(clog) (BUILD_COMPLEX (-2, -3)); + check ("real(clog(-2 - i 3)) == -1.28247...", __real__ result, + 1.2824746787307683680L); + check_eps ("imag(clog(-2 - i 3)) == -2.15879...", __imag__ result, + -2.1587989303424641704L, CHOOSE(3e-19L, 0, 0)); } @@ -4533,55 +4752,71 @@ clog10_test (void) result = FUNC(clog10) (BUILD_COMPLEX (minus_infty, plus_infty)); check_isinfp ("real(clog10(-Inf + i Inf)) = +Inf", __real__ result); - check ("imag(clog10(-Inf + i Inf)) = 3*pi/4", __imag__ result, M_PI - M_PI_4); + check_eps ("imag(clog10(-Inf + i Inf)) = 3*pi/4*M_LOG10E", __imag__ result, + (M_PI - M_PI_4) * M_LOG10E, CHOOSE (0, 3e-16, 0)); result = FUNC(clog10) (BUILD_COMPLEX (minus_infty, minus_infty)); check_isinfp ("real(clog10(-Inf - i Inf)) = +Inf", __real__ result); - check ("imag(clog10(-Inf - i Inf)) = -3*pi/4", __imag__ result, M_PI_4 - M_PI); + check_eps ("imag(clog10(-Inf - i Inf)) = -3*pi/4*M_LOG10E", __imag__ result, + (M_PI_4 - M_PI) * M_LOG10E, CHOOSE (0, 3e-16, 0)); result = FUNC(clog10) (BUILD_COMPLEX (plus_infty, plus_infty)); check_isinfp ("real(clog10(+Inf + i Inf)) = +Inf", __real__ result); - check ("imag(clog10(+Inf + i Inf)) = pi/4", __imag__ result, M_PI_4); + check_eps ("imag(clog10(+Inf + i Inf)) = pi/4*M_LOG10E", __imag__ result, + M_PI_4 * M_LOG10E, CHOOSE (0, 6e-17, 3e-8)); result = FUNC(clog10) (BUILD_COMPLEX (plus_infty, minus_infty)); check_isinfp ("real(clog10(+Inf - i Inf)) = +Inf", __real__ result); - check ("imag(clog10(+Inf - i Inf)) = -pi/4", __imag__ result, -M_PI_4); + check_eps ("imag(clog10(+Inf - i Inf)) = -pi/4*M_LOG10E", __imag__ result, + -M_PI_4 * M_LOG10E, CHOOSE (0, 6e-17, 3e-8)); result = FUNC(clog10) (BUILD_COMPLEX (0, plus_infty)); check_isinfp ("real(clog10(0 + i Inf)) = +Inf", __real__ result); - check ("imag(clog10(0 + i Inf)) = pi/2", __imag__ result, M_PI_2); + check_eps ("imag(clog10(0 + i Inf)) = pi/2*M_LOG10E", __imag__ result, + M_PI_2 * M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (3, plus_infty)); check_isinfp ("real(clog10(3 + i Inf)) = +Inf", __real__ result); - check ("imag(clog10(3 + i Inf)) = pi/2", __imag__ result, M_PI_2); + check_eps ("imag(clog10(3 + i Inf)) = pi/2*M_LOG10E", __imag__ result, + M_PI_2 * M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (minus_zero, plus_infty)); check_isinfp ("real(clog10(-0 + i Inf)) = +Inf", __real__ result); - check ("imag(clog10(-0 + i Inf)) = pi/2", __imag__ result, M_PI_2); + check_eps ("imag(clog10(-0 + i Inf)) = pi/2*M_LOG10E", __imag__ result, + M_PI_2 * M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (-3, plus_infty)); check_isinfp ("real(clog10(-3 + i Inf)) = +Inf", __real__ result); - check ("imag(clog10(-3 + i Inf)) = pi/2", __imag__ result, M_PI_2); + check_eps ("imag(clog10(-3 + i Inf)) = pi/2*M_LOG10E", __imag__ result, + M_PI_2 * M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (0, minus_infty)); check_isinfp ("real(clog10(0 - i Inf)) = +Inf", __real__ result); - check ("imag(clog10(0 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); + check_eps ("imag(clog10(0 - i Inf)) = -pi/2*M_LOG10E", __imag__ result, + -M_PI_2*M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (3, minus_infty)); check_isinfp ("real(clog10(3 - i Inf)) = +Inf", __real__ result); - check ("imag(clog10(3 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); + check_eps ("imag(clog10(3 - i Inf)) = -pi/2*M_LOG10E", __imag__ result, + -M_PI_2*M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (minus_zero, minus_infty)); check_isinfp ("real(clog10(-0 - i Inf)) = +Inf", __real__ result); - check ("imag(clog10(-0 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); + check_eps ("imag(clog10(-0 - i Inf)) = -pi/2*M_LOG10E", __imag__ result, + -M_PI_2 * M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (-3, minus_infty)); check_isinfp ("real(clog10(-3 - i Inf)) = +Inf", __real__ result); - check ("imag(clog10(-3 - i Inf)) = -pi/2", __imag__ result, -M_PI_2); + check_eps ("imag(clog10(-3 - i Inf)) = -pi/2*M_LOG10E", __imag__ result, + -M_PI_2 * M_LOG10E, CHOOSE (0, 2e-16, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (minus_infty, 0)); check_isinfp ("real(clog10(-Inf + i0)) = +Inf", __real__ result); - check ("imag(clog10(-Inf + i0)) = pi", __imag__ result, M_PI); + check_eps ("imag(clog10(-Inf + i0)) = pi*M_LOG10E", __imag__ result, + M_PI * M_LOG10E, CHOOSE (0, 3e-16, 2e-7)); result = FUNC(clog10) (BUILD_COMPLEX (minus_infty, 1)); check_isinfp ("real(clog10(-Inf + i1)) = +Inf", __real__ result); - check ("imag(clog10(-Inf + i1)) = pi", __imag__ result, M_PI); + check_eps ("imag(clog10(-Inf + i1)) = pi*M_LOG10E", __imag__ result, + M_PI * M_LOG10E, CHOOSE (0, 3e-16, 2e-7)); result = FUNC(clog10) (BUILD_COMPLEX (minus_infty, minus_zero)); check_isinfp ("real(clog10(-Inf - i0)) = +Inf", __real__ result); - check ("imag(clog10(-Inf - i0)) = -pi", __imag__ result, -M_PI); + check_eps ("imag(clog10(-Inf - i0)) = -pi*M_LOG10E", __imag__ result, + -M_PI * M_LOG10E, CHOOSE (0, 3e-16, 2e-7)); result = FUNC(clog10) (BUILD_COMPLEX (minus_infty, -1)); check_isinfp ("real(clog10(-Inf - i1)) = +Inf", __real__ result); - check ("imag(clog10(-Inf - i1)) = -pi", __imag__ result, -M_PI); + check_eps ("imag(clog10(-Inf - i1)) = -pi*M_LOG10E", __imag__ result, + -M_PI * M_LOG10E, CHOOSE (0, 3e-16, 2e-7)); result = FUNC(clog10) (BUILD_COMPLEX (plus_infty, 0)); check_isinfp ("real(clog10(+Inf + i0)) = +Inf", __real__ result); @@ -4655,6 +4890,18 @@ clog10_test (void) result = FUNC(clog10) (BUILD_COMPLEX (nan_value, nan_value)); check_isnan ("real(clog10(NaN + i NaN)) = NaN", __real__ result); check_isnan ("imag(clog10(NaN + i NaN)) = NaN", __imag__ result); + + result = FUNC(clog10) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(clog10(0.7 + i 1.2)) == 0.14277...", __real__ result, + 0.1427786545038868803L, CHOOSE(2e-17L, 6e-17, 2e-8)); + check_eps ("imag(clog10(0.7 + i 1.2)) == 0.45284...", __imag__ result, + 0.4528483579352493248L, CHOOSE(6e-18, 6e-17, 3e-8)); + + result = FUNC(clog10) (BUILD_COMPLEX (-2, -3)); + check ("real(clog10(-2 - i 3)) == -0.55697...", __real__ result, + 0.5569716761534183846L); + check_eps ("imag(clog10(-2 - i 3)) == -0.93755...", __imag__ result, + -0.9375544629863747085L, CHOOSE (6e-20, 2e-16, 0)); } @@ -4809,6 +5056,18 @@ csqrt_test (void) result = FUNC(csqrt) (BUILD_COMPLEX (119, 120)); check ("real(csqrt(119 + i 120) = 12", __real__ result, 12); check ("imag(csqrt(119 + i 120) = 5", __imag__ result, 5); + + result = FUNC(csqrt) (BUILD_COMPLEX (0.7, 1.2)); + check_eps ("real(csqrt(0.7 + i 1.2)) == 1.02206...", __real__ result, + 1.0220676100300264507L, CHOOSE(3e-17L, 3e-16, 2e-7)); + check_eps ("imag(csqrt(0.7 + i 1.2)) == 0.58704...", __imag__ result, + 0.5870453129635652115L, CHOOSE(7e-18L, 0, 0)); + + result = FUNC(csqrt) (BUILD_COMPLEX (-2, -3)); + check_eps ("real(csqrt(-2 - i 3)) == -0.89597...", __real__ result, + 0.8959774761298381247L, CHOOSE(6e-20L, 2e-16, 6e-8)); + check ("imag(csqrt(-2 - i 3)) == -1.67414...", __imag__ result, + -1.6741492280355400404L); } |