This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

AArch64 patches for glibc master.


Marcus,

Attached are the AArch64 patches I've used to build trunk AArch64 glibc
against trunk Linux kernel.

Problems:

* Ran `make regen-ulps' and used that as the baseline for math failures
  with new hardware. New ULPS look OK. Not a problem, per se, but you 
  need to update ULPS.

* New kernel headers define __NR_pwrite and __NR_pwrite64, which means
  glibc doesn't know which to choose so it fails to build pwrite64.
  I adjusted the headers so that this only fails if they are distinct
  syscall numbers. In AArch64's case they are the same values defined
  by the UAPI headers.

* Likewise for pwrite.

* Likewise for pread.

* Likewise for pread64.

* For llseek AArch64 doesn't provide its own llseek.c that does nothing
  so the default llseek tries to build and with the UAPI headers
  not defining __NR_llseek because compat is disabled it fails to build.
  I added code to check for this case. That is to say if it's a 64-bit
  machine with no llseek, it means that lseek is already 64-bit ready
  so use that.

These are hacks. You'll have to take these and polish them. I'm giving
these to you because I think you'd find them useful and I've already
done the work but don't have further time to cleanup.

To reproduce the environment:

#!/bin/bash
# Install the latest linux kernel headers.
cd linux
make headers_install INSTALL_HDR_PATH="$HOME/build-headers/" 
# Copy the required selinux headers.
cp -R /usr/include/selinux "$HOME/build-headers/include/"
# Install syscall.h which is a circular dependency. glibc builds
# it but the tests need it before it's installed.
mkdir $HOME/build-headers/include/bits
cp /usr/include/bits/syscall.h $HOME/build-headers/include/bits
# ... then configure glibc with --with-headers="$HOME/build-headers/include"

For your own information the test results were:

make[2]: *** [/localhome/codonell/build/glibc/math/test-fenv.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/basic-test.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/test-fenv-tls.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/test-ldouble.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/test-ildoubl.out] Error 1

	- Unknown.

make[1]: *** [stdio-common/tests] Error 2
make[2]: [/localhome/codonell/build/glibc/posix/annexc.out] Error 1 (ignored)
make[2]: *** [/localhome/codonell/build/glibc/nptl/tst-cond16.out] Error 1 (Carlos: Spurious)

	- Unknown.

make[2]: *** [/localhome/codonell/build/glibc/nptl/tst-eintr1.out] Error 1

	- Known kernel issue with hitting nproc limit on a fast system.

make[1]: *** [nptl/tests] Error 2
make[2]: *** [/localhome/codonell/build/glibc/rt/tst-mqueue5.out] Error 1 (Carlos: Spurious)

	- Unknown.

make[1]: *** [rt/tests] Error 2

Pretty good overall. The two spurious issues are problematic and require
analysis. I've seen tst-mqueue5 on other targets with weakly ordered memory
e.g. ppc64.

You should fix the build failures for 2.19 though. You have until the end
of December to get these fixes in place before the release code freeze.
After the freeze you can still get them in but you need explicit ACK from
the release manager (Allan McRae).

Shout if you need help.

Cheers,
Carlos.
diff --git a/ports/sysdeps/aarch64/libm-test-ulps b/ports/sysdeps/aarch64/libm-test-ulps
index 79afb31..32f18f3 100644
--- a/ports/sysdeps/aarch64/libm-test-ulps
+++ b/ports/sysdeps/aarch64/libm-test-ulps
@@ -7,6 +7,11 @@ ifloat: 1
 Test "acos_downward (-0.5)":
 double: 1
 idouble: 1
+Test "acos_downward (-0x8p-4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "acos_downward (-1)":
 float: 1
 ifloat: 1
@@ -28,6 +33,11 @@ ifloat: 1
 Test "acos_towardzero (-0.5)":
 double: 1
 idouble: 1
+Test "acos_towardzero (-0x8p-4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "acos_towardzero (-1)":
 float: 1
 ifloat: 1
@@ -43,15 +53,43 @@ ildouble: 1
 ldouble: 1
 
 # acos_upward
+Test "acos_upward (+0)":
+double: 1
+idouble: 1
 Test "acos_upward (-0)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
+Test "acos_upward (-0x1p+0)":
+double: 1
+idouble: 1
 Test "acos_upward (-1)":
 ildouble: 1
 ldouble: 1
 Test "acos_upward (0)":
 ildouble: 1
 ldouble: 1
+Test "acos_upward (0x1.70ef54646d496p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0x1.70ef54646d497p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0x1.70ef54p-56)":
+double: 1
+idouble: 1
+Test "acos_upward (0x1.70ef56p-56)":
+double: 1
+idouble: 1
+
+# asin
+Test "asin (-0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
 
 # asin_downward
 Test "asin_downward (-0.5)":
@@ -59,6 +97,39 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "asin_downward (-0x1p+0)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0x8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.ffffffffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffffffffp-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_downward (-0xf.fffffp-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
 Test "asin_downward (-1.0)":
 ildouble: 1
 ldouble: 1
@@ -67,28 +138,99 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "asin_downward (0x8p-4)":
+float: 1
+ifloat: 1
+Test "asin_downward (0xcp-4)":
+ildouble: 1
+ldouble: 1
 Test "asin_downward (1.0)":
 float: 1
 ifloat: 1
 
+# asin_tonearest
+Test "asin_tonearest (-0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_tonearest (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+
 # asin_towardzero
 Test "asin_towardzero (-0.5)":
 double: 1
 idouble: 1
+Test "asin_towardzero (-0x1p+0)":
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x8p-4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
 Test "asin_towardzero (-1.0)":
 float: 1
 ifloat: 1
 Test "asin_towardzero (0.5)":
 double: 1
 idouble: 1
+Test "asin_towardzero (0x8p-4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (0xcp-4)":
+ildouble: 1
+ldouble: 1
 Test "asin_towardzero (1.0)":
 float: 1
 ifloat: 1
 
 # asin_upward
+Test "asin_upward (-0x1p+0)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x8p-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.ffffffffffff8p-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffffffffffffp-4)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffffffffp-4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0xf.fffffp-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "asin_upward (-1.0)":
 float: 1
 ifloat: 1
+Test "asin_upward (0x1p+0)":
+double: 1
+idouble: 1
 Test "asin_upward (1.0)":
 ildouble: 1
 ldouble: 1
@@ -120,6 +262,9 @@ ldouble: 1
 Test "atanh (0.75)":
 float: 1
 ifloat: 1
+Test "atanh (0xcp-4)":
+float: 1
+ifloat: 1
 
 # cacos
 Test "Imaginary part of: cacos (+0 + 0.5 i)":
@@ -6043,12 +6188,29 @@ ifloat: 1
 Test "cbrt (-0.001)":
 ildouble: 1
 ldouble: 1
+Test "cbrt (-0x1.bp+4)":
+double: 1
+idouble: 1
+Test "cbrt (-0x4.189374bc6a7ecp-12)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.189374bc6a7ef9ep-12)":
+ildouble: 1
+ldouble: 1
+Test "cbrt (-0x4.18937p-12)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "cbrt (-27.0)":
 double: 1
 idouble: 1
 Test "cbrt (0.9921875)":
 double: 1
 idouble: 1
+Test "cbrt (0xf.ep-4)":
+double: 1
+idouble: 1
 
 # ccos
 Test "Imaginary part of: ccos (-0.75 + 11357.25 i)":
@@ -6839,12 +7001,47 @@ idouble: 1
 ifloat: 1
 
 # cos
+Test "cos (0x1.921fb54442d1846ap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos (0x1.921fb54442d18p+0)":
+ildouble: 1
+ldouble: 1
 Test "cos (0x1p+120)":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "cos (0x1p+127)":
 float: 1
 ifloat: 1
+Test "cos (0x1p+28)":
+ildouble: 1
+ldouble: 1
+Test "cos (0x2.182a4705ae6cb08cb7665c1eacf6p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos (0x2.182a4705ae6ccp+0)":
+ildouble: 1
+ldouble: 1
+Test "cos (0x3p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos (0x7p+0)":
+float: 1
+ifloat: 1
+Test "cos (0x8p+124)":
+float: 1
+ifloat: 1
+Test "cos (0xap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos (0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "cos (0xf.ffffffffffffbffffffffffffcp+1020)":
+ildouble: 1
+ldouble: 1
 Test "cos (M_PI_6l * 2.0)":
 double: 1
 idouble: 1
@@ -6857,1393 +7054,2932 @@ ildouble: 1
 ldouble: 1
 
 # cos_downward
-Test "cos_downward (1)":
+Test "cos_downward (0x1.000000cf4a2a2p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.0000010b239a9p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.00000162a932bp+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.000002d452a1p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.000002p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
-Test "cos_downward (10)":
-ildouble: 1
-ldouble: 1
-Test "cos_downward (2)":
+Test "cos_downward (0x1.000004p+0)":
 float: 1
 ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (3)":
+Test "cos_downward (0x1.000006p+0)":
 float: 1
 ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "cos_downward (4)":
+Test "cos_downward (0x1.0c1522p+0)":
 float: 1
 ifloat: 1
-Test "cos_downward (5)":
+Test "cos_downward (0x1.0c152382d7365p+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x1.0c1524p+0)":
 float: 1
 ifloat: 1
+Test "cos_downward (0x1.921fb4p+0)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "cos_downward (0x1.921fb54442d18468p+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_downward (6)":
+Test "cos_downward (0x1.921fb54442d18469898cc517018p+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_downward (7)":
-float: 1
-ifloat: 1
+Test "cos_downward (0x1.921fb54442d18469898cc51701b8p+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_downward (8)":
+Test "cos_downward (0x1.921fb54442d18469898cc51702p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d1846ap+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb54442d18p+0)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cos_downward (0x1.921fb54442d19p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x1.921fb6p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 2
 ldouble: 2
-
-# cos_tonearest
-Test "cos_tonearest (7)":
+Test "cos_downward (0x1p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
-
-# cos_towardzero
-Test "cos_towardzero (10)":
+Test "cos_downward (0x1p+120)":
+float: 2
+ifloat: 2
 ildouble: 1
 ldouble: 1
-Test "cos_towardzero (2)":
-float: 1
-ifloat: 1
+Test "cos_downward (0x1p+28)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-Test "cos_towardzero (3)":
+Test "cos_downward (0x2.182a44p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+Test "cos_downward (0x2.182a4705ae6cap+0)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.182a4705ae6cb08cb7665c1eacf4p+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_towardzero (5)":
-float: 1
-ifloat: 1
+Test "cos_downward (0x2.182a4705ae6cb08cb7665c1eacf6p+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_towardzero (6)":
+Test "cos_downward (0x2.182a4705ae6cb08cb7665c1eadp+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_towardzero (7)":
-float: 1
-ifloat: 1
+Test "cos_downward (0x2.182a4705ae6cb08cp+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_towardzero (8)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-# cos_upward
-Test "cos_upward (1)":
+Test "cos_downward (0x2.182a4705ae6cb09p+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_upward (10)":
-float: 1
-ifloat: 1
-Test "cos_upward (4)":
+Test "cos_downward (0x2.182a4705ae6ccp+0)":
 ildouble: 1
 ldouble: 1
-Test "cos_upward (6)":
+Test "cos_downward (0x2.182a48p+0)":
 float: 1
 ifloat: 1
-Test "cos_upward (7)":
+Test "cos_downward (0x2.1e19e0c9bab24p+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.1e19e4p+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2.1e19ep+72)":
+double: 1
+idouble: 1
+Test "cos_downward (0x2p+0)":
 float: 1
 ifloat: 1
-Test "cos_upward (9)":
-float: 2
-ifloat: 2
 ildouble: 1
 ldouble: 1
-
-# cosh_downward
-Test "cosh_downward (22)":
+Test "cos_downward (0x3p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "cosh_downward (23)":
+Test "cos_downward (0x4p+48)":
+double: 1
+idouble: 1
+Test "cos_downward (0x8p+0)":
 float: 1
 ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "cos_downward (0x8p+1020)":
 ildouble: 1
 ldouble: 1
-Test "cosh_downward (24)":
+Test "cos_downward (0x9p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-
-# cosh_tonearest
-Test "cosh_tonearest (22)":
-ildouble: 1
-ldouble: 1
-
-# cosh_towardzero
-Test "cosh_towardzero (22)":
+Test "cos_downward (0xa.217bap+12)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "cosh_towardzero (23)":
+Test "cos_downward (0xap+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "cosh_towardzero (24)":
+Test "cos_downward (0xc.d4966d92d1708p-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xc.d4966d92d171p-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xc.d4966p-4)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "cos_downward (0xc.d4967p-4)":
 float: 1
 ifloat: 1
+Test "cos_downward (0xcp-4)":
+double: 1
+idouble: 1
+Test "cos_downward (0xf.ffffffffffff8p+1020)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-
-# cosh_upward
-Test "cosh_upward (22)":
+Test "cos_downward (0xf.ffffffffffffbffffffffffffcp+1020)":
 ildouble: 1
 ldouble: 1
-Test "cosh_upward (23)":
+Test "cos_downward (0xf.fffffp+124)":
+double: 1
+idouble: 1
+Test "cos_downward (1)":
+float: 1
+ifloat: 1
+Test "cos_downward (10)":
 ildouble: 1
 ldouble: 1
-Test "cosh_upward (24)":
+Test "cos_downward (2)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-
-# cpow
-Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)":
+Test "cos_downward (3)":
 float: 1
 ifloat: 1
-Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i)":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-ildouble: 4
-ldouble: 4
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i)":
+Test "cos_downward (4)":
+float: 1
+ifloat: 1
+Test "cos_downward (5)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i)":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 2
-ldouble: 2
-Test "Real part of: cpow (2 + 0 i, 10 + 0 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: cpow (2 + 3 i, 4 + 0 i)":
-double: 1
-float: 5
-idouble: 1
-ifloat: 5
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i)":
-float: 2
-ifloat: 2
-Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
+Test "cos_downward (6)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (7)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "cos_downward (8)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
 
-# csin
-Test "Real part of: csin (-0.75 + 11357.25 i)":
+# cos_tonearest
+Test "cos_tonearest (0x1.921fb54442d1846ap+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (-0.75 + 710.5 i)":
-double: 1
-idouble: 1
+Test "cos_tonearest (0x1.921fb54442d18p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (-0.75 + 89.5 i)":
+Test "cos_tonearest (0x1p+120)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csin (-0.75 + 89.5 i)":
+Test "cos_tonearest (0x1p+28)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (-0.75 - 11357.25 i)":
+Test "cos_tonearest (0x2.182a4705ae6cb08cb7665c1eacf6p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (-0.75 - 710.5 i)":
-double: 1
-idouble: 1
+Test "cos_tonearest (0x2.182a4705ae6ccp+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (-0.75 - 89.5 i)":
+Test "cos_tonearest (0x3p+0)":
+ildouble: 1
+ldouble: 1
+Test "cos_tonearest (0x7p+0)":
 float: 1
 ifloat: 1
+Test "cos_tonearest (0x8p+124)":
+float: 1
+ifloat: 1
+Test "cos_tonearest (0xap+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csin (-0.75 - 89.5 i)":
+Test "cos_tonearest (0xf.ffffffffffff8p+1020)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csin (-2 - 3 i)":
+Test "cos_tonearest (0xf.ffffffffffffbffffffffffffcp+1020)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0.75 + 1.25 i)":
+Test "cos_tonearest (7)":
+float: 1
+ifloat: 1
+
+# cos_towardzero
+Test "cos_towardzero (0x1.000000cf4a2a2p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.0000010b239a9p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.00000162a932bp+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.000002d452a1p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.000002p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.0c152382d7365p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.921fb54442d18469898cc51701b8p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0.75 + 11357.25 i)":
+Test "cos_towardzero (0x1.921fb54442d18469898cc51701b9p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0.75 + 710.5 i)":
+Test "cos_towardzero (0x1.921fb54442d18p+0)":
 double: 1
 idouble: 1
+Test "cos_towardzero (0x1.921fb54442d19p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1.921fb6p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0.75 + 89.5 i)":
+Test "cos_towardzero (0x1p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x1p+120)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+Test "cos_towardzero (0x2.182a44p+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csin (0.75 + 89.5 i)":
+Test "cos_towardzero (0x2.182a4705ae6cap+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0.75 - 11357.25 i)":
+Test "cos_towardzero (0x2.182a4705ae6cb08cb7665c1eacp+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0.75 - 710.5 i)":
+Test "cos_towardzero (0x2.182a4705ae6ccp+0)":
 double: 1
 idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: csin (0.75 - 89.5 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csin (0.75 - 89.5 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i)":
+Test "cos_towardzero (0x2.182a48p+0)":
 double: 1
 idouble: 1
-Test "Real part of: csin (0x1p-16434 + 22730 i)":
 ildouble: 1
 ldouble: 1
-
-# csinh
-Test "Imaginary part of: csinh (-11357.25 + 0.75 i)":
+Test "cos_towardzero (0x2.1e19e0c9bab24p+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19e4p+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2.1e19ep+72)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x2p+0)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x4p+0)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csinh (-11357.25 - 0.75 i)":
+Test "cos_towardzero (0x4p+48)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0x8p+0)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: csinh (-2 - 3 i)":
+Test "cos_towardzero (0x8p+1020)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xa.217bap+12)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csinh (-2 - 3 i)":
+Test "cos_towardzero (0xc.d4966d92d1708p-4)":
 double: 1
 idouble: 1
-Test "Imaginary part of: csinh (-710.5 + 0.75 i)":
+Test "cos_towardzero (0xc.d4966d92d171p-4)":
 double: 1
 idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (-710.5 - 0.75 i)":
+Test "cos_towardzero (0xc.d4966p-4)":
 double: 1
 idouble: 1
+Test "cos_towardzero (0xcp-4)":
+double: 1
+idouble: 1
+Test "cos_towardzero (0xf.fffffp+124)":
+double: 1
+idouble: 1
+Test "cos_towardzero (10)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csinh (-89.5 + 0.75 i)":
+Test "cos_towardzero (2)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csinh (-89.5 + 0.75 i)":
+Test "cos_towardzero (3)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: csinh (-89.5 - 0.75 i)":
+Test "cos_towardzero (5)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csinh (-89.5 - 0.75 i)":
+Test "cos_towardzero (6)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (7)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: csinh (0.75 + 1.25 i)":
+Test "cos_towardzero (8)":
 float: 1
 ifloat: 1
-Test "Imaginary part of: csinh (0.75 + 1.25 i)":
+ildouble: 2
+ldouble: 2
+
+# cos_upward
+Test "cos_upward (-0x2p+64)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.000002p+0)":
 float: 1
 ifloat: 1
-Test "Imaginary part of: csinh (11357.25 + 0.75 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (11357.25 - 0.75 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)":
+Test "cos_upward (0x1.000004p+0)":
 double: 1
+float: 1
 idouble: 1
-Test "Imaginary part of: csinh (22730 + 0x1p-16434 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (710.5 + 0.75 i)":
+ifloat: 1
+Test "cos_upward (0x1.000005bc7d86dp+0)":
 double: 1
 idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (710.5 - 0.75 i)":
+Test "cos_upward (0x1.000006p+0)":
 double: 1
+float: 1
 idouble: 1
-ildouble: 1
-ldouble: 1
-Test "Real part of: csinh (89.5 + 0.75 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csinh (89.5 + 0.75 i)":
+ifloat: 1
+Test "cos_upward (0x1.0c1522p+0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "cos_upward (0x1.0c152382d7366p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.0c1524p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x1.921fb4p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: csinh (89.5 - 0.75 i)":
+Test "cos_upward (0x1.921fb54442d18468p+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csinh (89.5 - 0.75 i)":
-float: 1
-ifloat: 1
+Test "cos_upward (0x1.921fb54442d18469898cc517018p+0)":
 ildouble: 1
 ldouble: 1
-
-# csqrt
-Test "Real part of: csqrt (-0x1.0000000000000000000000000001p-16382 - 0x1.0000000000000000000000000001p-16382 i)":
+Test "cos_upward (0x1.921fb54442d18469898cc51701b9p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csqrt (-0x1.0000000000000002p-16382 - 0x1.0000000000000002p-16382 i)":
+Test "cos_upward (0x1.921fb54442d18469898cc51702p+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (-0x1.0000000000000002p-16382 - 0x1.0000000000000002p-16382 i)":
+Test "cos_upward (0x1.921fb54442d1846ap+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csqrt (-0x1.0000000000001p-1022 - 0x1.0000000000001p-1022 i)":
+Test "cos_upward (0x1.921fb54442d18p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csqrt (-0x1.000002p-126 - 0x1.000002p-126 i)":
+Test "cos_upward (0x1.921fb54442d19p+0)":
 double: 1
 idouble: 1
-Test "Real part of: csqrt (-2 + 3 i)":
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x1.921fb6p+0)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: csqrt (-2 - 3 i)":
+Test "cos_upward (0x1p+0)":
 float: 1
 ifloat: 1
+Test "cos_upward (0x1p+120)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0.75 + 1.25 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x1.0000000000000000000000000001p-16382 + 0x1.0000000000000000000000000001p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: csqrt (0x1.0000000000000002p-16382 + 0x1.0000000000000002p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x1.0000000000000002p-16382 + 0x1.0000000000000002p-16382 i)":
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: csqrt (0x1.0000000000001p-1022 + 0x1.0000000000001p-1022 i)":
+Test "cos_upward (0x1p+28)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1.000002p-126 + 0x1.000002p-126 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x1.fffffep+127 + 1.0 i)":
+Test "cos_upward (0x2.182a44p+0)":
 float: 1
 ifloat: 1
-Test "Real part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)":
-double: 1
-idouble: 1
-Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)":
-double: 1
-idouble: 1
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x2.182a4705ae6cap+0)":
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eacf4p+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1p+1023 i)":
-double: 1
-idouble: 1
+Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eacf6p+0)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csqrt (0x1.fp+16383 + 0x1.fp+16383 i)":
+Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eacp+0)":
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x2.182a4705ae6cb08cb7665c1eadp+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1.fp+16383 + 0x1.fp+16383 i)":
+Test "cos_upward (0x2.182a4705ae6cb08cp+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1.fp+16383 + 0x1p+16383 i)":
+Test "cos_upward (0x2.182a4705ae6cb09p+0)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-16440 + 0x1p-16441 i)":
+Test "cos_upward (0x2.182a4705ae6ccp+0)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-
-# ctan
-Test "Real part of: ctan (-2 - 3 i)":
+Test "cos_upward (0x2.182a48p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
-Test "Imaginary part of: ctan (-2 - 3 i)":
+ildouble: 2
+ldouble: 2
+Test "cos_upward (0x2.1e19e4p+72)":
+float: 1
+ifloat: 1
+Test "cos_upward (0x2p+0)":
 double: 1
+float: 1
 idouble: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (0.75 + 1.25 i)":
+Test "cos_upward (0x2p+64)":
+double: 1
+idouble: 1
+Test "cos_upward (0x3p+0)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctan (0.75 + 1.25 i)":
+Test "cos_upward (0x4p+0)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
 ildouble: 2
 ldouble: 2
-Test "Real part of: ctan (0x1p1023 + 1 i)":
+Test "cos_upward (0x5p+0)":
 double: 1
 idouble: 1
-Test "Imaginary part of: ctan (0x1p1023 + 1 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan (0x1p127 + 1 i)":
+Test "cos_upward (0x6p+0)":
+double: 1
+idouble: 1
+Test "cos_upward (0x7p+0)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan (0x1p127 + 1 i)":
+Test "cos_upward (0x8p+0)":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (0x1p16383 + 1 i)":
+Test "cos_upward (0x8p+1020)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctan (0x1p16383 + 1 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan (0x3.243f6cp-1 + 0 i)":
+Test "cos_upward (0x8p+124)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
+Test "cos_upward (0x9p+0)":
+float: 2
+ifloat: 2
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (1 + 355 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan (1 + 365 i)":
-ildouble: 1
-ldouble: 1
-Test "Real part of: ctan (1 + 45 i)":
+Test "cos_upward (0xa.217bap+12)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
 ildouble: 2
 ldouble: 2
-Test "Real part of: ctan (1 + 47 i)":
+Test "cos_upward (0xap+0)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-
-# ctan_downward
-Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
-ildouble: 4
-ldouble: 4
-Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)":
-double: 2
+Test "cos_upward (0xc.d4966p-4)":
 float: 1
-idouble: 2
 ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)":
+Test "cos_upward (0xc.d4967p-4)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
-ildouble: 5
-ldouble: 5
-
-# ctan_tonearest
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+Test "cos_upward (0xf.ffffcp+124)":
+double: 1
+idouble: 1
+Test "cos_upward (0xf.ffffffffffff8p+1020)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)":
+Test "cos_upward (0xf.ffffffffffffbffffffffffffcp+1020)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (1)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (10)":
 float: 1
 ifloat: 1
+Test "cos_upward (4)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)":
+Test "cos_upward (6)":
 float: 1
 ifloat: 1
-ildouble: 2
-ldouble: 2
+Test "cos_upward (7)":
+float: 1
+ifloat: 1
+Test "cos_upward (9)":
+float: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
 
-# ctan_towardzero
-Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+# cosh
+Test "cosh (-0x2.c5e3acp+8)":
+double: 1
+idouble: 1
+Test "cosh (0x1.6p+4)":
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+Test "cosh (0x2.c5e3acp+8)":
+double: 1
+idouble: 1
+
+# cosh_downward
+Test "cosh_downward (-0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_downward (0x1.6p+4)":
+double: 1
+idouble: 1
+Test "cosh_downward (0x1.7p+4)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)":
+Test "cosh_downward (0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_downward (22)":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)":
+ildouble: 1
+ldouble: 1
+Test "cosh_downward (23)":
 float: 1
 ifloat: 1
-ildouble: 5
-ldouble: 5
-
-# ctan_upward
-Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+Test "cosh_downward (24)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+
+# cosh_tonearest
+Test "cosh_tonearest (-0x2.c5e3acp+8)":
 double: 1
 idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)":
+Test "cosh_tonearest (0x1.6p+4)":
+ildouble: 1
+ldouble: 1
+Test "cosh_tonearest (0x2.c5e3acp+8)":
 double: 1
-float: 2
 idouble: 1
-ifloat: 2
+Test "cosh_tonearest (22)":
+ildouble: 1
+ldouble: 1
 
-# ctanh
-Test "Real part of: ctanh (-2 - 3 i)":
+# cosh_towardzero
+Test "cosh_towardzero (-0x2.c5e3bp+8)":
 double: 1
-float: 2
 idouble: 1
-ifloat: 2
-Test "Imaginary part of: ctanh (-2 - 3 i)":
+Test "cosh_towardzero (0x1.6p+4)":
 double: 1
 idouble: 1
-Test "Imaginary part of: ctanh (0 + 0x3.243f6cp-1 i)":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "Imaginary part of: ctanh (0 + pi/4 i)":
+Test "cosh_towardzero (0x1.7p+4)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctanh (0.75 + 1.25 i)":
+Test "cosh_towardzero (0x2.c5e3bp+8)":
 double: 1
 idouble: 1
-Test "Imaginary part of: ctanh (0.75 + 1.25 i)":
+Test "cosh_towardzero (22)":
 float: 1
 ifloat: 1
-Test "Real part of: ctanh (1 + 0x1p1023 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh (1 + 0x1p1023 i)":
-double: 1
-idouble: 1
-Test "Real part of: ctanh (1 + 0x1p127 i)":
-double: 1
+ildouble: 1
+ldouble: 1
+Test "cosh_towardzero (23)":
 float: 1
-idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (1 + 0x1p127 i)":
+Test "cosh_towardzero (24)":
 float: 1
 ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh (1 + 0x1p16383 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh (1 + 0x1p16383 i)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (355 + 1 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh (365 + 1 i)":
+
+# cosh_upward
+Test "cosh_upward (-0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_upward (0x1.6p+4)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (45 + 1 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh (47 + 1 i)":
+Test "cosh_upward (0x1.8p+4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (0x2.c5e3bp+8)":
+double: 1
+idouble: 1
+Test "cosh_upward (22)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (23)":
+ildouble: 1
+ldouble: 1
+Test "cosh_upward (24)":
 ildouble: 1
 ldouble: 1
 
-# ctanh_downward
-Test "Real part of: ctanh_downward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_downward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-ildouble: 4
-ldouble: 4
-Test "Real part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)":
+# cpow
+Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)":
 float: 1
 ifloat: 1
-ildouble: 5
-ldouble: 5
-Test "Imaginary part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)":
+Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i)":
+double: 1
+float: 4
+idouble: 1
+ifloat: 4
+ildouble: 4
+ldouble: 4
+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i)":
 double: 2
-float: 1
+float: 3
 idouble: 2
-ifloat: 1
+ifloat: 3
 ildouble: 2
 ldouble: 2
-Test "Imaginary part of: ctanh_downward (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+Test "Real part of: cpow (2 + 0 i, 10 + 0 i)":
 ildouble: 2
 ldouble: 2
-
-# ctanh_tonearest
-Test "Real part of: ctanh_tonearest (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_tonearest (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-ildouble: 3
-ldouble: 3
-Test "Real part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
+Test "Real part of: cpow (2 + 3 i, 4 + 0 i)":
+double: 1
+float: 5
+idouble: 1
+ifloat: 5
 ildouble: 2
 ldouble: 2
-Test "Imaginary part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
+Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i)":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i)":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctanh_tonearest (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+
+# csin
+Test "Real part of: csin (-0.75 + 11357.25 i)":
 ildouble: 1
 ldouble: 1
-
-# ctanh_towardzero
-Test "Real part of: ctanh_towardzero (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-ildouble: 2
-ldouble: 2
-Test "Imaginary part of: ctanh_towardzero (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+Test "Real part of: csin (-0.75 + 710.5 i)":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)":
-float: 1
-ifloat: 1
-ildouble: 5
-ldouble: 5
-Test "Imaginary part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)":
+Test "Real part of: csin (-0.75 + 89.5 i)":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ctanh_towardzero (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
 ildouble: 1
 ldouble: 1
-
-# ctanh_upward
-Test "Real part of: ctanh_upward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-ildouble: 3
-ldouble: 3
-Test "Imaginary part of: ctanh_upward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)":
+Test "Imaginary part of: csin (-0.75 + 89.5 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (-0.75 - 11357.25 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (-0.75 - 710.5 i)":
 double: 1
-float: 2
 idouble: 1
-ifloat: 2
-Test "Imaginary part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)":
-double: 2
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (-0.75 - 89.5 i)":
 float: 1
-idouble: 2
 ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "Real part of: ctanh_upward (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh_upward (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+Test "Imaginary part of: csin (-0.75 - 89.5 i)":
 ildouble: 1
 ldouble: 1
-
-# erf
-Test "erf (1.25)":
+Test "Imaginary part of: csin (-2 - 3 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 + 1.25 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 + 11357.25 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 + 710.5 i)":
 double: 1
 idouble: 1
-
-# erfc
-Test "erfc (0.75)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 + 89.5 i)":
 float: 1
 ifloat: 1
-Test "erfc (0x1.f7303cp+1)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: csin (0.75 + 89.5 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 - 11357.25 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 - 710.5 i)":
 double: 1
 idouble: 1
-Test "erfc (0x1.ffa002p+2)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csin (0.75 - 89.5 i)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "erfc (0x1.ffffc8p+2)":
+Test "Imaginary part of: csin (0.75 - 89.5 i)":
 ildouble: 1
 ldouble: 1
-Test "erfc (2.0)":
+Test "Real part of: csin (0x1p-1074 + 1440 i)":
 double: 1
 idouble: 1
-Test "erfc (27.0)":
+Test "Real part of: csin (0x1p-16434 + 22730 i)":
 ildouble: 1
 ldouble: 1
-Test "erfc (4.125)":
-double: 1
-idouble: 1
 
-# exp10
-Test "exp10 (-1)":
-double: 1
-idouble: 1
-Test "exp10 (-305)":
+# csinh
+Test "Imaginary part of: csinh (-11357.25 + 0.75 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: csinh (-11357.25 - 0.75 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csinh (-2 - 3 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: csinh (-2 - 3 i)":
 double: 1
 idouble: 1
-Test "exp10 (-36)":
+Test "Imaginary part of: csinh (-710.5 + 0.75 i)":
 double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
-Test "exp10 (3)":
-double: 1
-idouble: 1
-Test "exp10 (36)":
+Test "Imaginary part of: csinh (-710.5 - 0.75 i)":
 double: 1
 idouble: 1
-Test "exp10 (4932)":
 ildouble: 1
 ldouble: 1
-
-# exp2
-Test "exp2 (100.5)":
+Test "Real part of: csinh (-89.5 + 0.75 i)":
 ildouble: 1
 ldouble: 1
-
-# exp_downward
-Test "exp_downward (2)":
+Test "Imaginary part of: csinh (-89.5 + 0.75 i)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "exp_downward (3)":
-float: 1
-ifloat: 1
+Test "Real part of: csinh (-89.5 - 0.75 i)":
 ildouble: 1
 ldouble: 1
-
-# exp_towardzero
-Test "exp_towardzero (2)":
+Test "Imaginary part of: csinh (-89.5 - 0.75 i)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "exp_towardzero (3)":
+Test "Real part of: csinh (0.75 + 1.25 i)":
 float: 1
 ifloat: 1
-ildouble: 1
-ldouble: 1
-
-# exp_upward
-Test "exp_upward (1)":
+Test "Imaginary part of: csinh (0.75 + 1.25 i)":
 float: 1
 ifloat: 1
+Test "Imaginary part of: csinh (11357.25 + 0.75 i)":
 ildouble: 1
 ldouble: 1
-
-# expm1
-Test "expm1 (-79.0)":
+Test "Imaginary part of: csinh (11357.25 - 0.75 i)":
 ildouble: 1
 ldouble: 1
-Test "expm1 (0.75)":
-double: 1
-idouble: 1
-Test "expm1 (1)":
+Test "Imaginary part of: csinh (1440 + 0x1p-1074 i)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
+Test "Imaginary part of: csinh (22730 + 0x1p-16434 i)":
 ildouble: 1
 ldouble: 1
-Test "expm1 (500.0)":
+Test "Imaginary part of: csinh (710.5 + 0.75 i)":
 double: 1
 idouble: 1
-
-# gamma
-Test "gamma (-0.5)":
 ildouble: 1
 ldouble: 1
-Test "gamma (0.7)":
+Test "Imaginary part of: csinh (710.5 - 0.75 i)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "gamma (1.2)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
+Test "Real part of: csinh (89.5 + 0.75 i)":
 ildouble: 1
 ldouble: 1
-
-# hypot
-Test "hypot (-0.7, -12.4)":
-float: 1
-ifloat: 1
-Test "hypot (-0.7, 12.4)":
+Test "Imaginary part of: csinh (89.5 + 0.75 i)":
 float: 1
 ifloat: 1
-Test "hypot (-12.4, -0.7)":
-float: 1
-ifloat: 1
-Test "hypot (-12.4, 0.7)":
-float: 1
-ifloat: 1
-Test "hypot (0.7, -12.4)":
-float: 1
-ifloat: 1
-Test "hypot (0.7, 12.4)":
-float: 1
-ifloat: 1
-Test "hypot (12.4, -0.7)":
-float: 1
-ifloat: 1
-Test "hypot (12.4, 0.7)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csinh (89.5 - 0.75 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: csinh (89.5 - 0.75 i)":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
-# j0
-Test "j0 (-0x1.001000001p+593)":
+# csqrt
+Test "Real part of: csqrt (-0x1.0000000000000000000000000001p-16382 - 0x1.0000000000000000000000000001p-16382 i)":
 ildouble: 1
 ldouble: 1
-Test "j0 (-4.0)":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "j0 (0x1.d7ce3ap+107)":
-float: 2
-ifloat: 2
+Test "Real part of: csqrt (-0x1.0000000000000002p-16382 - 0x1.0000000000000002p-16382 i)":
 ildouble: 1
 ldouble: 1
-Test "j0 (0x1p1023)":
+Test "Imaginary part of: csqrt (-0x1.0000000000000002p-16382 - 0x1.0000000000000002p-16382 i)":
 ildouble: 1
 ldouble: 1
-Test "j0 (0x1p16383)":
-ildouble: 2
-ldouble: 2
-Test "j0 (10.0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "j0 (2.0)":
-ildouble: 2
-ldouble: 2
-Test "j0 (4.0)":
+Test "Real part of: csqrt (-0x1.0000000000001p-1022 - 0x1.0000000000001p-1022 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: csqrt (-0x1.000002p-126 - 0x1.000002p-126 i)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
-Test "j0 (8.0)":
+Test "Real part of: csqrt (-2 + 3 i)":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-
-# j1
-Test "j1 (-1.0)":
-ildouble: 1
-ldouble: 1
-Test "j1 (0.75)":
+Test "Real part of: csqrt (-2 - 3 i)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "j1 (0x1.3ffp+74)":
-double: 1
-idouble: 1
+Test "Imaginary part of: csqrt (0.75 + 1.25 i)":
 ildouble: 1
 ldouble: 1
-Test "j1 (0x1.ff00000000002p+840)":
-double: 1
-idouble: 1
+Test "Imaginary part of: csqrt (0x1.0000000000000000000000000001p-16382 + 0x1.0000000000000000000000000001p-16382 i)":
 ildouble: 1
 ldouble: 1
-Test "j1 (0x1p1023)":
+Test "Real part of: csqrt (0x1.0000000000000002p-16382 + 0x1.0000000000000002p-16382 i)":
 ildouble: 1
 ldouble: 1
-Test "j1 (0x1p16382)":
+Test "Imaginary part of: csqrt (0x1.0000000000000002p-16382 + 0x1.0000000000000002p-16382 i)":
 ildouble: 1
 ldouble: 1
-Test "j1 (0x1p16383)":
-ildouble: 2
-ldouble: 2
-Test "j1 (1.0)":
+Test "Imaginary part of: csqrt (0x1.0000000000001p-1022 + 0x1.0000000000001p-1022 i)":
 ildouble: 1
 ldouble: 1
-Test "j1 (10.0)":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "j1 (2.0)":
+Test "Imaginary part of: csqrt (0x1.000002p-126 + 0x1.000002p-126 i)":
 double: 1
 idouble: 1
-Test "j1 (8.0)":
+Test "Imaginary part of: csqrt (0x1.fffffep+127 + 1.0 i)":
+float: 1
+ifloat: 1
+Test "Real part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)":
 double: 1
 idouble: 1
-ildouble: 4
-ldouble: 4
-
-# jn
-Test "jn (0, -4.0)":
+Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
-Test "jn (0, 10.0)":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "jn (0, 2.0)":
-ildouble: 2
-ldouble: 2
-Test "jn (0, 4.0)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: csqrt (0x1.fffffffffffffp+1023 + 0x1p+1023 i)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
-Test "jn (0, 8.0)":
-float: 1
-ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "jn (1, -1.0)":
+Test "Real part of: csqrt (0x1.fp+16383 + 0x1.fp+16383 i)":
 ildouble: 1
 ldouble: 1
-Test "jn (1, 0.75)":
+Test "Imaginary part of: csqrt (0x1.fp+16383 + 0x1.fp+16383 i)":
 ildouble: 1
 ldouble: 1
-Test "jn (1, 1.0)":
+Test "Imaginary part of: csqrt (0x1.fp+16383 + 0x1p+16383 i)":
 ildouble: 1
 ldouble: 1
-Test "jn (1, 10.0)":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-Test "jn (1, 2.0)":
-double: 1
-idouble: 1
-Test "jn (1, 8.0)":
-double: 1
-idouble: 1
-ildouble: 4
-ldouble: 4
-Test "jn (10, -1.0)":
+Test "Imaginary part of: csqrt (0x1p-16440 + 0x1p-16441 i)":
 ildouble: 1
 ldouble: 1
-Test "jn (10, 0.125)":
-double: 1
+
+# ctan
+Test "Real part of: ctan (-2 - 3 i)":
 float: 1
-idouble: 1
 ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (10, 0.75)":
+Test "Imaginary part of: ctan (-2 - 3 i)":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "jn (10, 1.0)":
+Test "Real part of: ctan (0.75 + 1.25 i)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "jn (10, 10.0)":
+Test "Imaginary part of: ctan (0.75 + 1.25 i)":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 2
 ldouble: 2
-Test "jn (10, 2.0)":
+Test "Real part of: ctan (0x1p1023 + 1 i)":
 double: 1
-float: 2
 idouble: 1
-ifloat: 2
-Test "jn (2, 0x1.ffff62p+99)":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-Test "jn (2, 2.4048255576957729)":
-double: 2
+Test "Imaginary part of: ctan (0x1p1023 + 1 i)":
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctan (0x1p127 + 1 i)":
 float: 1
-idouble: 2
 ifloat: 1
-ildouble: 1
-ldouble: 1
-Test "jn (3, 0.125)":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctan (0x1p127 + 1 i)":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
-Test "jn (3, 0.75)":
-double: 1
-idouble: 1
-Test "jn (3, 10.0)":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan (0x1p16383 + 1 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan (0x1p16383 + 1 i)":
 ildouble: 2
 ldouble: 2
-Test "jn (3, 2.0)":
+Test "Real part of: ctan (0x3.243f6cp-1 + 0 i)":
 float: 1
 ifloat: 1
-Test "jn (3, 2.4048255576957729)":
-double: 3
-idouble: 3
 ildouble: 1
 ldouble: 1
-Test "jn (4, 2.4048255576957729)":
-double: 1
-idouble: 1
+Test "Real part of: ctan (1 + 355 i)":
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctan (1 + 365 i)":
 ildouble: 1
 ldouble: 1
-Test "jn (5, 2.4048255576957729)":
-double: 3
+Test "Real part of: ctan (1 + 45 i)":
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctan (1 + 47 i)":
+ildouble: 1
+ldouble: 1
+
+# ctan_downward
+Test "Real part of: ctan_downward (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctan_downward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+ildouble: 4
+ldouble: 4
+Test "Imaginary part of: ctan_downward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+ildouble: 3
+ldouble: 3
+Test "Real part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)":
+double: 2
 float: 1
-idouble: 3
+idouble: 2
 ifloat: 1
 ildouble: 2
 ldouble: 2
-Test "jn (6, 2.4048255576957729)":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
+Test "Imaginary part of: ctan_downward (0x1.921fb6p+0 + 0x1p-149 i)":
+float: 1
+ifloat: 1
 ildouble: 5
 ldouble: 5
-Test "jn (7, 2.4048255576957729)":
-double: 3
-float: 5
-idouble: 3
-ifloat: 5
+
+# ctan_tonearest
+Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
 ildouble: 3
 ldouble: 3
-Test "jn (8, 2.4048255576957729)":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 8
-ldouble: 8
-Test "jn (9, 2.4048255576957729)":
+Test "Imaginary part of: ctan_tonearest (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+ildouble: 3
+ldouble: 3
+Test "Real part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan_tonearest (0x1.921fb6p+0 + 0x1p-149 i)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+# ctan_towardzero
+Test "Real part of: ctan_towardzero (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan_towardzero (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)":
+float: 1
+ifloat: 1
+Test "Imaginary part of: ctan_towardzero (0x1.921fb6p+0 + 0x1p-149 i)":
+float: 1
+ifloat: 1
+ildouble: 5
+ldouble: 5
+
+# ctan_upward
+Test "Real part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan_upward (0x1.921fb54442d1846ap+0 + 0x1p-16445 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctan_upward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
 double: 1
-float: 2
 idouble: 1
-ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctan_upward (0x1.921fb54442d18p+0 + 0x1p-1074 i)":
 ildouble: 3
 ldouble: 3
+Test "Real part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctan_upward (0x1.921fb6p+0 + 0x1p-149 i)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
 
-# lgamma
-Test "lgamma (-0.5)":
+# ctanh
+Test "Real part of: ctanh (-2 - 3 i)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+Test "Imaginary part of: ctanh (-2 - 3 i)":
+double: 1
+idouble: 1
+Test "Imaginary part of: ctanh (0 + 0x3.243f6cp-1 i)":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "lgamma (0.7)":
+Test "Imaginary part of: ctanh (0 + pi/4 i)":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "lgamma (1.2)":
+Test "Real part of: ctanh (0.75 + 1.25 i)":
+double: 1
+idouble: 1
+Test "Imaginary part of: ctanh (0.75 + 1.25 i)":
+float: 1
+ifloat: 1
+Test "Real part of: ctanh (1 + 0x1p1023 i)":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh (1 + 0x1p1023 i)":
+double: 1
+idouble: 1
+Test "Real part of: ctanh (1 + 0x1p127 i)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (1 + 0x1p127 i)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctanh (1 + 0x1p16383 i)":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh (1 + 0x1p16383 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (355 + 1 i)":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh (365 + 1 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (45 + 1 i)":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh (47 + 1 i)":
+ildouble: 1
+ldouble: 1
+
+# ctanh_downward
+Test "Real part of: ctanh_downward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 3
+ldouble: 3
+Test "Imaginary part of: ctanh_downward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 4
+ldouble: 4
+Test "Real part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)":
+float: 1
+ifloat: 1
+ildouble: 5
+ldouble: 5
+Test "Imaginary part of: ctanh_downward (0x1p-149 + 0x1.921fb6p+0 i)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh_downward (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+ildouble: 2
+ldouble: 2
+
+# ctanh_tonearest
+Test "Real part of: ctanh_tonearest (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 3
+ldouble: 3
+Test "Imaginary part of: ctanh_tonearest (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 3
+ldouble: 3
+Test "Real part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh_tonearest (0x1p-149 + 0x1.921fb6p+0 i)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctanh_tonearest (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+ildouble: 1
+ldouble: 1
+
+# ctanh_towardzero
+Test "Real part of: ctanh_towardzero (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 2
+ldouble: 2
+Test "Imaginary part of: ctanh_towardzero (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 1
+ldouble: 1
+Test "Real part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)":
+float: 1
+ifloat: 1
+ildouble: 5
+ldouble: 5
+Test "Imaginary part of: ctanh_towardzero (0x1p-149 + 0x1.921fb6p+0 i)":
+float: 1
+ifloat: 1
+Test "Imaginary part of: ctanh_towardzero (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+ildouble: 1
+ldouble: 1
+
+# ctanh_upward
+Test "Real part of: ctanh_upward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+ildouble: 3
+ldouble: 3
+Test "Imaginary part of: ctanh_upward (0x1p-1074 + 0x1.921fb54442d18p+0 i)":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+Test "Imaginary part of: ctanh_upward (0x1p-149 + 0x1.921fb6p+0 i)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "Real part of: ctanh_upward (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh_upward (0x1p-16445 + 0x1.921fb54442d1846ap+0 i)":
+ildouble: 1
+ldouble: 1
+
+# erf
+Test "erf (-0x7.ffffffffffffcp-4)":
+ildouble: 1
+ldouble: 1
+Test "erf (0x1.4p+0)":
+double: 1
+idouble: 1
+Test "erf (1.25)":
+double: 1
+idouble: 1
+
+# erfc
+Test "erfc (-0x8p-4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "erfc (0.75)":
+float: 1
+ifloat: 1
+Test "erfc (0x1.ap+4)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0x1.bp+4)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0x1.cp+4)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0x1.f7303cp+1)":
+double: 1
+idouble: 1
+Test "erfc (0x1.ffa002p+2)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "erfc (0x1.ffffc8p+2)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0x2p+0)":
+double: 1
+idouble: 1
+Test "erfc (0x3.ee6078p+0)":
+double: 1
+idouble: 1
+Test "erfc (0x4.2p+0)":
+double: 1
+idouble: 1
+Test "erfc (0x6.4p+4)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0x6.a8p+4)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0x7.fe8008p+0)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "erfc (0x7.fffd6p+0)":
+float: 1
+ifloat: 1
+Test "erfc (0x7.ffff2p+0)":
+ildouble: 1
+ldouble: 1
+Test "erfc (0xcp-4)":
+float: 1
+ifloat: 1
+Test "erfc (2.0)":
+double: 1
+idouble: 1
+Test "erfc (27.0)":
+ildouble: 1
+ldouble: 1
+Test "erfc (4.125)":
+double: 1
+idouble: 1
+
+# exp10
+Test "exp10 (-0x1.31p+8)":
+double: 1
+idouble: 1
+Test "exp10 (-0x1p+0)":
+double: 1
+idouble: 1
+Test "exp10 (-0x2.4p+4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "exp10 (-1)":
+double: 1
+idouble: 1
+Test "exp10 (-305)":
+double: 1
+idouble: 1
+Test "exp10 (-36)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "exp10 (0x1.344p+12)":
+ildouble: 1
+ldouble: 1
+Test "exp10 (0x2.4p+4)":
+double: 1
+idouble: 1
+Test "exp10 (0x3p+0)":
+double: 1
+idouble: 1
+Test "exp10 (3)":
+double: 1
+idouble: 1
+Test "exp10 (36)":
+double: 1
+idouble: 1
+Test "exp10 (4932)":
+ildouble: 1
+ldouble: 1
+
+# exp2
+Test "exp2 (0x6.48p+4)":
+ildouble: 1
+ldouble: 1
+Test "exp2 (100.5)":
+ildouble: 1
+ldouble: 1
+
+# exp_downward
+Test "exp_downward (0x2p+0)":
+double: 1
+idouble: 1
+Test "exp_downward (0x3p+0)":
+double: 1
+idouble: 1
+Test "exp_downward (0x5.8b9028p+4)":
+double: 1
+idouble: 1
+Test "exp_downward (0xcp-4)":
+double: 1
+idouble: 1
+Test "exp_downward (2)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "exp_downward (3)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# exp_towardzero
+Test "exp_towardzero (0x2p+0)":
+double: 1
+idouble: 1
+Test "exp_towardzero (0x3p+0)":
+double: 1
+idouble: 1
+Test "exp_towardzero (0x5.8b9028p+4)":
+double: 1
+idouble: 1
+Test "exp_towardzero (0xcp-4)":
+double: 1
+idouble: 1
+Test "exp_towardzero (2)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "exp_towardzero (3)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# exp_upward
+Test "exp_upward (-0x2.e870a4p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x2.e870a7e5e88c2p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x2.e870a7e5e88cp+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x2.e870a8p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x2.ebe224p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x2.ebe227861639p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x2.ebe228p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0x4.d2p+8)":
+double: 1
+idouble: 1
+Test "exp_upward (-0xf.ffffffffffff8p+1020)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "exp_upward (-0xf.ffffffffffffbffffffffffffcp+1020)":
+ildouble: 1
+ldouble: 1
+Test "exp_upward (-0xf.fffffffffffffffffffffffffff8p+16380)":
+ildouble: 1
+ldouble: 1
+Test "exp_upward (-0xf.fffffffffffffffp+16380)":
+ildouble: 1
+ldouble: 1
+Test "exp_upward (-0xf.fffffp+124)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "exp_upward (0x1p+0)":
+double: 1
+idouble: 1
+Test "exp_upward (0x2.c5cp+8)":
+double: 1
+idouble: 1
+Test "exp_upward (0x3.2p+4)":
+double: 1
+idouble: 1
+Test "exp_upward (1)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# expm1
+Test "expm1 (-0x1p+4)":
+ildouble: 1
+ldouble: 1
+Test "expm1 (-0x2.6p+4)":
+ildouble: 1
+ldouble: 1
+Test "expm1 (-0x2.cp+4)":
+ildouble: 1
+ldouble: 1
+Test "expm1 (-0x4.ep+4)":
+ildouble: 1
+ldouble: 1
+Test "expm1 (-0x4.fp+4)":
+ildouble: 1
+ldouble: 1
+Test "expm1 (-79.0)":
+ildouble: 1
+ldouble: 1
+Test "expm1 (0.75)":
+double: 1
+idouble: 1
+Test "expm1 (0x1.f4p+8)":
+double: 1
+idouble: 1
+Test "expm1 (0x1p+0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "expm1 (0xcp-4)":
+double: 1
+idouble: 1
+Test "expm1 (1)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "expm1 (500.0)":
+double: 1
+idouble: 1
+
+# gamma
+Test "gamma (-0.5)":
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-10)":
+double: 1
+idouble: 1
+Test "gamma (-0x1p-15)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "gamma (-0x1p-20)":
+double: 1
+idouble: 1
+Test "gamma (-0x1p-25)":
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-30)":
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-40)":
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-5)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-64)":
+ildouble: 1
+ldouble: 1
+Test "gamma (0.7)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (0x1p-10)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (0x1p-16445)":
+ildouble: 27238721623982906782234889156231
+ldouble: 27238721623982906782234889156231
+Test "gamma (0x1p-16494)":
+ildouble: 48766098391324236335813626361678
+ldouble: 48766098391324236335813626361678
+Test "gamma (0x1p-30)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (0x1p-5)":
+ildouble: 1
+ldouble: 1
+Test "gamma (0x1p-60)":
+ildouble: 1
+ldouble: 1
+Test "gamma (0x1p-70)":
+ildouble: 1
+ldouble: 1
+Test "gamma (1.2)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
+
+# hypot
+Test "hypot (-0.7, -12.4)":
+float: 1
+ifloat: 1
+Test "hypot (-0.7, 12.4)":
+float: 1
+ifloat: 1
+Test "hypot (-12.4, -0.7)":
+float: 1
+ifloat: 1
+Test "hypot (-12.4, 0.7)":
+float: 1
+ifloat: 1
+Test "hypot (0.7, -12.4)":
+float: 1
+ifloat: 1
+Test "hypot (0.7, 12.4)":
+float: 1
+ifloat: 1
+Test "hypot (12.4, -0.7)":
+float: 1
+ifloat: 1
+Test "hypot (12.4, 0.7)":
+float: 1
+ifloat: 1
+
+# j0
+Test "j0 (-0x1.001000001p+593)":
+ildouble: 1
+ldouble: 1
+Test "j0 (-0x2.002000002p+592)":
+ildouble: 2
+ldouble: 2
+Test "j0 (-0x4p+0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "j0 (-0xf.fffffp+124)":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "j0 (-4.0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "j0 (0x1.d7ce3ap+107)":
+float: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "j0 (0x1p1023)":
+ildouble: 1
+ldouble: 1
+Test "j0 (0x1p16383)":
+ildouble: 2
+ldouble: 2
+Test "j0 (0x2p+0)":
+ildouble: 2
+ldouble: 2
+Test "j0 (0x4p+0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "j0 (0x4p+16380)":
+ildouble: 1
+ldouble: 1
+Test "j0 (0x8p+0)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "j0 (0x8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "j0 (0x8p+16380)":
+ildouble: 2
+ldouble: 2
+Test "j0 (0xap+0)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "j0 (0xe.be71dp+104)":
+float: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "j0 (0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "j0 (0xf.ffffffffffffbffffffffffffcp+1020)":
+ildouble: 1
+ldouble: 1
+Test "j0 (0xf.fffffp+124)":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "j0 (10.0)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "j0 (2.0)":
+ildouble: 2
+ldouble: 2
+Test "j0 (4.0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "j0 (8.0)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# j1
+Test "j1 (-1.0)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0.75)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0x1.3ffp+74)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "j1 (0x1.ff00000000002p+840)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "j1 (0x1p+0)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0x1p1023)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0x1p16382)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0x1p16383)":
+ildouble: 2
+ldouble: 2
+Test "j1 (0x2p+0)":
+double: 1
+idouble: 1
+Test "j1 (0x4.ffcp+72)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "j1 (0x4p+16380)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0x8p+0)":
+double: 1
+idouble: 1
+ildouble: 4
+ldouble: 4
+Test "j1 (0x8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0x8p+16380)":
+ildouble: 2
+ldouble: 2
+Test "j1 (0xap+0)":
+float: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "j1 (0xcp-4)":
+ildouble: 1
+ldouble: 1
+Test "j1 (0xf.ffffffffffff8p+1020)":
+double: 1
+idouble: 1
+Test "j1 (0xf.fffffp+124)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "j1 (1.0)":
+ildouble: 1
+ldouble: 1
+Test "j1 (10.0)":
+float: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "j1 (2.0)":
+double: 1
+idouble: 1
+Test "j1 (8.0)":
+double: 1
+idouble: 1
+ildouble: 4
+ldouble: 4
+
+# jn
+Test "jn (0, -4.0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (0, 10.0)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "jn (0, 2.0)":
+ildouble: 2
+ldouble: 2
+Test "jn (0, 4.0)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (0, 8.0)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "jn (1, -1.0)":
+ildouble: 1
+ldouble: 1
+Test "jn (1, 0.75)":
+ildouble: 1
+ldouble: 1
+Test "jn (1, 1.0)":
+ildouble: 1
+ldouble: 1
+Test "jn (1, 10.0)":
+float: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "jn (1, 2.0)":
+double: 1
+idouble: 1
+Test "jn (1, 8.0)":
+double: 1
+idouble: 1
+ildouble: 4
+ldouble: 4
+Test "jn (10, -1.0)":
+ildouble: 1
+ldouble: 1
+Test "jn (10, 0.125)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "jn (10, 0.75)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "jn (10, 1.0)":
+ildouble: 1
+ldouble: 1
+Test "jn (10, 10.0)":
+float: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+Test "jn (10, 2.0)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+Test "jn (2, 0x1.ffff62p+99)":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+Test "jn (2, 0x1p1023)":
+ildouble: 1
+ldouble: 1
+Test "jn (2, 0x1p127)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "jn (2, 0x1p16383)":
+ildouble: 2
+ldouble: 2
+Test "jn (2, 2.4048255576957729)":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "jn (3, 0.125)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (3, 0.75)":
+double: 1
+idouble: 1
+Test "jn (3, 10.0)":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "jn (3, 2.0)":
+float: 1
+ifloat: 1
+Test "jn (3, 2.4048255576957729)":
+double: 3
+idouble: 3
+ildouble: 1
+ldouble: 1
+Test "jn (4, 2.4048255576957729)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "jn (5, 2.4048255576957729)":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "jn (6, 2.4048255576957729)":
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+ildouble: 5
+ldouble: 5
+Test "jn (7, 2.4048255576957729)":
+double: 3
+float: 5
+idouble: 3
+ifloat: 5
+ildouble: 3
+ldouble: 3
+Test "jn (8, 2.4048255576957729)":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 8
+ldouble: 8
+Test "jn (9, 2.4048255576957729)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+# lgamma
+Test "lgamma (-0.5)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-10)":
+double: 1
+idouble: 1
+Test "lgamma (-0x1p-15)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "lgamma (-0x1p-20)":
+double: 1
+idouble: 1
+Test "lgamma (-0x1p-25)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-30)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-40)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-5)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-64)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (0.7)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (0x1p-10)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (0x1p-16445)":
+ildouble: 27238721623982906782234889156231
+ldouble: 27238721623982906782234889156231
+Test "lgamma (0x1p-16494)":
+ildouble: 48766098391324236335813626361678
+ldouble: 48766098391324236335813626361678
+Test "lgamma (0x1p-30)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (0x1p-5)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (0x1p-60)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (0x1p-70)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (1.2)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
+
+# log10
+Test "log10 (0.75)":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+Test "log10 (e)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# log2
+Test "log2 (0.75)":
+ildouble: 1
+ldouble: 1
+
+# pow
+Test "pow (0x0.fffffffffffff8p0, -0x1.23456789abcdfp62)":
+ildouble: 1
+ldouble: 1
+Test "pow (0x0.ffffffp0, -0x1p24)":
+ildouble: 1
+ldouble: 1
+Test "pow (0x0.ffffffp0, 0x1p24)":
+float: 1
+ifloat: 1
+Test "pow (10.0, -4930.0)":
+ildouble: 1
+ldouble: 1
+Test "pow (10.0, 4929.0)":
+ildouble: 1
+ldouble: 1
+Test "pow (10.0, 4930.0)":
+ildouble: 1
+ldouble: 1
+Test "pow (10.0, 4931.0)":
+ildouble: 1
+ldouble: 1
+Test "pow (10.0, 4932.0)":
+ildouble: 1
+ldouble: 1
+Test "pow (1e4932, 0.75)":
+ildouble: 1
+ldouble: 1
+
+# pow10
+Test "pow10 (-0x1.31p+8)":
+double: 1
+idouble: 1
+Test "pow10 (-0x1p+0)":
+double: 1
+idouble: 1
+Test "pow10 (-0x2.4p+4)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "pow10 (-1)":
+double: 1
+idouble: 1
+Test "pow10 (-305)":
+double: 1
+idouble: 1
+Test "pow10 (-36)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "pow10 (0x1.344p+12)":
+ildouble: 1
+ldouble: 1
+Test "pow10 (0x2.4p+4)":
+double: 1
+idouble: 1
+Test "pow10 (0x3p+0)":
+double: 1
+idouble: 1
+Test "pow10 (3)":
+double: 1
+idouble: 1
+Test "pow10 (36)":
+double: 1
+idouble: 1
+Test "pow10 (4932)":
+ildouble: 1
+ldouble: 1
+
+# pow_downward
+Test "pow_downward (1.5, 1.03125)":
+float: 1
+ifloat: 1
+
+# pow_towardzero
+Test "pow_towardzero (1.5, 1.03125)":
+float: 1
+ifloat: 1
+
+# pow_upward
+Test "pow_upward (1.0625, 1.125)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# sin_downward
+Test "sin_downward (10)":
+float: 1
+ifloat: 1
+Test "sin_downward (2)":
+ildouble: 1
+ldouble: 1
+Test "sin_downward (3)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sin_downward (4)":
+ildouble: 1
+ldouble: 1
+Test "sin_downward (5)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sin_downward (6)":
+float: 1
+ifloat: 1
+Test "sin_downward (8)":
+ildouble: 1
+ldouble: 1
+Test "sin_downward (9)":
+ildouble: 1
+ldouble: 1
+
+# sin_tonearest
+Test "sin_tonearest (1)":
+float: 1
+ifloat: 1
+Test "sin_tonearest (3)":
+ildouble: 1
+ldouble: 1
+
+# sin_towardzero
+Test "sin_towardzero (1)":
+float: 1
+ifloat: 1
+Test "sin_towardzero (10)":
+float: 1
+ifloat: 1
+Test "sin_towardzero (2)":
+ildouble: 1
+ldouble: 1
+Test "sin_towardzero (3)":
+ildouble: 1
+ldouble: 1
+Test "sin_towardzero (4)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sin_towardzero (5)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sin_towardzero (8)":
+ildouble: 1
+ldouble: 1
+Test "sin_towardzero (9)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# sin_upward
+Test "sin_upward (1)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sin_upward (10)":
+ildouble: 1
+ldouble: 1
+Test "sin_upward (2)":
+float: 2
+ifloat: 2
+Test "sin_upward (3)":
+ildouble: 1
+ldouble: 1
+Test "sin_upward (4)":
+float: 1
+ifloat: 1
+Test "sin_upward (6)":
+ildouble: 1
+ldouble: 1
+Test "sin_upward (7)":
+ildouble: 1
+ldouble: 1
+Test "sin_upward (9)":
+float: 1
+ifloat: 1
+
+# sincos
+Test "sincos (0x1p+120) extra output 2":
+float: 1
+ifloat: 1
+Test "sincos (0x1p+127) extra output 2":
+float: 1
+ifloat: 1
+Test "sincos (M_PI_6l*2.0) extra output 1":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "sincos (M_PI_6l*2.0) extra output 2":
+double: 1
+idouble: 1
+Test "sincos (pi/6) extra output 2":
+float: 1
+ifloat: 1
+
+# sinh_downward
+Test "sinh_downward (22)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sinh_downward (23)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "sinh_downward (24)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# sinh_towardzero
+Test "sinh_towardzero (22)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "sinh_towardzero (23)":
+float: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+Test "sinh_towardzero (24)":
+float: 1
+ifloat: 1
+
+# sinh_upward
+Test "sinh_upward (22)":
+ildouble: 1
+ldouble: 1
+Test "sinh_upward (23)":
+ildouble: 1
+ldouble: 1
+Test "sinh_upward (24)":
+ildouble: 1
+ldouble: 1
+
+# sqrt
+Test "sqrt (0x1.6e66a858p-1016)":
+double: 1
+idouble: 1
+Test "sqrt (0x1.8661cbf8p-1016)":
+double: 1
+idouble: 1
+Test "sqrt (0x1.bbb221b4p-1016)":
+double: 1
+idouble: 1
+Test "sqrt (0x1.dbb258c8p-1016)":
+double: 1
+idouble: 1
+Test "sqrt (0x2.ae207d48p-1016)":
+double: 1
+idouble: 1
+Test "sqrt (0x3.36529f1p-1016)":
+double: 1
+idouble: 1
+Test "sqrt (0x5.c59ef0dbaa8ecp+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x5.fe1113f3d9f94p+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.0d9194398e95p+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.16fb749d3b76p+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.18273d25aaddcp+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.2467258b2eab8p+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.49c0b3664bc48p+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.51f6804f1ca4cp+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x6.54d8247125348p+4)":
+double: 1
+idouble: 1
+Test "sqrt (0x7.e4ef24p-1020)":
+double: 1
+idouble: 1
+
+# sqrt_downward
+Test "sqrt_downward (0x1.33b43b08p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x1.6e66a858p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x1.dbb258c8p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x2.ae207d48p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x2.c36098cp-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x3.36529f1p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x5.d5c26509ceb5cp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x5.d5c268p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x5.d5c26p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x5.f6ba58p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x5.f6ba5a510bf98p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x5.f6ba6p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.0d9194398e95p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.0d919p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.16fb749d3b76p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.16fb78p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.16fb7p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.18273d25aaddcp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.18274p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.1ce128p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.379128p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.4920a8p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.49c0bp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.4add88p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.4add8ea0c47f4p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.4add9p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.4de27c4p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.51f6804f1ca4cp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.51f68p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x6.54d82p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x7.e4ef24p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0x9.7b3af18p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xd.0ac284p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.ffffffffffeb8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.ffffffffffed8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.ffffffffffef8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffff18p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffff38p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffff58p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffff78p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffff98p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffffb8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffffffffd8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffp+124)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_downward (0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
+
+# sqrt_tonearest
+Test "sqrt_tonearest (0x1.6e66a858p-1016)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x1.8661cbf8p-1016)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x1.bbb221b4p-1016)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x1.dbb258c8p-1016)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x2.ae207d48p-1016)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x3.36529f1p-1016)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x5.c59ef0dbaa8ecp+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x5.fe1113f3d9f94p+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.0d9194398e95p+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.16fb749d3b76p+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.18273d25aaddcp+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.2467258b2eab8p+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.49c0b3664bc48p+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.51f6804f1ca4cp+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x6.54d8247125348p+4)":
+double: 1
+idouble: 1
+Test "sqrt_tonearest (0x7.e4ef24p-1020)":
+double: 1
+idouble: 1
+
+# sqrt_towardzero
+Test "sqrt_towardzero (0x1.33b43b08p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x1.6e66a858p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x1.dbb258c8p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x2.ae207d48p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x2.c36098cp-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x3.36529f1p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x5.d5c26509ceb5cp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x5.d5c268p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x5.d5c26p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x5.f6ba58p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x5.f6ba5a510bf98p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x5.f6ba6p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.0d9194398e95p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.0d919p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.16fb749d3b76p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.16fb78p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.16fb7p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.18273d25aaddcp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.18274p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.1ce128p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.379128p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.4920a8p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.49c0bp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.4add88p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.4add8ea0c47f4p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.4add9p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.4de27c4p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.51f6804f1ca4cp+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.51f68p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x6.54d82p+4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x7.e4ef24p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0x9.7b3af18p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xd.0ac284p-1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.ffffffffffeb8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.ffffffffffed8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.ffffffffffef8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffff18p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffff38p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffff58p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffff78p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffff98p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffffb8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffffffffd8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.ffffffffffff8p-4)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffp+124)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_towardzero (0xf.fffffp-4)":
+ildouble: 1
+ldouble: 1
+
+# sqrt_upward
+Test "sqrt_upward (0x1.0000000000001p+0)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x1.000002p+0)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x1.8661cbf8p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x1.bbb221b4p-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x1.c4942f3cp-1016)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x2p+0)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x4.000000000000cp-1024)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x4.000000000001cp-1024)":
+ildouble: 1
+ldouble: 1
+Test "sqrt_upward (0x4.000000000002cp-1024)":
 ildouble: 1
 ldouble: 1
-
-# log10
-Test "log10 (0.75)":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-Test "log10 (e)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x4.000000000003cp-1024)":
 ildouble: 1
 ldouble: 1
-
-# log2
-Test "log2 (0.75)":
+Test "sqrt_upward (0x4.000000000004cp-1024)":
 ildouble: 1
 ldouble: 1
-
-# pow
-Test "pow (0x0.fffffffffffff8p0, -0x1.23456789abcdfp62)":
+Test "sqrt_upward (0x4.000000000005cp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (0x0.ffffffp0, -0x1p24)":
+Test "sqrt_upward (0x4.000000000006cp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (0x0.ffffffp0, 0x1p24)":
-float: 1
-ifloat: 1
-Test "pow (10.0, -4930.0)":
+Test "sqrt_upward (0x4.000000000007cp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (10.0, 4929.0)":
+Test "sqrt_upward (0x4.000000000008cp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (10.0, 4930.0)":
+Test "sqrt_upward (0x4.000000000009cp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (10.0, 4931.0)":
+Test "sqrt_upward (0x4.00000000000acp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (10.0, 4932.0)":
+Test "sqrt_upward (0x4.00000000000bcp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow (1e4932, 0.75)":
+Test "sqrt_upward (0x4.00000000000ccp-1024)":
 ildouble: 1
 ldouble: 1
-
-# pow10
-Test "pow10 (-1)":
-double: 1
-idouble: 1
-Test "pow10 (-305)":
-double: 1
-idouble: 1
-Test "pow10 (-36)":
-double: 1
-idouble: 1
+Test "sqrt_upward (0x4.00000000000dcp-1024)":
 ildouble: 1
 ldouble: 1
-Test "pow10 (3)":
-double: 1
-idouble: 1
-Test "pow10 (36)":
-double: 1
-idouble: 1
-Test "pow10 (4932)":
+Test "sqrt_upward (0x5.c59ef0dbaa8ecp+4)":
 ildouble: 1
 ldouble: 1
-
-# pow_downward
-Test "pow_downward (1.5, 1.03125)":
-float: 1
-ifloat: 1
-
-# pow_towardzero
-Test "pow_towardzero (1.5, 1.03125)":
-float: 1
-ifloat: 1
-
-# pow_upward
-Test "pow_upward (1.0625, 1.125)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x5.c59ef8p+4)":
 ildouble: 1
 ldouble: 1
-
-# sin_downward
-Test "sin_downward (10)":
-float: 1
-ifloat: 1
-Test "sin_downward (2)":
+Test "sqrt_upward (0x5.c59efp+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_downward (3)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x5.fe1113f3d9f94p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_downward (4)":
+Test "sqrt_upward (0x5.fe1118p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_downward (5)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x5.fe111p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_downward (6)":
-float: 1
-ifloat: 1
-Test "sin_downward (8)":
+Test "sqrt_upward (0x6.0d9198p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_downward (9)":
+Test "sqrt_upward (0x6.182738p+4)":
 ildouble: 1
 ldouble: 1
-
-# sin_tonearest
-Test "sin_tonearest (1)":
-float: 1
-ifloat: 1
-Test "sin_tonearest (3)":
+Test "sqrt_upward (0x6.1ce1271c28dd4p+4)":
 ildouble: 1
 ldouble: 1
-
-# sin_towardzero
-Test "sin_towardzero (1)":
-float: 1
-ifloat: 1
-Test "sin_towardzero (10)":
-float: 1
-ifloat: 1
-Test "sin_towardzero (2)":
+Test "sqrt_upward (0x6.1ce12p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_towardzero (3)":
+Test "sqrt_upward (0x6.2467258b2eab8p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_towardzero (4)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.246728p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_towardzero (5)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.24672p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_towardzero (8)":
+Test "sqrt_upward (0x6.379124f88b718p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_towardzero (9)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.37912p+4)":
 ildouble: 1
 ldouble: 1
-
-# sin_upward
-Test "sin_upward (1)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.4920a685e8a2p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_upward (10)":
+Test "sqrt_upward (0x6.4920ap+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_upward (2)":
-float: 2
-ifloat: 2
-Test "sin_upward (3)":
+Test "sqrt_upward (0x6.49c0b3664bc48p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_upward (4)":
-float: 1
-ifloat: 1
-Test "sin_upward (6)":
+Test "sqrt_upward (0x6.49c0b8p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_upward (7)":
+Test "sqrt_upward (0x6.51f688p+4)":
 ildouble: 1
 ldouble: 1
-Test "sin_upward (9)":
-float: 1
-ifloat: 1
-
-# sincos
-Test "sincos (0x1p+120) extra output 2":
-float: 1
-ifloat: 1
-Test "sincos (0x1p+127) extra output 2":
-float: 1
-ifloat: 1
-Test "sincos (M_PI_6l*2.0) extra output 1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-Test "sincos (M_PI_6l*2.0) extra output 2":
-double: 1
-idouble: 1
-Test "sincos (pi/6) extra output 2":
-float: 1
-ifloat: 1
-
-# sinh_downward
-Test "sinh_downward (22)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.54d8247125348p+4)":
 ildouble: 1
 ldouble: 1
-Test "sinh_downward (23)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "sinh_downward (24)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.54d828p+4)":
 ildouble: 1
 ldouble: 1
-
-# sinh_towardzero
-Test "sinh_towardzero (22)":
-float: 1
-ifloat: 1
+Test "sqrt_upward (0x6.86626dp-1020)":
 ildouble: 1
 ldouble: 1
-Test "sinh_towardzero (23)":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-Test "sinh_towardzero (24)":
-float: 1
-ifloat: 1
-
-# sinh_upward
-Test "sinh_upward (22)":
+Test "sqrt_upward (0x8p-152)":
 ildouble: 1
 ldouble: 1
-Test "sinh_upward (23)":
+Test "sqrt_upward (0xcp-4)":
 ildouble: 1
 ldouble: 1
-Test "sinh_upward (24)":
+Test "sqrt_upward (0xe.698f83cp-1020)":
 ildouble: 1
 ldouble: 1
 
@@ -9409,7 +11145,9 @@ ildouble: 1
 ldouble: 1
 Test "yn (10, 10.0)":
 double: 2
+float: 1
 idouble: 2
+ifloat: 1
 ildouble: 2
 ldouble: 2
 Test "yn (10, 2.0)":
@@ -9419,6 +11157,22 @@ idouble: 3
 ifloat: 1
 ildouble: 2
 ldouble: 2
+Test "yn (2, 0x1.ffff62p+99)":
+double: 1
+idouble: 1
+Test "yn (2, 0x1p1023)":
+ildouble: 1
+ldouble: 1
+Test "yn (2, 0x1p127)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "yn (2, 0x1p16383)":
+ildouble: 2
+ldouble: 2
 Test "yn (3, 0.125)":
 double: 1
 idouble: 1
@@ -9456,6 +11210,12 @@ ildouble: 1
 ldouble: 1
 
 Function: "acos_upward":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+
+Function: "asin":
 ildouble: 1
 ldouble: 1
 
@@ -9467,17 +11227,25 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "asin_tonearest":
+ildouble: 1
+ldouble: 1
+
 Function: "asin_towardzero":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: "asin_upward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
 
 Function: "atan2":
 float: 1
@@ -9583,7 +11351,9 @@ ldouble: 1
 
 Function: "cbrt":
 double: 1
+float: 1
 idouble: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 
@@ -9676,44 +11446,66 @@ ildouble: 1
 ldouble: 1
 
 Function: "cos_downward":
-float: 1
-ifloat: 1
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
 ildouble: 2
 ldouble: 2
 
 Function: "cos_tonearest":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: "cos_towardzero":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 2
 ldouble: 2
 
 Function: "cos_upward":
+double: 1
 float: 2
+idouble: 1
 ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: "cosh":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cosh_downward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cosh_tonearest":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cosh_towardzero":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: "cosh_upward":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
@@ -9918,6 +11710,8 @@ ldouble: 2
 Function: "erf":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: "erfc":
 double: 1
@@ -9938,19 +11732,25 @@ ildouble: 1
 ldouble: 1
 
 Function: "exp_downward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: "exp_towardzero":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: "exp_upward":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
@@ -9968,8 +11768,8 @@ double: 1
 float: 2
 idouble: 1
 ifloat: 2
-ildouble: 1
-ldouble: 1
+ildouble: 48766098391324236335813626361678
+ldouble: 48766098391324236335813626361678
 
 Function: "hypot":
 float: 1
@@ -10004,8 +11804,8 @@ double: 1
 float: 2
 idouble: 1
 ifloat: 2
-ildouble: 1
-ldouble: 1
+ildouble: 48766098391324236335813626361678
+ldouble: 48766098391324236335813626361678
 
 Function: "log10":
 double: 1
@@ -10097,6 +11897,26 @@ Function: "sinh_upward":
 ildouble: 1
 ldouble: 1
 
+Function: "sqrt":
+double: 1
+idouble: 1
+
+Function: "sqrt_downward":
+ildouble: 1
+ldouble: 1
+
+Function: "sqrt_tonearest":
+double: 1
+idouble: 1
+
+Function: "sqrt_towardzero":
+ildouble: 1
+ldouble: 1
+
+Function: "sqrt_upward":
+ildouble: 1
+ldouble: 1
+
 Function: "tan":
 double: 1
 idouble: 1
diff --git a/sysdeps/unix/sysv/linux/llseek.c b/sysdeps/unix/sysv/linux/llseek.c
index a15be30..4e9613c 100644
--- a/sysdeps/unix/sysv/linux/llseek.c
+++ b/sysdeps/unix/sysv/linux/llseek.c
@@ -22,6 +22,16 @@
 #include <sysdep.h>
 #include <sys/syscall.h>
 
+#if __WORDSIZE == 64 && !defined(__NR_llseek)
+/* This is a 64-bit kernel with no support for llseek.
+   The only logical reason for this is that lseek supports 64-bit
+   arguments and this file should do nothing.  */
+# define HAVE_LLSEEK 0
+#else
+# define HAVE_LLSEEK 1
+#endif
+
+#if HAVE_LLSEEK
 /* Seek to OFFSET on FD, starting from WHENCE.  */
 extern loff_t __llseek (int fd, loff_t offset, int whence);
 
@@ -44,3 +54,5 @@ weak_alias (__llseek, lseek64)
    provided.  */
 link_warning (llseek, "\
 the `llseek' function may be dangerous; use `lseek64' instead.")
+#endif
+
diff --git a/sysdeps/unix/sysv/linux/pread.c b/sysdeps/unix/sysv/linux/pread.c
index 1494879..407351c 100644
--- a/sysdeps/unix/sysv/linux/pread.c
+++ b/sysdeps/unix/sysv/linux/pread.c
@@ -28,9 +28,12 @@
 
 #ifdef __NR_pread64		/* Newer kernels renamed but it's the same.  */
 # ifdef __NR_pread
-#  error "__NR_pread and __NR_pread64 both defined???"
+#  if __NR_pread != __NR_pread64
+#   error "Unable to choose between distinct __NR_pread and __NR_pread64."
+#  endif
+# else
+#  define __NR_pread __NR_pread64
 # endif
-# define __NR_pread __NR_pread64
 #endif
 
 
diff --git a/sysdeps/unix/sysv/linux/pread64.c b/sysdeps/unix/sysv/linux/pread64.c
index be829ce..aa77dff 100644
--- a/sysdeps/unix/sysv/linux/pread64.c
+++ b/sysdeps/unix/sysv/linux/pread64.c
@@ -27,9 +27,12 @@
 
 #ifdef __NR_pread64		/* Newer kernels renamed but it's the same.  */
 # ifdef __NR_pread
-#  error "__NR_pread and __NR_pread64 both defined???"
+#  if __NR_pread != __NR_pread64
+#   error "Unable to choose between distinct __NR_pread and __NR_pread64."
+#  endif
+# else
+#  define __NR_pread __NR_pread64
 # endif
-# define __NR_pread __NR_pread64
 #endif
 
 
diff --git a/sysdeps/unix/sysv/linux/pwrite.c b/sysdeps/unix/sysv/linux/pwrite.c
index 5a31d17..97173ce 100644
--- a/sysdeps/unix/sysv/linux/pwrite.c
+++ b/sysdeps/unix/sysv/linux/pwrite.c
@@ -28,9 +28,12 @@
 
 #ifdef __NR_pwrite64		/* Newer kernels renamed but it's the same.  */
 # ifdef __NR_pwrite
-#  error "__NR_pwrite and __NR_pwrite64 both defined???"
+#  if __NR_pwrite != __NR_pwrite64
+#   error "Unable to choose between distinct __NR_pwrite and __NR_pwrite64."
+#  endif
+# else
+#  define __NR_pwrite __NR_pwrite64
 # endif
-# define __NR_pwrite __NR_pwrite64
 #endif
 
 
diff --git a/sysdeps/unix/sysv/linux/pwrite64.c b/sysdeps/unix/sysv/linux/pwrite64.c
index fb46e4b..f4a1d4f 100644
--- a/sysdeps/unix/sysv/linux/pwrite64.c
+++ b/sysdeps/unix/sysv/linux/pwrite64.c
@@ -27,9 +27,12 @@
 
 #ifdef __NR_pwrite64		/* Newer kernels renamed but it's the same.  */
 # ifdef __NR_pwrite
-#  error "__NR_pwrite and __NR_pwrite64 both defined???"
+#  if __NR_pwrite != __NR_prite64
+#   error "Unable to choose between distinct __NR_pwrite and __NR_pwrite64."
+#  endif
+# else
+#  define __NR_pwrite __NR_pwrite64
 # endif
-# define __NR_pwrite __NR_pwrite64
 #endif
 
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]