aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2025-03-07 19:15:26 +0000
committerJoseph Myers <josmyers@redhat.com>2025-03-07 19:15:26 +0000
commit77261698b4e938020a1b2032709a54d942ba330f (patch)
tree6d7b1dd547ad3ed168503f308f627327a4f69b89 /math
parentee3b1d15da412be19583085f81c220653b270c1f (diff)
downloadglibc-77261698b4e938020a1b2032709a54d942ba330f.tar.xz
glibc-77261698b4e938020a1b2032709a54d942ba330f.zip
Implement C23 rsqrt
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the rsqrt functions (1/sqrt(x)). The test inputs are taken from those for sqrt. Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'math')
-rw-r--r--math/Makefile6
-rw-r--r--math/Versions6
-rw-r--r--math/auto-libm-test-in68
-rw-r--r--math/auto-libm-test-out-rsqrt3375
-rw-r--r--math/bits/mathcalls.h5
-rw-r--r--math/gen-auto-libm-tests.c3
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-rsqrt.inc58
-rw-r--r--math/s_rsqrt_template.c29
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h4
11 files changed, 3566 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index 6dab60095b..7aabf355b4 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -139,6 +139,7 @@ gen-libm-calls = \
s_log2p1F \
s_nanF \
s_nextdownF \
+ s_rsqrtF \
s_significandF \
s_sinpiF \
s_tanpiF \
@@ -682,6 +683,7 @@ libm-test-funcs-auto = \
log1p \
log2p1 \
pow \
+ rsqrt \
sin \
sincos \
sinh \
@@ -1017,6 +1019,7 @@ tgmath3-macros = \
rint \
round \
roundeven \
+ rsqrt \
scalb \
scalbln \
scalbn \
@@ -1462,6 +1465,7 @@ CFLAGS-s_remquo.c += -fno-builtin-remquol
CFLAGS-s_rint.c += -fno-builtin-rintl
CFLAGS-s_round.c += -fno-builtin-roundl
CFLAGS-s_roundeven.c += -fno-builtin-roundevenl
+CFLAGS-s_rsqrt.c += -fno-builtin-rsqrtl
CFLAGS-w_scalb.c += -fno-builtin-scalbl
CFLAGS-w_scalbln.c += -fno-builtin-scalblnl
CFLAGS-s_scalbn.c += -fno-builtin-scalbnl
@@ -1596,6 +1600,7 @@ CFLAGS-s_remquo.c += -fno-builtin-remquof32x -fno-builtin-remquof64
CFLAGS-s_rint.c += -fno-builtin-rintf32x -fno-builtin-rintf64
CFLAGS-s_round.c += -fno-builtin-roundf32x -fno-builtin-roundf64
CFLAGS-s_roundeven.c += -fno-builtin-roundevenf32x -fno-builtin-roundevenf64
+CFLAGS-s_rsqrt.c += -fno-builtin-rsqrtf32x -fno-builtin-rsqrtf64
CFLAGS-w_scalbln.c += -fno-builtin-scalblnf32x -fno-builtin-scalblnf64
CFLAGS-s_scalbn.c += -fno-builtin-scalbnf32x -fno-builtin-scalbnf64
CFLAGS-s_setpayload.c += -fno-builtin-setpayloadf32x -fno-builtin-setpayloadf64
@@ -1721,6 +1726,7 @@ CFLAGS-s_remquof.c += -fno-builtin-remquof32
CFLAGS-s_rintf.c += -fno-builtin-rintf32
CFLAGS-s_roundf.c += -fno-builtin-roundf32
CFLAGS-s_roundevenf.c += -fno-builtin-roundevenf32
+CFLAGS-s_rsqrtf.c += -fno-builtin-rsqrtf32
CFLAGS-w_scalblnf.c += -fno-builtin-scalblnf32
CFLAGS-s_scalbnf.c += -fno-builtin-scalbnf32
CFLAGS-s_setpayloadf.c += -fno-builtin-setpayloadf32
diff --git a/math/Versions b/math/Versions
index e4fbef3f6d..34cdf2f8e8 100644
--- a/math/Versions
+++ b/math/Versions
@@ -671,4 +671,10 @@ libm {
sinpif64x; sinpif128;
tanpif64x; tanpif128;
}
+ GLIBC_2.42 {
+ # Functions not involving _Float64x or _Float128, for all configurations.
+ rsqrt; rsqrtf; rsqrtl; rsqrtf32; rsqrtf64; rsqrtf32x;
+ # Functions involving _Float64x or _Float128, for some configurations.
+ rsqrtf64x; rsqrtf128;
+ }
}
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 7dd9cde9c9..989ce5d736 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -8151,6 +8151,74 @@ pow 0x1.059c76p+0 0x1.ff80bep+11
pow 0x1.7ac7cp+5 23
pow -0x1.7ac7cp+5 23
+rsqrt 2209
+rsqrt 4
+rsqrt 2
+rsqrt 0.25
+rsqrt 6642.25
+rsqrt 15190.5625
+rsqrt 0.75
+rsqrt 0x1.fffffffffffffp+1023
+rsqrt 0x1.ffffffffffffbp+1023
+rsqrt 0x1.ffffffffffff7p+1023
+rsqrt 0x1.ffffffffffff3p+1023
+rsqrt 0x1.fffffffffffefp+1023
+rsqrt 0x1.fffffffffffebp+1023
+rsqrt 0x1.fffffffffffe7p+1023
+rsqrt 0x1.fffffffffffe3p+1023
+rsqrt 0x1.fffffffffffdfp+1023
+rsqrt 0x1.fffffffffffdbp+1023
+rsqrt 0x1.fffffffffffd7p+1023
+rsqrt 0x1.0000000000003p-1022
+rsqrt 0x1.0000000000007p-1022
+rsqrt 0x1.000000000000bp-1022
+rsqrt 0x1.000000000000fp-1022
+rsqrt 0x1.0000000000013p-1022
+rsqrt 0x1.0000000000017p-1022
+rsqrt 0x1.000000000001bp-1022
+rsqrt 0x1.000000000001fp-1022
+rsqrt 0x1.0000000000023p-1022
+rsqrt 0x1.0000000000027p-1022
+rsqrt 0x1.000000000002bp-1022
+rsqrt 0x1.000000000002fp-1022
+rsqrt 0x1.0000000000033p-1022
+rsqrt 0x1.0000000000037p-1022
+rsqrt 0x1.7167bc36eaa3bp+6
+rsqrt 0x1.7570994273ad7p+6
+rsqrt 0x1.7dae969442fe6p+6
+rsqrt 0x1.7f8444fcf67e5p+6
+rsqrt 0x1.8364650e63a54p+6
+rsqrt 0x1.85bedd274edd8p+6
+rsqrt 0x1.8609cf496ab77p+6
+rsqrt 0x1.873849c70a375p+6
+rsqrt 0x1.8919c962cbaaep+6
+rsqrt 0x1.8de4493e22dc6p+6
+rsqrt 0x1.924829a17a288p+6
+rsqrt 0x1.92702cd992f12p+6
+rsqrt 0x1.92b763a8311fdp+6
+rsqrt 0x1.947da013c7293p+6
+rsqrt 0x1.9536091c494d2p+6
+rsqrt 0x1.61b04c6p-1019
+rsqrt 0x1.93789f1p-1018
+rsqrt 0x1.a1989b4p-1018
+rsqrt 0x1.f93bc9p-1018
+rsqrt 0x1.2f675e3p-1017
+rsqrt 0x1.a158508p-1017
+rsqrt 0x1.cd31f078p-1017
+rsqrt 0x1.33b43b08p-1016
+rsqrt 0x1.6e66a858p-1016
+rsqrt 0x1.8661cbf8p-1016
+rsqrt 0x1.bbb221b4p-1016
+rsqrt 0x1.c4942f3cp-1016
+rsqrt 0x1.dbb258c8p-1016
+rsqrt 0x1.57103ea4p-1015
+rsqrt 0x1.9b294f88p-1015
+rsqrt 0x1.0000000000001p+0
+rsqrt 0x1.fffffffffffffp-1
+rsqrt max
+rsqrt min
+rsqrt min_subnorm
+
sin 0
sin -0
sin pi/6
diff --git a/math/auto-libm-test-out-rsqrt b/math/auto-libm-test-out-rsqrt
new file mode 100644
index 0000000000..cc28e827c3
--- /dev/null
+++ b/math/auto-libm-test-out-rsqrt
@@ -0,0 +1,3375 @@
+rsqrt 2209
+= rsqrt downward binary32 0x8.a1p+8 : 0x5.726208p-8 : inexact
+= rsqrt tonearest binary32 0x8.a1p+8 : 0x5.726208p-8 : inexact
+= rsqrt towardzero binary32 0x8.a1p+8 : 0x5.726208p-8 : inexact
+= rsqrt upward binary32 0x8.a1p+8 : 0x5.72621p-8 : inexact
+= rsqrt downward binary64 0x8.a1p+8 : 0x5.72620ae4c415cp-8 : inexact
+= rsqrt tonearest binary64 0x8.a1p+8 : 0x5.72620ae4c415cp-8 : inexact
+= rsqrt towardzero binary64 0x8.a1p+8 : 0x5.72620ae4c415cp-8 : inexact
+= rsqrt upward binary64 0x8.a1p+8 : 0x5.72620ae4c416p-8 : inexact
+= rsqrt downward intel96 0x8.a1p+8 : 0x5.72620ae4c415c988p-8 : inexact
+= rsqrt tonearest intel96 0x8.a1p+8 : 0x5.72620ae4c415c988p-8 : inexact
+= rsqrt towardzero intel96 0x8.a1p+8 : 0x5.72620ae4c415c988p-8 : inexact
+= rsqrt upward intel96 0x8.a1p+8 : 0x5.72620ae4c415c99p-8 : inexact
+= rsqrt downward m68k96 0x8.a1p+8 : 0x5.72620ae4c415c988p-8 : inexact
+= rsqrt tonearest m68k96 0x8.a1p+8 : 0x5.72620ae4c415c988p-8 : inexact
+= rsqrt towardzero m68k96 0x8.a1p+8 : 0x5.72620ae4c415c988p-8 : inexact
+= rsqrt upward m68k96 0x8.a1p+8 : 0x5.72620ae4c415c99p-8 : inexact
+= rsqrt downward binary128 0x8.a1p+8 : 0x5.72620ae4c415c9882b931057262p-8 : inexact
+= rsqrt tonearest binary128 0x8.a1p+8 : 0x5.72620ae4c415c9882b931057262p-8 : inexact
+= rsqrt towardzero binary128 0x8.a1p+8 : 0x5.72620ae4c415c9882b931057262p-8 : inexact
+= rsqrt upward binary128 0x8.a1p+8 : 0x5.72620ae4c415c9882b9310572624p-8 : inexact
+= rsqrt downward ibm128 0x8.a1p+8 : 0x5.72620ae4c415c9882b93105726p-8 : inexact
+= rsqrt tonearest ibm128 0x8.a1p+8 : 0x5.72620ae4c415c9882b93105726p-8 : inexact
+= rsqrt towardzero ibm128 0x8.a1p+8 : 0x5.72620ae4c415c9882b93105726p-8 : inexact
+= rsqrt upward ibm128 0x8.a1p+8 : 0x5.72620ae4c415c9882b93105728p-8 : inexact
+rsqrt 4
+= rsqrt downward binary32 0x4p+0 : 0x8p-4 :
+= rsqrt tonearest binary32 0x4p+0 : 0x8p-4 :
+= rsqrt towardzero binary32 0x4p+0 : 0x8p-4 :
+= rsqrt upward binary32 0x4p+0 : 0x8p-4 :
+= rsqrt downward binary64 0x4p+0 : 0x8p-4 :
+= rsqrt tonearest binary64 0x4p+0 : 0x8p-4 :
+= rsqrt towardzero binary64 0x4p+0 : 0x8p-4 :
+= rsqrt upward binary64 0x4p+0 : 0x8p-4 :
+= rsqrt downward intel96 0x4p+0 : 0x8p-4 :
+= rsqrt tonearest intel96 0x4p+0 : 0x8p-4 :
+= rsqrt towardzero intel96 0x4p+0 : 0x8p-4 :
+= rsqrt upward intel96 0x4p+0 : 0x8p-4 :
+= rsqrt downward m68k96 0x4p+0 : 0x8p-4 :
+= rsqrt tonearest m68k96 0x4p+0 : 0x8p-4 :
+= rsqrt towardzero m68k96 0x4p+0 : 0x8p-4 :
+= rsqrt upward m68k96 0x4p+0 : 0x8p-4 :
+= rsqrt downward binary128 0x4p+0 : 0x8p-4 :
+= rsqrt tonearest binary128 0x4p+0 : 0x8p-4 :
+= rsqrt towardzero binary128 0x4p+0 : 0x8p-4 :
+= rsqrt upward binary128 0x4p+0 : 0x8p-4 :
+= rsqrt downward ibm128 0x4p+0 : 0x8p-4 :
+= rsqrt tonearest ibm128 0x4p+0 : 0x8p-4 :
+= rsqrt towardzero ibm128 0x4p+0 : 0x8p-4 :
+= rsqrt upward ibm128 0x4p+0 : 0x8p-4 :
+rsqrt 2
+= rsqrt downward binary32 0x2p+0 : 0xb.504f3p-4 : inexact
+= rsqrt tonearest binary32 0x2p+0 : 0xb.504f3p-4 : inexact
+= rsqrt towardzero binary32 0x2p+0 : 0xb.504f3p-4 : inexact
+= rsqrt upward binary32 0x2p+0 : 0xb.504f4p-4 : inexact
+= rsqrt downward binary64 0x2p+0 : 0xb.504f333f9de6p-4 : inexact
+= rsqrt tonearest binary64 0x2p+0 : 0xb.504f333f9de68p-4 : inexact
+= rsqrt towardzero binary64 0x2p+0 : 0xb.504f333f9de6p-4 : inexact
+= rsqrt upward binary64 0x2p+0 : 0xb.504f333f9de68p-4 : inexact
+= rsqrt downward intel96 0x2p+0 : 0xb.504f333f9de6484p-4 : inexact
+= rsqrt tonearest intel96 0x2p+0 : 0xb.504f333f9de6484p-4 : inexact
+= rsqrt towardzero intel96 0x2p+0 : 0xb.504f333f9de6484p-4 : inexact
+= rsqrt upward intel96 0x2p+0 : 0xb.504f333f9de6485p-4 : inexact
+= rsqrt downward m68k96 0x2p+0 : 0xb.504f333f9de6484p-4 : inexact
+= rsqrt tonearest m68k96 0x2p+0 : 0xb.504f333f9de6484p-4 : inexact
+= rsqrt towardzero m68k96 0x2p+0 : 0xb.504f333f9de6484p-4 : inexact
+= rsqrt upward m68k96 0x2p+0 : 0xb.504f333f9de6485p-4 : inexact
+= rsqrt downward binary128 0x2p+0 : 0xb.504f333f9de6484597d89b3754a8p-4 : inexact
+= rsqrt tonearest binary128 0x2p+0 : 0xb.504f333f9de6484597d89b3754a8p-4 : inexact
+= rsqrt towardzero binary128 0x2p+0 : 0xb.504f333f9de6484597d89b3754a8p-4 : inexact
+= rsqrt upward binary128 0x2p+0 : 0xb.504f333f9de6484597d89b3754bp-4 : inexact
+= rsqrt downward ibm128 0x2p+0 : 0xb.504f333f9de6484597d89b3754p-4 : inexact
+= rsqrt tonearest ibm128 0x2p+0 : 0xb.504f333f9de6484597d89b3754p-4 : inexact
+= rsqrt towardzero ibm128 0x2p+0 : 0xb.504f333f9de6484597d89b3754p-4 : inexact
+= rsqrt upward ibm128 0x2p+0 : 0xb.504f333f9de6484597d89b3758p-4 : inexact
+rsqrt 0.25
+= rsqrt downward binary32 0x4p-4 : 0x2p+0 :
+= rsqrt tonearest binary32 0x4p-4 : 0x2p+0 :
+= rsqrt towardzero binary32 0x4p-4 : 0x2p+0 :
+= rsqrt upward binary32 0x4p-4 : 0x2p+0 :
+= rsqrt downward binary64 0x4p-4 : 0x2p+0 :
+= rsqrt tonearest binary64 0x4p-4 : 0x2p+0 :
+= rsqrt towardzero binary64 0x4p-4 : 0x2p+0 :
+= rsqrt upward binary64 0x4p-4 : 0x2p+0 :
+= rsqrt downward intel96 0x4p-4 : 0x2p+0 :
+= rsqrt tonearest intel96 0x4p-4 : 0x2p+0 :
+= rsqrt towardzero intel96 0x4p-4 : 0x2p+0 :
+= rsqrt upward intel96 0x4p-4 : 0x2p+0 :
+= rsqrt downward m68k96 0x4p-4 : 0x2p+0 :
+= rsqrt tonearest m68k96 0x4p-4 : 0x2p+0 :
+= rsqrt towardzero m68k96 0x4p-4 : 0x2p+0 :
+= rsqrt upward m68k96 0x4p-4 : 0x2p+0 :
+= rsqrt downward binary128 0x4p-4 : 0x2p+0 :
+= rsqrt tonearest binary128 0x4p-4 : 0x2p+0 :
+= rsqrt towardzero binary128 0x4p-4 : 0x2p+0 :
+= rsqrt upward binary128 0x4p-4 : 0x2p+0 :
+= rsqrt downward ibm128 0x4p-4 : 0x2p+0 :
+= rsqrt tonearest ibm128 0x4p-4 : 0x2p+0 :
+= rsqrt towardzero ibm128 0x4p-4 : 0x2p+0 :
+= rsqrt upward ibm128 0x4p-4 : 0x2p+0 :
+rsqrt 6642.25
+= rsqrt downward binary32 0x1.9f24p+12 : 0x3.241f68p-8 : inexact
+= rsqrt tonearest binary32 0x1.9f24p+12 : 0x3.241f68p-8 : inexact
+= rsqrt towardzero binary32 0x1.9f24p+12 : 0x3.241f68p-8 : inexact
+= rsqrt upward binary32 0x1.9f24p+12 : 0x3.241f6cp-8 : inexact
+= rsqrt downward binary64 0x1.9f24p+12 : 0x3.241f693a1c45p-8 : inexact
+= rsqrt tonearest binary64 0x1.9f24p+12 : 0x3.241f693a1c452p-8 : inexact
+= rsqrt towardzero binary64 0x1.9f24p+12 : 0x3.241f693a1c45p-8 : inexact
+= rsqrt upward binary64 0x1.9f24p+12 : 0x3.241f693a1c452p-8 : inexact
+= rsqrt downward intel96 0x1.9f24p+12 : 0x3.241f693a1c451abp-8 : inexact
+= rsqrt tonearest intel96 0x1.9f24p+12 : 0x3.241f693a1c451ab4p-8 : inexact
+= rsqrt towardzero intel96 0x1.9f24p+12 : 0x3.241f693a1c451abp-8 : inexact
+= rsqrt upward intel96 0x1.9f24p+12 : 0x3.241f693a1c451ab4p-8 : inexact
+= rsqrt downward m68k96 0x1.9f24p+12 : 0x3.241f693a1c451abp-8 : inexact
+= rsqrt tonearest m68k96 0x1.9f24p+12 : 0x3.241f693a1c451ab4p-8 : inexact
+= rsqrt towardzero m68k96 0x1.9f24p+12 : 0x3.241f693a1c451abp-8 : inexact
+= rsqrt upward m68k96 0x1.9f24p+12 : 0x3.241f693a1c451ab4p-8 : inexact
+= rsqrt downward binary128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04b62p-8 : inexact
+= rsqrt tonearest binary128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04b62p-8 : inexact
+= rsqrt towardzero binary128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04b62p-8 : inexact
+= rsqrt upward binary128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04b64p-8 : inexact
+= rsqrt downward ibm128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04bp-8 : inexact
+= rsqrt tonearest ibm128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04bp-8 : inexact
+= rsqrt towardzero ibm128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04bp-8 : inexact
+= rsqrt upward ibm128 0x1.9f24p+12 : 0x3.241f693a1c451ab30afe6df04cp-8 : inexact
+rsqrt 15190.5625
+= rsqrt downward binary32 0x3.b569p+12 : 0x2.13bb74p-8 : inexact
+= rsqrt tonearest binary32 0x3.b569p+12 : 0x2.13bb74p-8 : inexact
+= rsqrt towardzero binary32 0x3.b569p+12 : 0x2.13bb74p-8 : inexact
+= rsqrt upward binary32 0x3.b569p+12 : 0x2.13bb78p-8 : inexact
+= rsqrt downward binary64 0x3.b569p+12 : 0x2.13bb74d5f06cp-8 : inexact
+= rsqrt tonearest binary64 0x3.b569p+12 : 0x2.13bb74d5f06cp-8 : inexact
+= rsqrt towardzero binary64 0x3.b569p+12 : 0x2.13bb74d5f06cp-8 : inexact
+= rsqrt upward binary64 0x3.b569p+12 : 0x2.13bb74d5f06c2p-8 : inexact
+= rsqrt downward intel96 0x3.b569p+12 : 0x2.13bb74d5f06c021p-8 : inexact
+= rsqrt tonearest intel96 0x3.b569p+12 : 0x2.13bb74d5f06c0214p-8 : inexact
+= rsqrt towardzero intel96 0x3.b569p+12 : 0x2.13bb74d5f06c021p-8 : inexact
+= rsqrt upward intel96 0x3.b569p+12 : 0x2.13bb74d5f06c0214p-8 : inexact
+= rsqrt downward m68k96 0x3.b569p+12 : 0x2.13bb74d5f06c021p-8 : inexact
+= rsqrt tonearest m68k96 0x3.b569p+12 : 0x2.13bb74d5f06c0214p-8 : inexact
+= rsqrt towardzero m68k96 0x3.b569p+12 : 0x2.13bb74d5f06c021p-8 : inexact
+= rsqrt upward m68k96 0x3.b569p+12 : 0x2.13bb74d5f06c0214p-8 : inexact
+= rsqrt downward binary128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06c02p-8 : inexact
+= rsqrt tonearest binary128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06c02p-8 : inexact
+= rsqrt towardzero binary128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06c02p-8 : inexact
+= rsqrt upward binary128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06c04p-8 : inexact
+= rsqrt downward ibm128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06cp-8 : inexact
+= rsqrt tonearest ibm128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06cp-8 : inexact
+= rsqrt towardzero ibm128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06cp-8 : inexact
+= rsqrt upward ibm128 0x3.b569p+12 : 0x2.13bb74d5f06c0213bb74d5f06dp-8 : inexact
+rsqrt 0.75
+= rsqrt downward binary32 0xcp-4 : 0x1.279a74p+0 : inexact
+= rsqrt tonearest binary32 0xcp-4 : 0x1.279a74p+0 : inexact
+= rsqrt towardzero binary32 0xcp-4 : 0x1.279a74p+0 : inexact
+= rsqrt upward binary32 0xcp-4 : 0x1.279a76p+0 : inexact
+= rsqrt downward binary64 0xcp-4 : 0x1.279a74590331cp+0 : inexact
+= rsqrt tonearest binary64 0xcp-4 : 0x1.279a74590331cp+0 : inexact
+= rsqrt towardzero binary64 0xcp-4 : 0x1.279a74590331cp+0 : inexact
+= rsqrt upward binary64 0xcp-4 : 0x1.279a74590331dp+0 : inexact
+= rsqrt downward intel96 0xcp-4 : 0x1.279a74590331c4d2p+0 : inexact
+= rsqrt tonearest intel96 0xcp-4 : 0x1.279a74590331c4d2p+0 : inexact
+= rsqrt towardzero intel96 0xcp-4 : 0x1.279a74590331c4d2p+0 : inexact
+= rsqrt upward intel96 0xcp-4 : 0x1.279a74590331c4d4p+0 : inexact
+= rsqrt downward m68k96 0xcp-4 : 0x1.279a74590331c4d2p+0 : inexact
+= rsqrt tonearest m68k96 0xcp-4 : 0x1.279a74590331c4d2p+0 : inexact
+= rsqrt towardzero m68k96 0xcp-4 : 0x1.279a74590331c4d2p+0 : inexact
+= rsqrt upward m68k96 0xcp-4 : 0x1.279a74590331c4d4p+0 : inexact
+= rsqrt downward binary128 0xcp-4 : 0x1.279a74590331c4d218f81e4afb25p+0 : inexact
+= rsqrt tonearest binary128 0xcp-4 : 0x1.279a74590331c4d218f81e4afb25p+0 : inexact
+= rsqrt towardzero binary128 0xcp-4 : 0x1.279a74590331c4d218f81e4afb25p+0 : inexact
+= rsqrt upward binary128 0xcp-4 : 0x1.279a74590331c4d218f81e4afb26p+0 : inexact
+= rsqrt downward ibm128 0xcp-4 : 0x1.279a74590331c4d218f81e4afbp+0 : inexact
+= rsqrt tonearest ibm128 0xcp-4 : 0x1.279a74590331c4d218f81e4afbp+0 : inexact
+= rsqrt towardzero ibm128 0xcp-4 : 0x1.279a74590331c4d218f81e4afbp+0 : inexact
+= rsqrt upward ibm128 0xcp-4 : 0x1.279a74590331c4d218f81e4afb8p+0 : inexact
+rsqrt 0x1.fffffffffffffp+1023
+= rsqrt downward binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt tonearest binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt towardzero binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt upward binary32 0xf.fffffp+124 : 0x1.000002p-64 : inexact
+= rsqrt downward binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward binary64 0xf.fffffp+124 : 0x1.0000008000007p-64 : inexact
+= rsqrt downward intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward intel96 0xf.fffffp+124 : 0x1.0000008000006002p-64 : inexact
+= rsqrt downward m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward m68k96 0xf.fffffp+124 : 0x1.0000008000006002p-64 : inexact
+= rsqrt downward binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt tonearest binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt towardzero binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt upward binary128 0xf.fffffp+124 : 0x1.0000008000006000005000004601p-64 : inexact
+= rsqrt downward ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt tonearest ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt towardzero ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt upward ibm128 0xf.fffffp+124 : 0x1.000000800000600000500000468p-64 : inexact
+= rsqrt downward binary64 0xf.ffffffffffff8p+1020 : 0x1p-512 : inexact
+= rsqrt tonearest binary64 0xf.ffffffffffff8p+1020 : 0x1p-512 : inexact
+= rsqrt towardzero binary64 0xf.ffffffffffff8p+1020 : 0x1p-512 : inexact
+= rsqrt upward binary64 0xf.ffffffffffff8p+1020 : 0x1.0000000000001p-512 : inexact
+= rsqrt downward intel96 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt tonearest intel96 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt towardzero intel96 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt upward intel96 0xf.ffffffffffff8p+1020 : 0x1.0000000000000402p-512 : inexact
+= rsqrt downward m68k96 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt tonearest m68k96 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt towardzero m68k96 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt upward m68k96 0xf.ffffffffffff8p+1020 : 0x1.0000000000000402p-512 : inexact
+= rsqrt downward binary128 0xf.ffffffffffff8p+1020 : 0x1.0000000000000400000000000018p-512 : inexact
+= rsqrt tonearest binary128 0xf.ffffffffffff8p+1020 : 0x1.0000000000000400000000000018p-512 : inexact
+= rsqrt towardzero binary128 0xf.ffffffffffff8p+1020 : 0x1.0000000000000400000000000018p-512 : inexact
+= rsqrt upward binary128 0xf.ffffffffffff8p+1020 : 0x1.0000000000000400000000000019p-512 : inexact
+= rsqrt downward ibm128 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt tonearest ibm128 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt towardzero ibm128 0xf.ffffffffffff8p+1020 : 0x1.00000000000004p-512 : inexact
+= rsqrt upward ibm128 0xf.ffffffffffff8p+1020 : 0x1.000000000000040000000000008p-512 : inexact
+rsqrt 0x1.ffffffffffffbp+1023
+= rsqrt downward binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt tonearest binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt towardzero binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt upward binary32 0xf.fffffp+124 : 0x1.000002p-64 : inexact
+= rsqrt downward binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward binary64 0xf.fffffp+124 : 0x1.0000008000007p-64 : inexact
+= rsqrt downward intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward intel96 0xf.fffffp+124 : 0x1.0000008000006002p-64 : inexact
+= rsqrt downward m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward m68k96 0xf.fffffp+124 : 0x1.0000008000006002p-64 : inexact
+= rsqrt downward binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt tonearest binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt towardzero binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt upward binary128 0xf.fffffp+124 : 0x1.0000008000006000005000004601p-64 : inexact
+= rsqrt downward ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt tonearest ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt towardzero ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt upward ibm128 0xf.fffffp+124 : 0x1.000000800000600000500000468p-64 : inexact
+= rsqrt downward binary64 0xf.fffffffffffd8p+1020 : 0x1.0000000000001p-512 : inexact
+= rsqrt tonearest binary64 0xf.fffffffffffd8p+1020 : 0x1.0000000000001p-512 : inexact
+= rsqrt towardzero binary64 0xf.fffffffffffd8p+1020 : 0x1.0000000000001p-512 : inexact
+= rsqrt upward binary64 0xf.fffffffffffd8p+1020 : 0x1.0000000000002p-512 : inexact
+= rsqrt downward intel96 0xf.fffffffffffd8p+1020 : 0x1.00000000000014p-512 : inexact
+= rsqrt tonearest intel96 0xf.fffffffffffd8p+1020 : 0x1.00000000000014p-512 : inexact
+= rsqrt towardzero intel96 0xf.fffffffffffd8p+1020 : 0x1.00000000000014p-512 : inexact
+= rsqrt upward intel96 0xf.fffffffffffd8p+1020 : 0x1.0000000000001402p-512 : inexact
+= rsqrt downward m68k96 0xf.fffffffffffd8p+1020 : 0x1.00000000000014p-512 : inexact
+= rsqrt tonearest m68k96 0xf.fffffffffffd8p+1020 : 0x1.00000000000014p-512 : inexact
+= rsqrt towardzero m68k96 0xf.fffffffffffd8p+1020 : 0x1.00000000000014p-512 : inexact
+= rsqrt upward m68k96 0xf.fffffffffffd8p+1020 : 0x1.0000000000001402p-512 : inexact
+= rsqrt downward binary128 0xf.fffffffffffd8p+1020 : 0x1.0000000000001400000000000258p-512 : inexact
+= rsqrt tonearest binary128 0xf.fffffffffffd8p+1020 : 0x1.0000000000001400000000000258p-512 : inexact
+= rsqrt towardzero binary128 0xf.fffffffffffd8p+1020 : 0x1.0000000000001400000000000258p-512 : inexact
+= rsqrt upward binary128 0xf.fffffffffffd8p+1020 : 0x1.0000000000001400000000000259p-512 : inexact
+= rsqrt downward ibm128 0xf.fffffffffffd8p+1020 : 0x1.00000000000014000000000002p-512 : inexact
+= rsqrt tonearest ibm128 0xf.fffffffffffd8p+1020 : 0x1.000000000000140000000000028p-512 : inexact
+= rsqrt towardzero ibm128 0xf.fffffffffffd8p+1020 : 0x1.00000000000014000000000002p-512 : inexact
+= rsqrt upward ibm128 0xf.fffffffffffd8p+1020 : 0x1.000000000000140000000000028p-512 : inexact
+rsqrt 0x1.ffffffffffff7p+1023
+= rsqrt downward binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt tonearest binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt towardzero binary32 0xf.fffffp+124 : 0x1p-64 : inexact
+= rsqrt upward binary32 0xf.fffffp+124 : 0x1.000002p-64 : inexact
+= rsqrt downward binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero binary64 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward binary64 0xf.fffffp+124 : 0x1.0000008000007p-64 : inexact
+= rsqrt downward intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero intel96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward intel96 0xf.fffffp+124 : 0x1.0000008000006002p-64 : inexact
+= rsqrt downward m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt tonearest m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt towardzero m68k96 0xf.fffffp+124 : 0x1.0000008000006p-64 : inexact
+= rsqrt upward m68k96 0xf.fffffp+124 : 0x1.0000008000006002p-64 : inexact
+= rsqrt downward binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt tonearest binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt towardzero binary128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt upward binary128 0xf.fffffp+124 : 0x1.0000008000006000005000004601p-64 : inexact
+= rsqrt downward ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt tonearest ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact
+= rsqrt towardzero ibm128 0xf.fffffp+124 : 0x1.00000080000060000050000046p-64 : inexact