aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386/fpu
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-12-20 21:03:39 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-12-20 21:03:39 +0000
commit31e3a40588f6b215f2583c12ba29ff5cea63d2ef (patch)
tree725953dd081236e773cf669b7d74d6b79557666a /sysdeps/i386/fpu
parent6165840feae41dba93b85d0cfad23f3d226fad30 (diff)
downloadglibc-31e3a40588f6b215f2583c12ba29ff5cea63d2ef.tar
glibc-31e3a40588f6b215f2583c12ba29ff5cea63d2ef.tar.gz
glibc-31e3a40588f6b215f2583c12ba29ff5cea63d2ef.tar.bz2
glibc-31e3a40588f6b215f2583c12ba29ff5cea63d2ef.zip
Add more libm-test coverage of [a-c]* real functions.
Various libm functions have inadequate test coverage in libm-test.inc / auto-libm-test-in - failing to cover all the usual special cases (infinities, NaNs, zero, large and small finite values, subnormals) as well as a reasonable range of ordinary inputs and, where appropriate, inputs close to the thresholds for underflow and overflow. This patch improves test coverage for real functions [a-c]* (with the expectation of adding more coverage for other functions later). Tested x86_64 and x86 and ulps updated accordingly (and eight glibc bugs and one C11 DR filed for issues found in the process). * math/auto-libm-test-in: Add more tests of acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, cos and cosh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (acosh_test_data): Add more tests. (atanh_test_data): Likewise. (ceil_test_data): Likewise. (copysign_test_data): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
Diffstat (limited to 'sysdeps/i386/fpu')
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps483
1 files changed, 477 insertions, 6 deletions
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 50bbe77000..dc53d94b4a 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -121,9 +121,28 @@ ildouble: 1
ldouble: 1
# asin_downward
+Test "asin_downward (-0x4p-1024)":
+double: 1
+idouble: 1
+Test "asin_downward (-0x4p-1076)":
+double: 1
+idouble: 1
+Test "asin_downward (-0x4p-128)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "asin_downward (-0x8p-152)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
Test "asin_downward (-0x8p-4)":
ildouble: 1
ldouble: 1
+Test "asin_downward (-0x8p-972)":
+double: 1
+idouble: 1
Test "asin_downward (-0xf.fffffff8p-4)":
ildouble: 1
ldouble: 1
@@ -159,6 +178,44 @@ double: 1
float: 1
idouble: 1
ifloat: 1
+Test "asin_towardzero (-0x2p-16384)":
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x4p-1024)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x4p-1076)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x4p-128)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x4p-16384)":
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x8p-152)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x8p-16448)":
+ildouble: 1
+ldouble: 1
+Test "asin_towardzero (-0x8p-972)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "asin_towardzero (-1.0)":
float: 1
ifloat: 1
@@ -181,6 +238,34 @@ double: 1
float: 1
idouble: 1
ifloat: 1
+Test "asin_upward (-0x2p-16384)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x4p-1024)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x4p-1076)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x4p-128)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x4p-16384)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x8p-152)":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x8p-16448)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (-0x8p-972)":
+ildouble: 1
+ldouble: 1
Test "asin_upward (-0xf.fffffff8p-4)":
ildouble: 1
ldouble: 1
@@ -201,13 +286,58 @@ float: 1
ifloat: 1
ildouble: 1
ldouble: 1
+Test "asin_upward (0x2p-16384)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (0x4p-1024)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (0x4p-1076)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (0x4p-128)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (0x4p-16384)":
+ildouble: 1
+ldouble: 1
+Test "asin_upward (0x8p-152)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "asin_upward (0x8p-16448)":
+ildouble: 1
+ldouble: 1
Test "asin_upward (0x8p-4)":
ildouble: 1
ldouble: 1
+Test "asin_upward (0x8p-972)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "asin_upward (1.0)":
double: 1
idouble: 1
+# asinh
+Test "asinh (0x1p+100)":
+ldouble: 1
+Test "asinh (0xf.424p+16)":
+ildouble: 1
+ldouble: 1
+
# atan2
Test "atan2 (-0x1.effe81f852716ffep-8, -0x7.57d1de0e5124664p-12)":
ildouble: 1
@@ -217,9 +347,18 @@ ildouble: 1
ldouble: 1
# atanh
+Test "atanh (-0xcp-4)":
+ildouble: 2
+ldouble: 1
Test "atanh (0.75)":
ildouble: 2
ldouble: 1
+Test "atanh (0x4p-12)":
+ildouble: 1
+Test "atanh (0x4p-4)":
+ldouble: 1
+Test "atanh (0x8p-8)":
+ildouble: 1
Test "atanh (0xcp-4)":
ildouble: 2
ldouble: 1
@@ -4206,15 +4345,26 @@ ldouble: 1
Test "cbrt (-0x4.18937p-12)":
ildouble: 1
ldouble: 1
+Test "cbrt (-0xf.fffffffffffffffp+16380)":
+ildouble: 1
+ldouble: 1
Test "cbrt (-27.0)":
ildouble: 1
ldouble: 1
Test "cbrt (0.75)":
ildouble: 1
ldouble: 1
+Test "cbrt (0x1.86ap+16)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "cbrt (0xcp-4)":
ildouble: 1
ldouble: 1
+Test "cbrt (0xf.fffffffffffffffp+16380)":
+ildouble: 1
+ldouble: 1
# ccos
Test "Real part of: ccos (-0.75 + 710.5 i)":
@@ -6274,6 +6424,48 @@ idouble: 2
ifloat: 1
# cos_downward
+Test "cos_downward (-0x2p-16384)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x4p-1024)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x4p-1076)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x4p-128)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x4p-16384)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x8p-152)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x8p-16448)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0x8p-972)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0xf.ffffffffffff8p+1020)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (-0xf.fffffp+124)":
+double: 1
+idouble: 1
Test "cos_downward (0x1.000000cf4a2a2p+0)":
double: 1
idouble: 1
@@ -6367,6 +6559,9 @@ idouble: 1
Test "cos_downward (0x2p+0)":
ildouble: 1
ldouble: 1
+Test "cos_downward (0x2p-16384)":
+ildouble: 1
+ldouble: 1
Test "cos_downward (0x3p+0)":
double: 1
idouble: 1
@@ -6378,12 +6573,43 @@ ldouble: 1
Test "cos_downward (0x4p+48)":
double: 1
idouble: 1
+Test "cos_downward (0x4p-1024)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p-1076)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p-128)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x4p-16384)":
+ildouble: 1
+ldouble: 1
Test "cos_downward (0x8p+0)":
ildouble: 2
ldouble: 2
Test "cos_downward (0x8p+1020)":
ildouble: 1
ldouble: 1
+Test "cos_downward (0x8p-152)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x8p-16448)":
+ildouble: 1
+ldouble: 1
+Test "cos_downward (0x8p-972)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "cos_downward (0x9p+0)":
double: 1
idouble: 1
@@ -6416,6 +6642,9 @@ double: 1
idouble: 1
ildouble: 1
ldouble: 1
+Test "cos_downward (0xf.fffffffffffffffp+16380)":
+ildouble: 1
+ldouble: 1
Test "cos_downward (0xf.fffffp+124)":
double: 1
idouble: 1
@@ -6457,6 +6686,43 @@ ildouble: 1
ldouble: 1
# cos_towardzero
+Test "cos_towardzero (-0x2p-16384)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x4p-1024)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x4p-1076)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x4p-128)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x4p-16384)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x8p-152)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x8p-16448)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0x8p-972)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (-0xf.fffffp+124)":
+double: 1
+idouble: 1
Test "cos_towardzero (0x1.000000cf4a2a2p+0)":
double: 1
idouble: 1
@@ -6516,12 +6782,33 @@ idouble: 1
Test "cos_towardzero (0x2p+0)":
double: 1
idouble: 1
+Test "cos_towardzero (0x2p-16384)":
+ildouble: 1
+ldouble: 1
Test "cos_towardzero (0x4p+0)":
double: 1
idouble: 1
Test "cos_towardzero (0x4p+48)":
double: 1
idouble: 1
+Test "cos_towardzero (0x4p-1024)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x4p-1076)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x4p-128)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x4p-16384)":
+ildouble: 1
+ldouble: 1
Test "cos_towardzero (0x8p+0)":
double: 1
idouble: 1
@@ -6530,6 +6817,19 @@ ldouble: 1
Test "cos_towardzero (0x8p+1020)":
double: 1
idouble: 1
+Test "cos_towardzero (0x8p-152)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x8p-16448)":
+ildouble: 1
+ldouble: 1
+Test "cos_towardzero (0x8p-972)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
Test "cos_towardzero (0xa.217bap+12)":
ildouble: 1
ldouble: 1
@@ -6584,6 +6884,12 @@ ldouble: 1
Test "cos_upward (-0x2p+64)":
double: 1
idouble: 1
+Test "cos_upward (-0xf.ffffffffffff8p+1020)":
+ildouble: 1
+ldouble: 1
+Test "cos_upward (-0xf.fffffffffffffffp+16380)":
+ildouble: 1
+ldouble: 1
Test "cos_upward (0x1.000004p+0)":
double: 1
idouble: 1
@@ -6714,6 +7020,9 @@ idouble: 1
Test "cos_upward (0xf.ffffffffffff8p+1020)":
ildouble: 1
ldouble: 1
+Test "cos_upward (0xf.fffffffffffffffp+16380)":
+ildouble: 2
+ldouble: 2
Test "cos_upward (1)":
float: 1
ifloat: 1
@@ -6744,21 +7053,72 @@ ildouble: 1
ldouble: 1
# cosh
+Test "cosh (-0x1p+0)":
+ldouble: 1
+Test "cosh (-0x2.c5d374p+12)":
+ldouble: 2
+Test "cosh (-0x2.c5d37700c6bbp+12)":
+ldouble: 1
Test "cosh (-0x2.c5e3acp+8)":
ildouble: 1
Test "cosh (-0x2.c5e3bp+8)":
ildouble: 1
+Test "cosh (-0x2.c679d1f73f0fap+8)":
+ildouble: 1
+Test "cosh (-0x2.c679d1f73f0fb624p+8)":
+ildouble: 1
+Test "cosh (-0x2.c679d1f73f0fb628p+8)":
+ildouble: 1
+Test "cosh (-0x2.c679d1f73f0fcp+8)":
+ildouble: 1
+Test "cosh (-0x2.c679dp+8)":
+ildouble: 1
Test "cosh (0x1.6p+4)":
ldouble: 1
+Test "cosh (0x2.c5d374p+12)":
+ldouble: 2
+Test "cosh (0x2.c5d37700c6bbp+12)":
+ldouble: 1
# cosh_downward
+Test "cosh_downward (-0x1p+0)":
+ldouble: 1
+Test "cosh_downward (-0x2.c5d374p+12)":
+ldouble: 1
+Test "cosh_downward (-0x2.c5d37700c6bb03a4p+12)":
+ldouble: 3
+Test "cosh_downward (-0x2.c5d37700c6bbp+12)":
+ldouble: 2
Test "cosh_downward (-0x2.c5e3acd2922a6p+8)":
ildouble: 1
Test "cosh_downward (-0x2.c5e3bp+8)":
ildouble: 1
+Test "cosh_downward (-0x2.c679d1f73f0fap+8)":
+ildouble: 2
+Test "cosh_downward (-0x2.c679d1f73f0fcp+8)":
+ildouble: 1
+Test "cosh_downward (-0x2.c679dp+8)":
+double: 1
+ildouble: 1
+Test "cosh_downward (-0x5.96a7ep+4)":
+double: 1
+ildouble: 2
+ldouble: 1
Test "cosh_downward (0x1.6p+4)":
ildouble: 1
ldouble: 2
+Test "cosh_downward (0x2.c5d374p+12)":
+ldouble: 1
+Test "cosh_downward (0x2.c5d37700c6bb03a4p+12)":
+ldouble: 3
+Test "cosh_downward (0x2.c5d37700c6bbp+12)":
+ldouble: 2
+Test "cosh_downward (0x2.c679dp+8)":
+double: 1
+Test "cosh_downward (0x5.96a7ep+4)":
+double: 1
+ildouble: 1
+ldouble: 1
Test "cosh_downward (22)":
double: 1
float: 1
@@ -6780,21 +7140,68 @@ ildouble: 1
ldouble: 1
# cosh_tonearest
+Test "cosh_tonearest (-0x1p+0)":
+ldouble: 1
+Test "cosh_tonearest (-0x2.c5d374p+12)":
+ldouble: 2
+Test "cosh_tonearest (-0x2.c5d37700c6bbp+12)":
+ldouble: 1
Test "cosh_tonearest (-0x2.c5e3acp+8)":
ildouble: 1
Test "cosh_tonearest (-0x2.c5e3bp+8)":
ildouble: 1
+Test "cosh_tonearest (-0x2.c679d1f73f0fap+8)":
+ildouble: 1
+Test "cosh_tonearest (-0x2.c679d1f73f0fb624p+8)":
+ildouble: 1
+Test "cosh_tonearest (-0x2.c679d1f73f0fb628p+8)":
+ildouble: 1
+Test "cosh_tonearest (-0x2.c679d1f73f0fcp+8)":
+ildouble: 1
+Test "cosh_tonearest (-0x2.c679dp+8)":
+ildouble: 1
Test "cosh_tonearest (0x1.6p+4)":
ldouble: 1
+Test "cosh_tonearest (0x2.c5d374p+12)":
+ldouble: 2
+Test "cosh_tonearest (0x2.c5d37700c6bbp+12)":
+ldouble: 1
Test "cosh_tonearest (22)":
ldouble: 1
# cosh_towardzero
+Test "cosh_towardzero (-0x1p+0)":
+ildouble: 1
+ldouble: 1
+Test "cosh_towardzero (-0x2.c5d374p+12)":
+ldouble: 1
+Test "cosh_towardzero (-0x2.c5d37700c6bb03a4p+12)":
+ldouble: 3
+Test "cosh_towardzero (-0x2.c5d37700c6bbp+12)":
+ldouble: 2
Test "cosh_towardzero (-0x2.c5e3acd2922a6p+8)":
ildouble: 1
+Test "cosh_towardzero (-0x2.c679dp+8)":
+double: 1
+ildouble: 1
+Test "cosh_towardzero (-0x5.96a7ep+4)":
+double: 1
+ldouble: 1
Test "cosh_towardzero (0x1.6p+4)":
ildouble: 1
ldouble: 2
+Test "cosh_towardzero (0x2.c5d374p+12)":
+ldouble: 1
+Test "cosh_towardzero (0x2.c5d37700c6bb03a4p+12)":
+ldouble: 3
+Test "cosh_towardzero (0x2.c5d37700c6bbp+12)":
+ldouble: 2
+Test "cosh_towardzero (0x2.c679dp+8)":
+double: 1
+Test "cosh_towardzero (0x5.96a7ep+4)":
+double: 1
+ildouble: 1
+ldouble: 1
Test "cosh_towardzero (22)":
double: 1
float: 1
@@ -6816,6 +7223,12 @@ ildouble: 1
ldouble: 1
# cosh_upward
+Test "cosh_upward (-0x2.c5d374p+12)":
+ldouble: 2
+Test "cosh_upward (-0x2.c5d37700c6bb03a4p+12)":
+ldouble: 3
+Test "cosh_upward (-0x2.c5d37700c6bbp+12)":
+ldouble: 3
Test "cosh_upward (-0x2.c5e3acd2922a6p+8)":
double: 1
ildouble: 1
@@ -6824,6 +7237,36 @@ Test "cosh_upward (-0x2.c5e3acp+8)":
ildouble: 1
Test "cosh_upward (-0x2.c5e3bp+8)":
ildouble: 1
+Test "cosh_upward (-0x2.c679d1f73f0fap+8)":
+double: 1
+ildouble: 1
+Test "cosh_upward (-0x2.c679d1f73f0fcp+8)":
+ildouble: 1
+Test "cosh_upward (-0x2p-16384)":
+ildouble: 1
+Test "cosh_upward (-0x4p-1024)":
+idouble: 1
+ildouble: 1
+Test "cosh_upward (-0x4p-1076)":
+idouble: 1
+ildouble: 1
+Test "cosh_upward (-0x4p-128)":
+idouble: 1
+ifloat: 1
+ildouble: 1
+Test "cosh_upward (-0x4p-16384)":
+ildouble: 1
+Test "cosh_upward (-0x5.96a7ep+4)":
+ildouble: 1
+Test "cosh_upward (-0x8p-152)":
+idouble: 1
+ifloat: 1
+ildouble: 1
+Test "cosh_upward (-0x8p-16448)":
+ildouble: 1
+Test "cosh_upward (-0x8p-972)":
+idouble: 1
+ildouble: 1
Test "cosh_upward (0x1.6p+4)":
ildouble: 1
ldouble: 1
@@ -6832,6 +7275,12 @@ ildouble: 2
ldouble: 1
Test "cosh_upward (0x1.8p+4)":
ildouble: 1
+Test "cosh_upward (0x2.c5d374p+12)":
+ldouble: 2
+Test "cosh_upward (0x2.c5d37700c6bb03a4p+12)":
+ldouble: 3
+Test "cosh_upward (0x2.c5d37700c6bbp+12)":
+ldouble: 3
Test "cosh_upward (0x2.c5e3acd2922a6p+8)":
double: 1
ildouble: 2
@@ -6840,6 +7289,21 @@ Test "cosh_upward (0x2.c5e3acp+8)":
ildouble: 1
Test "cosh_upward (0x2.c5e3bp+8)":
ildouble: 1
+Test "cosh_upward (0x2.c679d1f73f0fap+8)":
+double: 1
+ildouble: 1
+Test "cosh_upward (0x2.c679d1f73f0fcp+8)":
+ildouble: 1
+Test "cosh_upward (0x2.c679d4p+8)":
+ildouble: 1
+Test "cosh_upward (0x2.c679dp+8)":
+ildouble: 1
+Test "cosh_upward (0x3.2p+4)":
+ildouble: 1
+Test "cosh_upward (0x5.96a7e8p+4)":
+ildouble: 1
+Test "cosh_upward (0x5.96a7ep+4)":
+ildouble: 1
Test "cosh_upward (22)":
ildouble: 2
ldouble: 1
@@ -13805,6 +14269,10 @@ ifloat: 1
ildouble: 1
ldouble: 1
+Function: "asinh":
+ildouble: 1
+ldouble: 1
+
Function: "atan2":
ildouble: 1
ldouble: 1
@@ -13894,6 +14362,8 @@ ildouble: 1
ldouble: 1
Function: "cbrt":
+double: 1
+idouble: 1
ildouble: 1
ldouble: 1
@@ -14011,19 +14481,19 @@ ldouble: 2
Function: "cosh":
ildouble: 1
-ldouble: 1
+ldouble: 2
Function: "cosh_downward":
double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 1
-ldouble: 2
+ildouble: 2
+ldouble: 3
Function: "cosh_tonearest":
ildouble: 1
-ldouble: 1
+ldouble: 2
Function: "cosh_towardzero":
double: 1
@@ -14031,13 +14501,14 @@ float: 1
idouble: 1
ifloat: 1
ildouble: 1
-ldouble: 2
+ldouble: 3
Function: "cosh_upward":
double: 1
idouble: 1
+ifloat: 1
ildouble: 2
-ldouble: 1
+ldouble: 3
Function: Real part of "cpow":
double: 2