about summary refs log tree commit diff
path: root/sysdeps/x86_64
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-04-30 11:27:35 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-04-30 11:27:35 +0000
commitcaf84319c1614d8aa867d8db80219f4e9b1bf735 (patch)
tree08263d4ddcdf643fc258daeb43718821a2e2fbde /sysdeps/x86_64
parent6dbe713d85fecc1bee99713d745413106af200b7 (diff)
downloadglibc-caf84319c1614d8aa867d8db80219f4e9b1bf735.tar.gz
glibc-caf84319c1614d8aa867d8db80219f4e9b1bf735.tar.xz
glibc-caf84319c1614d8aa867d8db80219f4e9b1bf735.zip
Fix catan, catanh inaccuracy from atan2 denominators near 0 (bug 15416).
Diffstat (limited to 'sysdeps/x86_64')
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps422
1 files changed, 420 insertions, 2 deletions
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 43b5595c5a..7ef2832190 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -4205,6 +4205,32 @@ double: 1
 idouble: 1
 
 # catan
+Test "Imaginary part of: catan (-0x0.fffffffffffff8p0 + 0x1p-27 i) == -7.853981633974482679822974223765039144191e-1 + 3.725290298461914441624447420137706700965e-9 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: catan (-0x0.ffffffffffffffffp0 + 0x1p-33 i) == -7.853981633974483095919439232967553115548e-1 + 5.820766091346740722958646680334721192083e-11 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catan (-0x0.ffffffp0 + 0x1p-13 i) == -7.853981373204155542484315721351697277336e-1 + 6.103515973639646453881721999956617260502e-5 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: catan (-0x1.0000000000001p0 + 0x1p-27 i) == -7.853981633974484345157511161499711112683e-1 + 3.725290298461913200853528590596263270474e-9 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catan (-0x1.0000000000001p0 - 0x1p-27 i) == -7.853981633974484345157511161499711112683e-1 - 3.725290298461913200853528590596263270474e-9 i":
+double: 1
+idouble: 1
+Test "Real part of: catan (-0x1.000002p0 + 0x1p-13 i) == -7.853982267273793866654490522673596014524e-1 + 6.103514882246036852433556327261700380577e-5 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1.000002p0 - 0x1p-13 i) == -7.853982267273793866654490522673596014524e-1 - 6.103514882246036852433556327261700380577e-5 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (-0x1.000002p0 - 0x1p-13 i) == -7.853982267273793866654490522673596014524e-1 - 6.103514882246036852433556327261700380577e-5 i":
+double: 1
+idouble: 1
 Test "Imaginary part of: catan (-0x1.fp1023 + 0x1.fp1023 i) == -1.570796326794896619231321691639751442099 + 2.871063043235098558826106732041811695767e-309 i":
 double: 1
 idouble: 1
@@ -4225,6 +4251,84 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: catan (-0x1p-13 + 0x1.000002p0 i) == -7.859169620684960844300240092596908675974e-1 + 4.852030056234795712498957387213592193975 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-13 + 1.0 i) == -7.854286809755354140031716771044626356262e-1 + 4.852030264850939738801379894163661227127 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-13 - 0x1.000002p0 i) == -7.859169620684960844300240092596908675974e-1 - 4.852030056234795712498957387213592193975 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (-0x1p-13 - 0x1.000002p0 i) == -7.859169620684960844300240092596908675974e-1 - 4.852030056234795712498957387213592193975 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-13 - 1.0 i) == -7.854286809755354140031716771044626356262e-1 - 4.852030264850939738801379894163661227127 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-27 + 1.0 i) == -7.853981652600934588466178684534110069553e-1 + 9.704060527839234335310696652368086117807 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-27 - 1.0 i) == -7.853981652600934588466178684534110069553e-1 - 9.704060527839234335310696652368086117807 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (-0x1p-33 + 0x0.ffffffffffffffffp0 i) == -7.853981631937214964185249205444919953948e-1 + 1.178350206951907026002603046195591193050e1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catan (-0x1p-33 + 1.0 i) == -7.853981634265521400723945494331241018449e-1 + 1.178350206951907026009379309773625595762e1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (-0x1p-33 - 0x0.ffffffffffffffffp0 i) == -7.853981631937214964185249205444919953948e-1 - 1.178350206951907026002603046195591193050e1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catan (-0x1p-33 - 1.0 i) == -7.853981634265521400723945494331241018449e-1 - 1.178350206951907026009379309773625595762e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-54 + 1.0 i) == -7.853981633974483234934486536343324763447e-1 + 1.906154746539849600897388334009985581467e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-54 - 1.0 i) == -7.853981633974483234934486536343324763447e-1 - 1.906154746539849600897388334009985581467e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-57 + 1.0 i) == -7.853981633974483113503843217966828154612e-1 + 2.010126823623841397309973152228712047720e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-0x1p-57 - 1.0 i) == -7.853981633974483113503843217966828154612e-1 - 2.010126823623841397309973152228712047720e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 + 0x1p-13 i) == -7.853981671227386080775748393881580082970e-1 + 6.103515609841754902688560615027452023669e-5 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 + 0x1p-27 i) == -7.853981633974483234934486536343324763447e-1 + 3.725290298461914028034141143623846306386e-9 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 + 0x1p-33 i) == -7.853981633974483096190489776088929224056e-1 + 5.820766091346740722643102318246316469910e-11 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 + 0x1p-54 i) == -7.853981633974483096156608458198764914213e-1 + 2.775557561562891351059079170227049355775e-17 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 + 0x1p-57 i) == -7.853981633974483096156608458198757330864e-1 + 3.469446951953614188823848962783813448721e-18 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 - 0x1p-13 i) == -7.853981671227386080775748393881580082970e-1 - 6.103515609841754902688560615027452023669e-5 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (-1.0 - 0x1p-13 i) == -7.853981671227386080775748393881580082970e-1 - 6.103515609841754902688560615027452023669e-5 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catan (-1.0 - 0x1p-27 i) == -7.853981633974483234934486536343324763447e-1 - 3.725290298461914028034141143623846306386e-9 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 - 0x1p-33 i) == -7.853981633974483096190489776088929224056e-1 - 5.820766091346740722643102318246316469910e-11 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 - 0x1p-54 i) == -7.853981633974483096156608458198764914213e-1 - 2.775557561562891351059079170227049355775e-17 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (-1.0 - 0x1p-57 i) == -7.853981633974483096156608458198757330864e-1 - 3.469446951953614188823848962783813448721e-18 i":
+float: 1
+ifloat: 1
 Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
 float: 3
 ifloat: 3
@@ -4236,6 +4340,32 @@ ifloat: 1
 Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
 float: 4
 ifloat: 4
+Test "Imaginary part of: catan (0x0.fffffffffffff8p0 + 0x1p-27 i) == 7.853981633974482679822974223765039144191e-1 + 3.725290298461914441624447420137706700965e-9 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: catan (0x0.ffffffffffffffffp0 + 0x1p-33 i) == 7.853981633974483095919439232967553115548e-1 + 5.820766091346740722958646680334721192083e-11 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catan (0x0.ffffffp0 + 0x1p-13 i) == 7.853981373204155542484315721351697277336e-1 + 6.103515973639646453881721999956617260502e-5 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: catan (0x1.0000000000001p0 + 0x1p-27 i) == 7.853981633974484345157511161499711112683e-1 + 3.725290298461913200853528590596263270474e-9 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catan (0x1.0000000000001p0 - 0x1p-27 i) == 7.853981633974484345157511161499711112683e-1 - 3.725290298461913200853528590596263270474e-9 i":
+double: 1
+idouble: 1
+Test "Real part of: catan (0x1.000002p0 + 0x1p-13 i) == 7.853982267273793866654490522673596014524e-1 + 6.103514882246036852433556327261700380577e-5 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1.000002p0 - 0x1p-13 i) == 7.853982267273793866654490522673596014524e-1 - 6.103514882246036852433556327261700380577e-5 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (0x1.000002p0 - 0x1p-13 i) == 7.853982267273793866654490522673596014524e-1 - 6.103514882246036852433556327261700380577e-5 i":
+double: 1
+idouble: 1
 Test "Imaginary part of: catan (0x1.fp1023 + 0x1.fp1023 i) == 1.570796326794896619231321691639751442099 + 2.871063043235098558826106732041811695767e-309 i":
 double: 1
 idouble: 1
@@ -4256,8 +4386,104 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: catan (0x1p-13 + 0x1.000002p0 i) == 7.859169620684960844300240092596908675974e-1 + 4.852030056234795712498957387213592193975 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-13 + 1.0 i) == 7.854286809755354140031716771044626356262e-1 + 4.852030264850939738801379894163661227127 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-13 - 0x1.000002p0 i) == 7.859169620684960844300240092596908675974e-1 - 4.852030056234795712498957387213592193975 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (0x1p-13 - 0x1.000002p0 i) == 7.859169620684960844300240092596908675974e-1 - 4.852030056234795712498957387213592193975 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-13 - 1.0 i) == 7.854286809755354140031716771044626356262e-1 - 4.852030264850939738801379894163661227127 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-27 + 1.0 i) == 7.853981652600934588466178684534110069553e-1 + 9.704060527839234335310696652368086117807 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-27 - 1.0 i) == 7.853981652600934588466178684534110069553e-1 - 9.704060527839234335310696652368086117807 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (0x1p-33 + 0x0.ffffffffffffffffp0 i) == 7.853981631937214964185249205444919953948e-1 + 1.178350206951907026002603046195591193050e1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catan (0x1p-33 + 1.0 i) == 7.853981634265521400723945494331241018449e-1 + 1.178350206951907026009379309773625595762e1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (0x1p-33 - 0x0.ffffffffffffffffp0 i) == 7.853981631937214964185249205444919953948e-1 - 1.178350206951907026002603046195591193050e1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catan (0x1p-33 - 1.0 i) == 7.853981634265521400723945494331241018449e-1 - 1.178350206951907026009379309773625595762e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-54 + 1.0 i) == 7.853981633974483234934486536343324763447e-1 + 1.906154746539849600897388334009985581467e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-54 - 1.0 i) == 7.853981633974483234934486536343324763447e-1 - 1.906154746539849600897388334009985581467e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-57 + 1.0 i) == 7.853981633974483113503843217966828154612e-1 + 2.010126823623841397309973152228712047720e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (0x1p-57 - 1.0 i) == 7.853981633974483113503843217966828154612e-1 - 2.010126823623841397309973152228712047720e1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 + 0x1p-13 i) == 7.853981671227386080775748393881580082970e-1 + 6.103515609841754902688560615027452023669e-5 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 + 0x1p-27 i) == 7.853981633974483234934486536343324763447e-1 + 3.725290298461914028034141143623846306386e-9 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 + 0x1p-33 i) == 7.853981633974483096190489776088929224056e-1 + 5.820766091346740722643102318246316469910e-11 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 + 0x1p-54 i) == 7.853981633974483096156608458198764914213e-1 + 2.775557561562891351059079170227049355775e-17 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 + 0x1p-57 i) == 7.853981633974483096156608458198757330864e-1 + 3.469446951953614188823848962783813448721e-18 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 - 0x1p-13 i) == 7.853981671227386080775748393881580082970e-1 - 6.103515609841754902688560615027452023669e-5 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catan (1.0 - 0x1p-13 i) == 7.853981671227386080775748393881580082970e-1 - 6.103515609841754902688560615027452023669e-5 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catan (1.0 - 0x1p-27 i) == 7.853981633974483234934486536343324763447e-1 - 3.725290298461914028034141143623846306386e-9 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 - 0x1p-33 i) == 7.853981633974483096190489776088929224056e-1 - 5.820766091346740722643102318246316469910e-11 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 - 0x1p-54 i) == 7.853981633974483096156608458198764914213e-1 - 2.775557561562891351059079170227049355775e-17 i":
+float: 1
+ifloat: 1
+Test "Real part of: catan (1.0 - 0x1p-57 i) == 7.853981633974483096156608458198757330864e-1 - 3.469446951953614188823848962783813448721e-18 i":
+float: 1
+ifloat: 1
 
 # catanh
+Test "Real part of: catanh (-0x0.ffffffffffffffffp0 + 0x1p-33 i) == -1.178350206951907026002603046195591193050e1 + 7.853981631937214964185249205444919953948e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catanh (-0x0.ffffffffffffffffp0 - 0x1p-33 i) == -1.178350206951907026002603046195591193050e1 - 7.853981631937214964185249205444919953948e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catanh (-0x1.000002p0 + 0x1p-13 i) == -4.852030056234795712498957387213592193975 + 7.859169620684960844300240092596908675974e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1.000002p0 + 0x1p-13 i) == -4.852030056234795712498957387213592193975 + 7.859169620684960844300240092596908675974e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (-0x1.000002p0 - 0x1p-13 i) == -4.852030056234795712498957387213592193975 - 7.859169620684960844300240092596908675974e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1.000002p0 - 0x1p-13 i) == -4.852030056234795712498957387213592193975 - 7.859169620684960844300240092596908675974e-1 i":
+float: 1
+ifloat: 1
 Test "Real part of: catanh (-0x1.fp1023 + 0x1.fp1023 i) == -2.871063043235098558826106732041811695767e-309 + 1.570796326794896619231321691639751442099 i":
 double: 1
 idouble: 1
@@ -4278,6 +4504,90 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: catanh (-0x1p-13 + 0x1.000002p0 i) == -6.103514882246036852433556327261700380577e-5 + 7.853982267273793866654490522673596014524e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: catanh (-0x1p-13 + 0x1.000002p0 i) == -6.103514882246036852433556327261700380577e-5 + 7.853982267273793866654490522673596014524e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (-0x1p-13 + 1.0 i) == -6.103515609841754902688560615027452023669e-5 + 7.853981671227386080775748393881580082970e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (-0x1p-13 + 1.0 i) == -6.103515609841754902688560615027452023669e-5 + 7.853981671227386080775748393881580082970e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (-0x1p-13 - 0x1.000002p0 i) == -6.103514882246036852433556327261700380577e-5 - 7.853982267273793866654490522673596014524e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: catanh (-0x1p-13 - 0x1.000002p0 i) == -6.103514882246036852433556327261700380577e-5 - 7.853982267273793866654490522673596014524e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (-0x1p-13 - 1.0 i) == -6.103515609841754902688560615027452023669e-5 - 7.853981671227386080775748393881580082970e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (-0x1p-13 - 1.0 i) == -6.103515609841754902688560615027452023669e-5 - 7.853981671227386080775748393881580082970e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (-0x1p-27 + 0x1.0000000000001p0 i) == -3.725290298461913200853528590596263270474e-9 + 7.853981633974484345157511161499711112683e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: catanh (-0x1p-27 + 1.0 i) == -3.725290298461914028034141143623846306386e-9 + 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (-0x1p-27 - 0x1.0000000000001p0 i) == -3.725290298461913200853528590596263270474e-9 - 7.853981633974484345157511161499711112683e-1 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: catanh (-0x1p-27 - 1.0 i) == -3.725290298461914028034141143623846306386e-9 - 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1p-33 + 1.0 i) == -5.820766091346740722643102318246316469910e-11 + 7.853981633974483096190489776088929224056e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1p-33 - 1.0 i) == -5.820766091346740722643102318246316469910e-11 - 7.853981633974483096190489776088929224056e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1p-54 + 1.0 i) == -2.775557561562891351059079170227049355775e-17 + 7.853981633974483096156608458198764914213e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1p-54 - 1.0 i) == -2.775557561562891351059079170227049355775e-17 - 7.853981633974483096156608458198764914213e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1p-57 + 1.0 i) == -3.469446951953614188823848962783813448721e-18 + 7.853981633974483096156608458198757330864e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-0x1p-57 - 1.0 i) == -3.469446951953614188823848962783813448721e-18 - 7.853981633974483096156608458198757330864e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 + 0x1p-13 i) == -4.852030264850939738801379894163661227127 + 7.854286809755354140031716771044626356262e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 + 0x1p-27 i) == -9.704060527839234335310696652368086117807 + 7.853981652600934588466178684534110069553e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 + 0x1p-33 i) == -1.178350206951907026009379309773625595762e1 + 7.853981634265521400723945494331241018449e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 + 0x1p-54 i) == -1.906154746539849600897388334009985581467e1 + 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 + 0x1p-57 i) == -2.010126823623841397309973152228712047720e1 + 7.853981633974483113503843217966828154612e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 - 0x1p-13 i) == -4.852030264850939738801379894163661227127 - 7.854286809755354140031716771044626356262e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 - 0x1p-27 i) == -9.704060527839234335310696652368086117807 - 7.853981652600934588466178684534110069553e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 - 0x1p-33 i) == -1.178350206951907026009379309773625595762e1 - 7.853981634265521400723945494331241018449e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 - 0x1p-54 i) == -1.906154746539849600897388334009985581467e1 - 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (-1.0 - 0x1p-57 i) == -2.010126823623841397309973152228712047720e1 - 7.853981633974483113503843217966828154612e-1 i":
+float: 1
+ifloat: 1
 Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
 double: 4
 idouble: 4
@@ -4294,6 +4604,18 @@ ldouble: 1
 Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
 float: 6
 ifloat: 6
+Test "Real part of: catanh (0x0.ffffffffffffffffp0 + 0x1p-33 i) == 1.178350206951907026002603046195591193050e1 + 7.853981631937214964185249205444919953948e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Real part of: catanh (0x0.ffffffffffffffffp0 - 0x1p-33 i) == 1.178350206951907026002603046195591193050e1 - 7.853981631937214964185249205444919953948e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (0x1.000002p0 + 0x1p-13 i) == 4.852030056234795712498957387213592193975 + 7.859169620684960844300240092596908675974e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1.000002p0 - 0x1p-13 i) == 4.852030056234795712498957387213592193975 - 7.859169620684960844300240092596908675974e-1 i":
+float: 1
+ifloat: 1
 Test "Real part of: catanh (0x1.fp1023 + 0x1.fp1023 i) == 2.871063043235098558826106732041811695767e-309 + 1.570796326794896619231321691639751442099 i":
 double: 1
 idouble: 1
@@ -4314,6 +4636,100 @@ double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "Real part of: catanh (0x1p-13 + 0x0.ffffffp0 i) == 6.103515973639646453881721999956617260502e-5 + 7.853981373204155542484315721351697277336e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-13 + 0x1.000002p0 i) == 6.103514882246036852433556327261700380577e-5 + 7.853982267273793866654490522673596014524e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-13 + 1.0 i) == 6.103515609841754902688560615027452023669e-5 + 7.853981671227386080775748393881580082970e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (0x1p-13 - 0x0.ffffffp0 i) == 6.103515973639646453881721999956617260502e-5 - 7.853981373204155542484315721351697277336e-1 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-13 - 0x1.000002p0 i) == 6.103514882246036852433556327261700380577e-5 - 7.853982267273793866654490522673596014524e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-13 - 1.0 i) == 6.103515609841754902688560615027452023669e-5 - 7.853981671227386080775748393881580082970e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (0x1p-27 + 0x0.fffffffffffff8p0 i) == 3.725290298461914441624447420137706700965e-9 + 7.853981633974482679822974223765039144191e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: catanh (0x1p-27 + 0x1.0000000000001p0 i) == 3.725290298461913200853528590596263270474e-9 + 7.853981633974484345157511161499711112683e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (0x1p-27 + 1.0 i) == 3.725290298461914028034141143623846306386e-9 + 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (0x1p-27 - 0x0.fffffffffffff8p0 i) == 3.725290298461914441624447420137706700965e-9 - 7.853981633974482679822974223765039144191e-1 i":
+double: 1
+idouble: 1
+Test "Real part of: catanh (0x1p-27 - 0x1.0000000000001p0 i) == 3.725290298461913200853528590596263270474e-9 - 7.853981633974484345157511161499711112683e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (0x1p-27 - 1.0 i) == 3.725290298461914028034141143623846306386e-9 - 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (0x1p-33 + 0x0.ffffffffffffffffp0 i) == 5.820766091346740722958646680334721192083e-11 + 7.853981633974483095919439232967553115548e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (0x1p-33 + 1.0 i) == 5.820766091346740722643102318246316469910e-11 + 7.853981633974483096190489776088929224056e-1 i":
+float: 1
+ifloat: 1
+Test "Real part of: catanh (0x1p-33 - 0x0.ffffffffffffffffp0 i) == 5.820766091346740722958646680334721192083e-11 - 7.853981633974483095919439232967553115548e-1 i":
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: catanh (0x1p-33 - 1.0 i) == 5.820766091346740722643102318246316469910e-11 - 7.853981633974483096190489776088929224056e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-54 + 1.0 i) == 2.775557561562891351059079170227049355775e-17 + 7.853981633974483096156608458198764914213e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-54 - 1.0 i) == 2.775557561562891351059079170227049355775e-17 - 7.853981633974483096156608458198764914213e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-57 + 1.0 i) == 3.469446951953614188823848962783813448721e-18 + 7.853981633974483096156608458198757330864e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (0x1p-57 - 1.0 i) == 3.469446951953614188823848962783813448721e-18 - 7.853981633974483096156608458198757330864e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 + 0x1p-13 i) == 4.852030264850939738801379894163661227127 + 7.854286809755354140031716771044626356262e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 + 0x1p-27 i) == 9.704060527839234335310696652368086117807 + 7.853981652600934588466178684534110069553e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 + 0x1p-33 i) == 1.178350206951907026009379309773625595762e1 + 7.853981634265521400723945494331241018449e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 + 0x1p-54 i) == 1.906154746539849600897388334009985581467e1 + 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 + 0x1p-57 i) == 2.010126823623841397309973152228712047720e1 + 7.853981633974483113503843217966828154612e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 - 0x1p-13 i) == 4.852030264850939738801379894163661227127 - 7.854286809755354140031716771044626356262e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 - 0x1p-27 i) == 9.704060527839234335310696652368086117807 - 7.853981652600934588466178684534110069553e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 - 0x1p-33 i) == 1.178350206951907026009379309773625595762e1 - 7.853981634265521400723945494331241018449e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 - 0x1p-54 i) == 1.906154746539849600897388334009985581467e1 - 7.853981633974483234934486536343324763447e-1 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: catanh (1.0 - 0x1p-57 i) == 2.010126823623841397309973152228712047720e1 - 7.853981633974483113503843217966828154612e-1 i":
+float: 1
+ifloat: 1
 
 # cbrt
 Test "cbrt (-0.001) == -0.1":
@@ -6865,13 +7281,15 @@ ldouble: 1
 
 Function: Real part of "catanh":
 double: 4
+float: 1
 idouble: 4
+ifloat: 1
 ildouble: 1
 ldouble: 1
 
 Function: Imaginary part of "catanh":
-float: 6
-ifloat: 6
+float: 1
+ifloat: 1
 
 Function: "cbrt":
 double: 1