aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2018-06-18 13:40:29 +0200
committerAndreas K. Hüttel <dilfridge@gentoo.org>2018-08-04 20:42:01 +0200
commit4e8e183fe6f18dbcf9b8891b60ce651d213f8a95 (patch)
treefecae47398808558fc1d945169fb49191615211b
parentMention BZ#23264 in NEWS (diff)
downloadglibc-4e8e183fe6f18dbcf9b8891b60ce651d213f8a95.tar.gz
glibc-4e8e183fe6f18dbcf9b8891b60ce651d213f8a95.tar.bz2
glibc-4e8e183fe6f18dbcf9b8891b60ce651d213f8a95.zip
math: Update i686 ulps
The results are from configuring with and without --disable-multi-arch, building with “-march=x86-64 -mtune=generic -mfpmath=sse” and running the testsuite on a Haswell-era CPU. Slightly higher ulps are required than in master (commit e02c026f38505cd474ff1bdaa88fc671804f5805). (cherry picked from commit 8308fb218267809caedc30908ce18b10a8524287)
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps592
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps586
3 files changed, 610 insertions, 574 deletions
diff --git a/ChangeLog b/ChangeLog
index e3593ef343..101dc45263 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-06-01 Florian Weimer <fweimer@redhat.com>
+
+ * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Update from master
+ branch, commit e02c026f38505cd474ff1bdaa88fc671804f5805.
+ * sysdeps/i386/fpu/libm-test-ulps: Likewise.
+
2018-06-08 Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ #23264]
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 862a74e09d..9d1c35c605 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -281,20 +281,20 @@ ldouble: 1
Function: Real part of "cacos":
double: 1
-float: 1
+float: 2
float128: 2
idouble: 1
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 1
ldouble: 1
Function: Imaginary part of "cacos":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
@@ -360,21 +360,21 @@ ildouble: 7
ldouble: 7
Function: Real part of "cacosh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Imaginary part of "cacosh":
double: 1
-float: 1
+float: 2
float128: 2
idouble: 1
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 1
ldouble: 1
@@ -420,10 +420,10 @@ ildouble: 2
ldouble: 2
Function: Real part of "cacosh_upward":
-double: 4
+double: 5
float: 4
float128: 6
-idouble: 4
+idouble: 5
ifloat: 4
ifloat128: 6
ildouble: 5
@@ -488,11 +488,11 @@ ildouble: 1
ldouble: 1
Function: Imaginary part of "casin":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
@@ -558,11 +558,11 @@ ildouble: 7
ldouble: 7
Function: Real part of "casinh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
@@ -774,11 +774,11 @@ ildouble: 1
ldouble: 1
Function: Real part of "catanh_upward":
-double: 2
-float: 2
+double: 4
+float: 4
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 4
+ifloat: 4
ifloat128: 4
ildouble: 4
ldouble: 4
@@ -875,10 +875,10 @@ ldouble: 3
Function: Real part of "ccos_towardzero":
double: 1
-float: 1
+float: 2
float128: 2
idouble: 1
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -934,10 +934,10 @@ ildouble: 1
ldouble: 1
Function: Real part of "ccosh_downward":
-double: 1
+double: 2
float: 2
float128: 2
-idouble: 1
+idouble: 2
ifloat: 2
ifloat128: 2
ildouble: 3
@@ -954,11 +954,11 @@ ildouble: 3
ldouble: 3
Function: Real part of "ccosh_towardzero":
-double: 1
-float: 2
+double: 2
+float: 3
float128: 2
-idouble: 1
-ifloat: 2
+idouble: 2
+ifloat: 3
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -1075,10 +1075,10 @@ ldouble: 3
Function: Real part of "clog":
double: 2
-float: 1
+float: 3
float128: 2
idouble: 2
-ifloat: 1
+ifloat: 3
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -1092,79 +1092,81 @@ ildouble: 1
ldouble: 1
Function: Real part of "clog10":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 2
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 2
ildouble: 4
ldouble: 4
Function: Imaginary part of "clog10":
-double: 1
+double: 2
+float: 1
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 1
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Real part of "clog10_downward":
-double: 3
-float: 3
+double: 4
+float: 4
float128: 3
-idouble: 3
-ifloat: 3
+idouble: 4
+ifloat: 4
ifloat128: 3
ildouble: 8
ldouble: 8
Function: Imaginary part of "clog10_downward":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
Function: Real part of "clog10_towardzero":
-double: 3
-float: 3
+double: 5
+float: 5
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 4
ildouble: 8
ldouble: 8
Function: Imaginary part of "clog10_towardzero":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
Function: Real part of "clog10_upward":
-double: 3
-float: 3
+double: 4
+float: 5
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 4
+ifloat: 5
ifloat128: 4
ildouble: 7
ldouble: 7
Function: Imaginary part of "clog10_upward":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
@@ -1191,10 +1193,10 @@ ldouble: 1
Function: Real part of "clog_towardzero":
double: 3
-float: 3
+float: 4
float128: 3
idouble: 3
-ifloat: 3
+ifloat: 4
ifloat128: 3
ildouble: 5
ldouble: 5
@@ -1230,8 +1232,10 @@ ildouble: 1
ldouble: 1
Function: "cos":
+double: 1
float: 1
float128: 1
+idouble: 1
ifloat: 1
ifloat128: 1
ildouble: 1
@@ -1462,7 +1466,9 @@ ildouble: 2
ldouble: 2
Function: Real part of "csinh":
+float: 1
float128: 1
+ifloat: 1
ifloat128: 1
ildouble: 1
ldouble: 1
@@ -1478,10 +1484,10 @@ ildouble: 1
ldouble: 1
Function: Real part of "csinh_downward":
-double: 1
+double: 2
float: 1
float128: 2
-idouble: 1
+idouble: 2
ifloat: 1
ifloat128: 2
ildouble: 3
@@ -1498,11 +1504,11 @@ ildouble: 3
ldouble: 3
Function: Real part of "csinh_towardzero":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -1538,79 +1544,81 @@ ildouble: 2
ldouble: 2
Function: Real part of "csqrt":
-double: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Imaginary part of "csqrt":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Real part of "csqrt_downward":
-double: 1
-float: 1
+double: 4
+float: 4
float128: 4
-idouble: 1
-ifloat: 1
+idouble: 4
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: Imaginary part of "csqrt_downward":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
Function: Real part of "csqrt_towardzero":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
Function: Imaginary part of "csqrt_towardzero":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
Function: Real part of "csqrt_upward":
-double: 1
-float: 1
+double: 4
+float: 4
float128: 4
-idouble: 1
-ifloat: 1
+idouble: 4
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: Imaginary part of "csqrt_upward":
-double: 1
-float: 2
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 2
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
@@ -1626,21 +1634,21 @@ ildouble: 2
ldouble: 2
Function: Imaginary part of "ctan":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 1
ldouble: 1
Function: Real part of "ctan_downward":
-double: 1
-float: 2
+double: 6
+float: 5
float128: 4
-idouble: 1
-ifloat: 2
+idouble: 6
+ifloat: 5
ifloat128: 4
ildouble: 5
ldouble: 5
@@ -1656,11 +1664,11 @@ ildouble: 4
ldouble: 4
Function: Real part of "ctan_towardzero":
-double: 3
-float: 2
+double: 5
+float: 3
float128: 4
-idouble: 3
-ifloat: 2
+idouble: 5
+ifloat: 3
ifloat128: 4
ildouble: 5
ldouble: 5
@@ -1677,10 +1685,10 @@ ldouble: 4
Function: Real part of "ctan_upward":
double: 3
-float: 2
+float: 4
float128: 5
idouble: 3
-ifloat: 2
+ifloat: 4
ifloat128: 5
ildouble: 3
ldouble: 3
@@ -1696,21 +1704,21 @@ ildouble: 3
ldouble: 3
Function: Real part of "ctanh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 1
ldouble: 1
Function: Imaginary part of "ctanh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 2
ldouble: 2
@@ -1726,11 +1734,11 @@ ildouble: 4
ldouble: 4
Function: Imaginary part of "ctanh_downward":
-double: 2
-float: 1
+double: 6
+float: 5
float128: 4
-idouble: 2
-ifloat: 1
+idouble: 6
+ifloat: 5
ifloat128: 4
ildouble: 4
ldouble: 4
@@ -1746,31 +1754,31 @@ ildouble: 4
ldouble: 4
Function: Imaginary part of "ctanh_towardzero":
-double: 2
-float: 2
+double: 5
+float: 3
float128: 3
-idouble: 2
-ifloat: 2
+idouble: 5
+ifloat: 3
ifloat128: 3
ildouble: 3
ldouble: 3
Function: Real part of "ctanh_upward":
double: 2
-float: 1
+float: 2
float128: 5
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 5
ildouble: 3
ldouble: 3
Function: Imaginary part of "ctanh_upward":
double: 3
-float: 2
+float: 3
float128: 5
idouble: 3
-ifloat: 2
+ifloat: 3
ifloat128: 5
ildouble: 3
ldouble: 3
@@ -1816,41 +1824,41 @@ ildouble: 1
ldouble: 1
Function: "erfc":
-double: 1
-float: 1
+double: 3
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
Function: "erfc_downward":
-double: 2
-float: 3
+double: 5
+float: 6
float128: 5
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 6
ifloat128: 5
ildouble: 4
ldouble: 4
Function: "erfc_towardzero":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "erfc_upward":
-double: 2
-float: 3
+double: 5
+float: 6
float128: 5
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 6
ifloat128: 5
ildouble: 5
ldouble: 5
@@ -1994,34 +2002,34 @@ ildouble: 4
ldouble: 4
Function: "gamma":
-double: 3
+double: 4
float: 3
-idouble: 3
+idouble: 4
ifloat: 3
ildouble: 4
ldouble: 4
Function: "gamma_downward":
-double: 4
+double: 5
float: 5
-idouble: 4
+idouble: 5
ifloat: 5
ildouble: 7
ldouble: 7
Function: "gamma_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
+double: 5
+float: 4
+idouble: 5
+ifloat: 4
ildouble: 7
ldouble: 7
Function: "gamma_upward":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
ildouble: 5
ldouble: 5
@@ -2059,39 +2067,39 @@ ldouble: 1
Function: "j0":
double: 2
-float: 1
+float: 2
float128: 2
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: "j0_downward":
-double: 1
-float: 3
+double: 2
+float: 4
float128: 4
-idouble: 1
-ifloat: 3
+idouble: 2
+ifloat: 4
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "j0_towardzero":
-double: 2
-float: 1
+double: 3
+float: 2
float128: 2
-idouble: 2
-ifloat: 1
+idouble: 3
+ifloat: 2
ifloat128: 2
ildouble: 5
ldouble: 5
Function: "j0_upward":
-double: 2
+double: 3
float: 3
float128: 5
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 5
ildouble: 4
@@ -2108,111 +2116,111 @@ ildouble: 1
ldouble: 1
Function: "j1_downward":
-double: 2
-float: 2
+double: 3
+float: 3
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 3
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "j1_towardzero":
-double: 2
+double: 3
float: 2
float128: 4
-idouble: 2
+idouble: 3
ifloat: 2
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "j1_upward":
-double: 2
-float: 3
+double: 3
+float: 5
float128: 3
-idouble: 2
-ifloat: 3
+idouble: 3
+ifloat: 5
ifloat128: 3
ildouble: 3
ldouble: 3
Function: "jn":
-double: 2
-float: 3
+double: 4
+float: 4
float128: 7
-idouble: 2
-ifloat: 3
+idouble: 4
+ifloat: 4
ifloat128: 7
ildouble: 4
ldouble: 4
Function: "jn_downward":
-double: 2
-float: 3
+double: 5
+float: 5
float128: 8
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 8
ildouble: 4
ldouble: 4
Function: "jn_towardzero":
-double: 2
-float: 3
+double: 5
+float: 5
float128: 8
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 8
ildouble: 5
ldouble: 5
Function: "jn_upward":
-double: 2
-float: 3
+double: 5
+float: 5
float128: 7
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 7
ildouble: 5
ldouble: 5
Function: "lgamma":
-double: 3
+double: 4
float: 3
float128: 5
-idouble: 3
+idouble: 4
ifloat: 3
ifloat128: 5
ildouble: 4
ldouble: 4
Function: "lgamma_downward":
-double: 4
+double: 5
float: 5
float128: 8
-idouble: 4
+idouble: 5
ifloat: 5
ifloat128: 8
ildouble: 7
ldouble: 7
Function: "lgamma_towardzero":
-double: 4
-float: 3
+double: 5
+float: 4
float128: 5
-idouble: 4
-ifloat: 3
+idouble: 5
+ifloat: 4
ifloat128: 5
ildouble: 7
ldouble: 7
Function: "lgamma_upward":
-double: 3
-float: 4
+double: 5
+float: 5
float128: 8
-idouble: 3
-ifloat: 4
+idouble: 5
+ifloat: 5
ifloat128: 8
ildouble: 5
ldouble: 5
@@ -2402,8 +2410,10 @@ ildouble: 4
ldouble: 4
Function: "sin":
+double: 1
float: 1
float128: 1
+idouble: 1
ifloat: 1
ifloat128: 1
ildouble: 1
@@ -2440,8 +2450,10 @@ ildouble: 3
ldouble: 3
Function: "sincos":
+double: 1
float: 1
float128: 1
+idouble: 1
ifloat: 1
ifloat128: 1
ildouble: 1
@@ -2478,39 +2490,41 @@ ildouble: 3
ldouble: 3
Function: "sinh":
-double: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: "sinh_downward":
-double: 2
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 2
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 5
ldouble: 5
Function: "sinh_towardzero":
double: 2
-float: 1
+float: 2
float128: 3
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 3
ildouble: 4
ldouble: 4
Function: "sinh_upward":
double: 4
-float: 2
+float: 3
float128: 4
idouble: 4
-ifloat: 2
+ifloat: 3
ifloat128: 4
ildouble: 5
ldouble: 5
@@ -2554,199 +2568,201 @@ ildouble: 2
ldouble: 2
Function: "tanh":
-double: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
Function: "tanh_downward":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 4
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 4
ildouble: 7
ldouble: 4
Function: "tanh_towardzero":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
Function: "tanh_upward":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 5
ldouble: 4
Function: "tgamma":
-double: 3
-float: 3
+double: 5
+float: 4
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 5
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: "tgamma_downward":
-double: 3
-float: 3
+double: 6
+float: 5
float128: 5
-idouble: 3
-ifloat: 3
+idouble: 6
+ifloat: 5
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "tgamma_towardzero":
-double: 3
-float: 3
+double: 6
+float: 4
float128: 5
-idouble: 3
-ifloat: 3
+idouble: 6
+ifloat: 4
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "tgamma_upward":
-double: 3
-float: 3
+double: 5
+float: 4
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 5
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: "y0":
-double: 1
+double: 2
float: 1
float128: 3
-idouble: 1
+idouble: 2
ifloat: 1
ifloat128: 3
ildouble: 1
ldouble: 1
Function: "y0_downward":
-double: 2
-float: 3
+double: 3
+float: 4
float128: 4
-idouble: 2
-ifloat: 3
+idouble: 3
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: "y0_towardzero":
-double: 2
+double: 3
float: 3
float128: 3
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 3
ildouble: 5
ldouble: 5
Function: "y0_upward":
-double: 1
-float: 3
+double: 3
+float: 5
float128: 3
-idouble: 1
-ifloat: 3
+idouble: 3
+ifloat: 5
ifloat128: 3
ildouble: 3
ldouble: 3
Function: "y1":
-double: 2
+double: 3
float: 2
float128: 2
-idouble: 2
+idouble: 3
ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: "y1_downward":
-double: 2
+double: 3
float: 3
float128: 4
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 4
ildouble: 7
ldouble: 7
Function: "y1_towardzero":
-double: 2
+double: 3
float: 3
float128: 2
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 2
ildouble: 5
ldouble: 5
Function: "y1_upward":
-double: 1
+double: 7
float: 3
float128: 5
-idouble: 1
+idouble: 7
ifloat: 3
ifloat128: 5
ildouble: 7
ldouble: 7
Function: "yn":
-double: 2
+double: 3
float: 3
float128: 5
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 5
ildouble: 4
ldouble: 4
Function: "yn_downward":
-double: 2
-float: 3
+double: 3
+float: 4
float128: 5
-idouble: 2
-ifloat: 3
+idouble: 3
+ifloat: 4
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "yn_towardzero":
double: 3
-float: 3
+float: 4
float128: 5
idouble: 3
-ifloat: 3
+ifloat: 4
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "yn_upward":
-double: 3
-float: 3
+double: 4
+float: 5
float128: 5
-idouble: 3
-ifloat: 3
+idouble: 4
+ifloat: 5
ifloat128: 5
ildouble: 4
ldouble: 4
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index 8a862ef2eb..1bc39f47e8 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -281,20 +281,20 @@ ldouble: 1
Function: Real part of "cacos":
double: 1
-float: 1
+float: 2
float128: 2
idouble: 1
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 1
ldouble: 1
Function: Imaginary part of "cacos":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
@@ -360,21 +360,21 @@ ildouble: 7
ldouble: 7
Function: Real part of "cacosh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Imaginary part of "cacosh":
double: 1
-float: 1
+float: 2
float128: 2
idouble: 1
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 1
ldouble: 1
@@ -420,10 +420,10 @@ ildouble: 2
ldouble: 2
Function: Real part of "cacosh_upward":
-double: 4
+double: 5
float: 4
float128: 6
-idouble: 4
+idouble: 5
ifloat: 4
ifloat128: 6
ildouble: 5
@@ -488,11 +488,11 @@ ildouble: 1
ldouble: 1
Function: Imaginary part of "casin":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
@@ -558,11 +558,11 @@ ildouble: 7
ldouble: 7
Function: Real part of "casinh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
@@ -774,11 +774,11 @@ ildouble: 1
ldouble: 1
Function: Real part of "catanh_upward":
-double: 2
-float: 2
+double: 4
+float: 4
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 4
+ifloat: 4
ifloat128: 4
ildouble: 4
ldouble: 4
@@ -875,10 +875,10 @@ ldouble: 3
Function: Real part of "ccos_towardzero":
double: 1
-float: 1
+float: 2
float128: 2
idouble: 1
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -934,10 +934,10 @@ ildouble: 1
ldouble: 1
Function: Real part of "ccosh_downward":
-double: 1
+double: 2
float: 2
float128: 2
-idouble: 1
+idouble: 2
ifloat: 2
ifloat128: 2
ildouble: 3
@@ -954,11 +954,11 @@ ildouble: 3
ldouble: 3
Function: Real part of "ccosh_towardzero":
-double: 1
-float: 2
+double: 2
+float: 3
float128: 2
-idouble: 1
-ifloat: 2
+idouble: 2
+ifloat: 3
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -1075,10 +1075,10 @@ ldouble: 3
Function: Real part of "clog":
double: 2
-float: 1
+float: 3
float128: 2
idouble: 2
-ifloat: 1
+ifloat: 3
ifloat128: 2
ildouble: 3
ldouble: 3
@@ -1092,79 +1092,81 @@ ildouble: 1
ldouble: 1
Function: Real part of "clog10":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 2
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 2
ildouble: 4
ldouble: 4
Function: Imaginary part of "clog10":
-double: 1
+double: 2
+float: 1
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 1
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Real part of "clog10_downward":
-double: 3
-float: 3
+double: 4
+float: 4
float128: 3
-idouble: 3
-ifloat: 3
+idouble: 4
+ifloat: 4
ifloat128: 3
ildouble: 8
ldouble: 8
Function: Imaginary part of "clog10_downward":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
Function: Real part of "clog10_towardzero":
-double: 3
-float: 3
+double: 5
+float: 5
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 4
ildouble: 8
ldouble: 8
Function: Imaginary part of "clog10_towardzero":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
Function: Real part of "clog10_upward":
-double: 3
-float: 3
+double: 4
+float: 5
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 4
+ifloat: 5
ifloat128: 4
ildouble: 8
ldouble: 8
Function: Imaginary part of "clog10_upward":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
@@ -1191,10 +1193,10 @@ ldouble: 1
Function: Real part of "clog_towardzero":
double: 3
-float: 3
+float: 4
float128: 3
idouble: 3
-ifloat: 3
+ifloat: 4
ifloat128: 3
ildouble: 5
ldouble: 5
@@ -1230,7 +1232,9 @@ ildouble: 1
ldouble: 1
Function: "cos":
+double: 1
float128: 1
+idouble: 1
ifloat128: 1
ildouble: 1
ldouble: 1
@@ -1478,10 +1482,10 @@ ildouble: 1
ldouble: 1
Function: Real part of "csinh_downward":
-double: 1
+double: 2
float: 2
float128: 2
-idouble: 1
+idouble: 2
ifloat: 2
ifloat128: 2
ildouble: 3
@@ -1498,10 +1502,10 @@ ildouble: 3
ldouble: 3
Function: Real part of "csinh_towardzero":
-double: 1
+double: 2
float: 2
float128: 2
-idouble: 1
+idouble: 2
ifloat: 2
ifloat128: 2
ildouble: 3
@@ -1538,79 +1542,81 @@ ildouble: 3
ldouble: 3
Function: Real part of "csqrt":
-double: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Imaginary part of "csqrt":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: Real part of "csqrt_downward":
-double: 1
-float: 1
+double: 4
+float: 4
float128: 4
-idouble: 1
-ifloat: 1
+idouble: 4
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: Imaginary part of "csqrt_downward":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
Function: Real part of "csqrt_towardzero":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
Function: Imaginary part of "csqrt_towardzero":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
Function: Real part of "csqrt_upward":
-double: 1
-float: 1
+double: 4
+float: 4
float128: 4
-idouble: 1
-ifloat: 1
+idouble: 4
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: Imaginary part of "csqrt_upward":
-double: 1
-float: 2
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 2
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 4
ldouble: 4
@@ -1626,21 +1632,21 @@ ildouble: 2
ldouble: 2
Function: Imaginary part of "ctan":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 1
ldouble: 1
Function: Real part of "ctan_downward":
-double: 1
-float: 2
+double: 6
+float: 5
float128: 4
-idouble: 1
-ifloat: 2
+idouble: 6
+ifloat: 5
ifloat128: 4
ildouble: 5
ldouble: 5
@@ -1656,31 +1662,31 @@ ildouble: 4
ldouble: 4
Function: Real part of "ctan_towardzero":
-double: 3
-float: 1
+double: 5
+float: 3
float128: 4
-idouble: 3
-ifloat: 1
+idouble: 5
+ifloat: 3
ifloat128: 4
ildouble: 5
ldouble: 5
Function: Imaginary part of "ctan_towardzero":
double: 2
-float: 1
+float: 2
float128: 5
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 5
ildouble: 4
ldouble: 4
Function: Real part of "ctan_upward":
double: 3
-float: 2
+float: 4
float128: 5
idouble: 3
-ifloat: 2
+ifloat: 4
ifloat128: 5
ildouble: 3
ldouble: 3
@@ -1696,21 +1702,21 @@ ildouble: 3
ldouble: 3
Function: Real part of "ctanh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 1
ldouble: 1
Function: Imaginary part of "ctanh":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 2
ldouble: 2
@@ -1726,51 +1732,51 @@ ildouble: 4
ldouble: 4
Function: Imaginary part of "ctanh_downward":
-double: 2
-float: 1
+double: 6
+float: 5
float128: 4
-idouble: 2
-ifloat: 1
+idouble: 6
+ifloat: 5
ifloat128: 4
ildouble: 4
ldouble: 4
Function: Real part of "ctanh_towardzero":
double: 2
-float: 1
+float: 2
float128: 5
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 5
ildouble: 4
ldouble: 4
Function: Imaginary part of "ctanh_towardzero":
-double: 2
-float: 1
+double: 5
+float: 3
float128: 3
-idouble: 2
-ifloat: 1
+idouble: 5
+ifloat: 3
ifloat128: 3
ildouble: 3
ldouble: 3
Function: Real part of "ctanh_upward":
double: 2
-float: 1
+float: 2
float128: 5
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 5
ildouble: 3
ldouble: 3
Function: Imaginary part of "ctanh_upward":
double: 3
-float: 2
+float: 3
float128: 5
idouble: 3
-ifloat: 2
+ifloat: 3
ifloat128: 5
ildouble: 3
ldouble: 3
@@ -1816,41 +1822,41 @@ ildouble: 1
ldouble: 1
Function: "erfc":
-double: 1
-float: 1
+double: 3
+float: 2
float128: 2
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
Function: "erfc_downward":
-double: 2
-float: 3
+double: 5
+float: 6
float128: 5
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 6
ifloat128: 5
ildouble: 4
ldouble: 4
Function: "erfc_towardzero":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "erfc_upward":
-double: 2
-float: 3
+double: 5
+float: 6
float128: 5
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 6
ifloat128: 5
ildouble: 5
ldouble: 5
@@ -1994,34 +2000,34 @@ ildouble: 4
ldouble: 4
Function: "gamma":
-double: 3
+double: 4
float: 3
-idouble: 3
+idouble: 4
ifloat: 3
ildouble: 4
ldouble: 4
Function: "gamma_downward":
-double: 4
+double: 5
float: 5
-idouble: 4
+idouble: 5
ifloat: 5
ildouble: 7
ldouble: 7
Function: "gamma_towardzero":
-double: 4
+double: 5
float: 4
-idouble: 4
+idouble: 5
ifloat: 4
ildouble: 7
ldouble: 7
Function: "gamma_upward":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
+double: 5
+float: 5
+idouble: 5
+ifloat: 5
ildouble: 6
ldouble: 6
@@ -2059,39 +2065,39 @@ ldouble: 1
Function: "j0":
double: 2
-float: 1
+float: 2
float128: 2
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: "j0_downward":
-double: 1
-float: 3
+double: 2
+float: 4
float128: 4
-idouble: 1
-ifloat: 3
+idouble: 2
+ifloat: 4
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "j0_towardzero":
-double: 2
-float: 1
+double: 3
+float: 2
float128: 2
-idouble: 2
-ifloat: 1
+idouble: 3
+ifloat: 2
ifloat128: 2
ildouble: 5
ldouble: 5
Function: "j0_upward":
-double: 2
+double: 3
float: 3
float128: 5
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 5
ildouble: 4
@@ -2099,120 +2105,120 @@ ldouble: 4
Function: "j1":
double: 2
-float: 1
+float: 2
float128: 4
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 4
ildouble: 1
ldouble: 1
Function: "j1_downward":
-double: 2
-float: 2
+double: 3
+float: 3
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 3
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "j1_towardzero":
-double: 2
+double: 3
float: 2
float128: 4
-idouble: 2
+idouble: 3
ifloat: 2
ifloat128: 4
ildouble: 4
ldouble: 4
Function: "j1_upward":
-double: 2
-float: 3
+double: 3
+float: 5
float128: 3
-idouble: 2
-ifloat: 3
+idouble: 3
+ifloat: 5
ifloat128: 3
ildouble: 3
ldouble: 3
Function: "jn":
-double: 2
-float: 3
+double: 4
+float: 4
float128: 7
-idouble: 2
-ifloat: 3
+idouble: 4
+ifloat: 4
ifloat128: 7
ildouble: 4
ldouble: 4
Function: "jn_downward":
-double: 2
-float: 3
+double: 5
+float: 5
float128: 8
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 8
ildouble: 4
ldouble: 4
Function: "jn_towardzero":
-double: 2
-float: 3
+double: 5
+float: 5
float128: 8
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 8
ildouble: 5
ldouble: 5
Function: "jn_upward":
-double: 2
-float: 3
+double: 5
+float: 5
float128: 7
-idouble: 2
-ifloat: 3
+idouble: 5
+ifloat: 5
ifloat128: 7
ildouble: 5
ldouble: 5
Function: "lgamma":
-double: 3
+double: 4
float: 3
float128: 5
-idouble: 3
+idouble: 4
ifloat: 3
ifloat128: 5
ildouble: 4
ldouble: 4
Function: "lgamma_downward":
-double: 4
+double: 5
float: 5
float128: 8
-idouble: 4
+idouble: 5
ifloat: 5
ifloat128: 8
ildouble: 7
ldouble: 7
Function: "lgamma_towardzero":
-double: 4
+double: 5
float: 4
float128: 5
-idouble: 4
+idouble: 5
ifloat: 4
ifloat128: 5
ildouble: 7
ldouble: 7
Function: "lgamma_upward":
-double: 3
-float: 4
+double: 5
+float: 5
float128: 8
-idouble: 3
-ifloat: 4
+idouble: 5
+ifloat: 5
ifloat128: 8
ildouble: 6
ldouble: 6
@@ -2402,7 +2408,9 @@ ildouble: 4
ldouble: 4
Function: "sin":
+double: 1
float128: 1
+idouble: 1
ifloat128: 1
ildouble: 1
ldouble: 1
@@ -2432,7 +2440,9 @@ ildouble: 3
ldouble: 3
Function: "sincos":
+double: 1
float128: 1
+idouble: 1
ifloat128: 1
ildouble: 1
ldouble: 1
@@ -2462,39 +2472,41 @@ ildouble: 3
ldouble: 3
Function: "sinh":
-double: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: "sinh_downward":
-double: 2
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 2
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 5
ldouble: 5
Function: "sinh_towardzero":
double: 2
-float: 1
+float: 2
float128: 3
idouble: 2
-ifloat: 1
+ifloat: 2
ifloat128: 3
ildouble: 4
ldouble: 4
Function: "sinh_upward":
double: 4
-float: 2
+float: 3
float128: 4
idouble: 4
-ifloat: 2
+ifloat: 3
ifloat128: 4
ildouble: 5
ldouble: 5
@@ -2538,199 +2550,201 @@ ildouble: 2
ldouble: 2
Function: "tanh":
-double: 1
+double: 2
+float: 2
float128: 2
-idouble: 1
+idouble: 2
+ifloat: 2
ifloat128: 2
ildouble: 3
ldouble: 3
Function: "tanh_downward":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 4
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 4
ildouble: 7
ldouble: 4
Function: "tanh_towardzero":
-double: 1
-float: 1
+double: 2
+float: 2
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 2
+ifloat: 2
ifloat128: 3
ildouble: 3
ldouble: 3
Function: "tanh_upward":
-double: 1
-float: 1
+double: 3
+float: 3
float128: 3
-idouble: 1
-ifloat: 1
+idouble: 3
+ifloat: 3
ifloat128: 3
ildouble: 5
ldouble: 4
Function: "tgamma":
-double: 3
-float: 3
+double: 5
+float: 4
float128: 4
-idouble: 3
-ifloat: 3
+idouble: 5
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: "tgamma_downward":
-double: 3
+double: 6
float: 5
float128: 5
-idouble: 3
+idouble: 6
ifloat: 5
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "tgamma_towardzero":
-double: 4
+double: 6
float: 5
float128: 5
-idouble: 4
+idouble: 6
ifloat: 5
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "tgamma_upward":
-double: 4
+double: 5
float: 6
float128: 4
-idouble: 4
+idouble: 5
ifloat: 6
ifloat128: 4
ildouble: 5
ldouble: 5
Function: "y0":
-double: 1
+double: 2
float: 1
float128: 3
-idouble: 1
+idouble: 2
ifloat: 1
ifloat128: 3
ildouble: 1
ldouble: 1
Function: "y0_downward":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 4
ildouble: 5
ldouble: 5
Function: "y0_towardzero":
-double: 2
+double: 3
float: 3
float128: 3
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 3
ildouble: 5
ldouble: 5
Function: "y0_upward":
-double: 1
-float: 3
+double: 3
+float: 5
float128: 3
-idouble: 1
-ifloat: 3
+idouble: 3
+ifloat: 5
ifloat128: 3
ildouble: 3
ldouble: 3
Function: "y1":
-double: 2
+double: 3
float: 2
float128: 2
-idouble: 2
+idouble: 3
ifloat: 2
ifloat128: 2
ildouble: 2
ldouble: 2
Function: "y1_downward":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 4
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 4
ildouble: 7
ldouble: 7
Function: "y1_towardzero":
-double: 2
-float: 2
+double: 3
+float: 3
float128: 2
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 3
ifloat128: 2
ildouble: 5
ldouble: 5
Function: "y1_upward":
-double: 1
+double: 7
float: 3
float128: 5
-idouble: 1
+idouble: 7
ifloat: 3
ifloat128: 5
ildouble: 7
ldouble: 7
Function: "yn":
-double: 2
+double: 3
float: 3
float128: 5
-idouble: 2
+idouble: 3
ifloat: 3
ifloat128: 5
ildouble: 4
ldouble: 4
Function: "yn_downward":
-double: 2
-float: 2
+double: 3
+float: 4
float128: 5
-idouble: 2
-ifloat: 2
+idouble: 3
+ifloat: 4
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "yn_towardzero":
double: 3
-float: 3
+float: 4
float128: 5
idouble: 3
-ifloat: 3
+ifloat: 4
ifloat128: 5
ildouble: 5
ldouble: 5
Function: "yn_upward":
-double: 3
-float: 3
+double: 4
+float: 5
float128: 5
-idouble: 3
-ifloat: 3
+idouble: 4
+ifloat: 5
ifloat128: 5
ildouble: 4
ldouble: 4