]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Use sinhf from CORE-MATH
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 19 Nov 2024 17:26:17 +0000 (14:26 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 18 Dec 2024 20:24:43 +0000 (17:24 -0300)
The CORE-MATH implementation is correctly rounded (for any rounding mode)
and shows slight better performance to the generic sinhf.

The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).

Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1):

Latency                      master        patched   improvement
x86_64                      52.6819        49.1489         6.71%
x86_64v2                    49.1162        42.9447        12.57%
x86_64v3                    46.9732        39.9157        15.02%
i686                       141.1470       129.6410         8.15%
aarch64 (Neoverse)          20.8539        17.1288        17.86%
power10                     14.5258        9.1906         36.73%

reciprocal-throughput        master        patched   improvement
x86_64                      27.5553        23.9395        13.12%
x86_64v2                    21.6423        20.3219         6.10%
x86_64v3                    21.4842        16.0224        25.42%
i686                        87.9709        86.1626         2.06%
aarch64 (Neoverse)          15.1919        12.2744        19.20%
power10                      7.2188         5.2611        27.12%

Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: DJ Delorie <dj@redhat.com>
26 files changed:
SHARED-FILES
sysdeps/aarch64/libm-test-ulps
sysdeps/alpha/fpu/libm-test-ulps
sysdeps/arc/fpu/libm-test-ulps
sysdeps/arc/nofpu/libm-test-ulps
sysdeps/arm/libm-test-ulps
sysdeps/csky/fpu/libm-test-ulps
sysdeps/csky/nofpu/libm-test-ulps
sysdeps/hppa/fpu/libm-test-ulps
sysdeps/i386/fpu/libm-test-ulps
sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
sysdeps/ieee754/flt-32/e_sinhf.c
sysdeps/loongarch/lp64/libm-test-ulps
sysdeps/microblaze/libm-test-ulps
sysdeps/mips/mips32/libm-test-ulps
sysdeps/mips/mips64/libm-test-ulps
sysdeps/or1k/fpu/libm-test-ulps
sysdeps/or1k/nofpu/libm-test-ulps
sysdeps/powerpc/fpu/libm-test-ulps
sysdeps/powerpc/nofpu/libm-test-ulps
sysdeps/riscv/nofpu/libm-test-ulps
sysdeps/riscv/rvd/libm-test-ulps
sysdeps/s390/fpu/libm-test-ulps
sysdeps/sh/libm-test-ulps
sysdeps/sparc/fpu/libm-test-ulps
sysdeps/x86_64/fpu/libm-test-ulps

index 320e0b3be95ae4217362c97c8111a4ed977860d3..3bd4e7fb4adc542721fb563ef04d99f994040be8 100644 (file)
@@ -326,3 +326,7 @@ sysdeps/ieee754/flt-32/e_coshf.c:
   (src/binary32/cosh/coshf.c in CORE-MATH)
   - the code was adapted to use glibc code style and internal
     functions to handle errno, overflow, and underflow.
+sysdeps/ieee754/flt-32/e_sinhf.c:
+  (src/binary32/sinh/sinhf.c in CORE-MATH)
+  - the code was adapted to use glibc code style and internal
+    functions to handle errno, overflow, and underflow.
index 54793bdc6043208a3f7a4d68c297d104488d6eb1..1e9c5af0ca2449869b5cffb852ee2aaca309f8f1 100644 (file)
@@ -1598,7 +1598,6 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_advsimd":
@@ -1607,7 +1606,6 @@ float: 1
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_sve":
@@ -1616,12 +1614,10 @@ float: 1
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "sinpi":
index 5eeb6ae3b39adce4becc53a73400f17dc0a92c3f..7d5fcc7f2e2eff95b6abd6445cd87c58d2f316db 100644 (file)
@@ -1287,22 +1287,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "tan":
index d7945e601e9395013581c1b629d4bd125fef1546..ec42c5eac9d8f1d736983c5a17cddf6d685006a8 100644 (file)
@@ -1029,19 +1029,15 @@ float: 1
 
 Function: "sinh":
 double: 3
-float: 3
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "tan":
 double: 1
index ca7cfb7fa4a526575e1235814dd35cd4bdce6732..15b2b82187e71fb08dd0c17a3b4425fb66fbd98b 100644 (file)
@@ -248,7 +248,6 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "tanh":
 double: 2
index 4ce30d0daf1de5fe32bf0845750053cba89b92ba..201099d3f2339a9ee03bf41a765c165ea841e585 100644 (file)
@@ -1106,19 +1106,15 @@ float: 2
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "sinpi":
 double: 1
index d8aad8c4bad43336f7719f450d011396176c5511..3824f0041571200253b5bfd1d2b01eb4e4d31c5a 100644 (file)
@@ -950,19 +950,15 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "tan_downward":
 double: 1
index 8ecb31b9a46247655d46995b0ede71734d96ae2a..34f5eb52a2d972e549da764f82ca5918cb237020 100644 (file)
@@ -981,19 +981,15 @@ float: 2
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 2
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "tan_downward":
 double: 1
index f8ad653769fea5789ac715f064205e287bbc2560..e48fb8a66e4bd70b2d9db3f11ec6658ebf599d17 100644 (file)
@@ -1135,19 +1135,15 @@ float: 2
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "sinpi":
 double: 1
index 865176cfc2dd3603108a52c50d11c4dbda565645..d545682fd9f9fc042c8b545ebab576b9667cbf36 100644 (file)
@@ -1691,25 +1691,21 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 float128: 2
 ldouble: 3
 
 Function: "sinh_downward":
 double: 3
-float: 3
 float128: 3
 ldouble: 5
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 float128: 3
 ldouble: 4
 
 Function: "sinh_upward":
 double: 4
-float: 3
 float128: 4
 ldouble: 5
 
index ac3799e1b89a7810801c2acb60fa8aa07119cd80..ad9a52749b1973666efc40cfd6878ccd3d3b86cb 100644 (file)
@@ -1696,25 +1696,21 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 float128: 2
 ldouble: 3
 
 Function: "sinh_downward":
 double: 3
-float: 3
 float128: 3
 ldouble: 5
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 float128: 3
 ldouble: 4
 
 Function: "sinh_upward":
 double: 4
-float: 3
 float128: 4
 ldouble: 5
 
index d3998e8336579bbc739df116e22b6efa87979eb2..c007c7d1742b1771b628c7c88b79fc331f2c43dd 100644 (file)
-/* e_sinhf.c -- float version of e_sinh.c.
- */
+/* Correctly-rounded hyperbolic sine function for binary32 value.
 
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
+Copyright (c) 2022-2024 Alexei Sibidanov.
 
-#include <float.h>
-#include <math.h>
-#include <math-narrow-eval.h>
-#include <math_private.h>
-#include <math-underflow.h>
-#include <libm-alias-finite.h>
+The original version of this file was copied from the CORE-MATH
+project (file src/binary32/sinh/sinhf.c, revision 572ecec).
 
-static const float one = 1.0, shuge = 1.0e37;
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
 
-float
-__ieee754_sinhf(float x)
-{
-       float t,w,h;
-       int32_t ix,jx;
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
-       GET_FLOAT_WORD(jx,x);
-       ix = jx&0x7fffffff;
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
 
-    /* x is INF or NaN */
-       if(__builtin_expect(ix>=0x7f800000, 0)) return x+x;
+#include <math.h>
+#include <stdint.h>
+#include <libm-alias-finite.h>
+#include <math-narrow-eval.h>
+#include "math_config.h"
 
-       h = 0.5;
-       if (jx<0) h = -h;
-    /* |x| in [0,22], return sign(x)*0.5*(E+E/(E+1))) */
-       if (ix < 0x41b00000) {          /* |x|<22 */
-           if (__builtin_expect(ix<0x31800000, 0)) {   /* |x|<2**-28 */
-               math_check_force_underflow (x);
-               if(shuge+x>one) return x;/* sinh(tiny) = tiny with inexact */
-           }
-           t = __expm1f(fabsf(x));
-           if(ix<0x3f800000) return h*((float)2.0*t-t*t/(t+one));
-           return h*(t+t/(t+one));
+float
+__ieee754_sinhf (float x)
+{
+  static const double c[] =
+    {
+      1, 0x1.62e42fef4c4e7p-6, 0x1.ebfd1b232f475p-13, 0x1.c6b19384ecd93p-20
+    };
+  static const double ch[] =
+    {
+      1,                     0x1.62e42fefa39efp-6,  0x1.ebfbdff82c58fp-13,
+      0x1.c6b08d702e0edp-20, 0x1.3b2ab6fb92e5ep-27, 0x1.5d886e6d54203p-35,
+      0x1.430976b8ce6efp-43
+    };
+  static const uint64_t tb[] =
+    {
+      0x3fe0000000000000, 0x3fe059b0d3158574, 0x3fe0b5586cf9890f,
+      0x3fe11301d0125b51, 0x3fe172b83c7d517b, 0x3fe1d4873168b9aa,
+      0x3fe2387a6e756238, 0x3fe29e9df51fdee1, 0x3fe306fe0a31b715,
+      0x3fe371a7373aa9cb, 0x3fe3dea64c123422, 0x3fe44e086061892d,
+      0x3fe4bfdad5362a27, 0x3fe5342b569d4f82, 0x3fe5ab07dd485429,
+      0x3fe6247eb03a5585, 0x3fe6a09e667f3bcd, 0x3fe71f75e8ec5f74,
+      0x3fe7a11473eb0187, 0x3fe82589994cce13, 0x3fe8ace5422aa0db,
+      0x3fe93737b0cdc5e5, 0x3fe9c49182a3f090, 0x3fea5503b23e255d,
+      0x3feae89f995ad3ad, 0x3feb7f76f2fb5e47, 0x3fec199bdd85529c,
+      0x3fecb720dcef9069, 0x3fed5818dcfba487, 0x3fedfc97337b9b5f,
+      0x3feea4afa2a490da, 0x3fef50765b6e4540
+    };
+  static const struct
+  {
+    uint32_t uarg;
+    float rh, rl;
+  } st = { 0x74250bfeu, 0x1.250bfep-11, 0x1p-36 };
+  const double iln2 = 0x1.71547652b82fep+5;
+  double z = x;
+  uint32_t ux = asuint (x) << 1;
+  if (__glibc_unlikely (ux > 0x8565a9f8u))
+    { /* |x| >~ 89.4 */
+      float sgn = copysignf (2.0f, x);
+      if (ux >= 0xff000000u)
+       {
+         if (ux << 8)
+           return x + x;                           /* nan */
+         return copysignf (INFINITY, x); /* +-inf */
        }
-
-    /* |x| in [22, log(maxdouble)] return 0.5*exp(|x|) */
-       if (ix < 0x42b17180)  return h*__ieee754_expf(fabsf(x));
-
-    /* |x| in [log(maxdouble), overflowthresold] */
-       if (ix<=0x42b2d4fc) {
-           w = __ieee754_expf((float)0.5*fabsf(x));
-           t = h*w;
-           return t*w;
+      float r = math_narrow_eval (sgn * 0x1.fffffep127f);
+      return r;
+    }
+  if (__glibc_unlikely (ux < 0x7c000000u))
+    { /* |x| < 0.125 */
+      if (__glibc_unlikely (ux <= 0x74250bfeu))
+       {                                          /* |x| <= 0x1.250bfep-11 */
+         if (__glibc_unlikely (ux < 0x66000000u)) /* |x| < 0x1p-24 */
+           return fmaf (x, fabsf (x), x);
+         if (__glibc_unlikely (st.uarg == asuint (ux)))
+           {
+             float sgn = copysignf (1.0f, x);
+             return sgn * st.rh + sgn * st.rl;
+           }
+         return (x * 0x1.555556p-3f) * (x * x) + x;
        }
-
-    /* |x| > overflowthresold, sinh(x) overflow */
-       return math_narrow_eval (x*shuge);
+      static const double cp[] =
+       {
+         0x1.5555555555555p-3,  0x1.11111111146e1p-7,
+         0x1.a01a00930dda6p-13, 0x1.71f92198aa6e9p-19
+       };
+      double z2 = z * z;
+      double z4 = z2 * z2;
+      return z + (z2 * z)
+       * ((cp[0] + z2 * cp[1]) + z4 * (cp[2] + z2 * (cp[3])));
+    }
+  double a = iln2 * z;
+  double ia = roundeven_finite (a);
+  double h = a - ia;
+  double h2 = h * h;
+  int64_t jp = asuint64 (ia + 0x1.8p52);
+  int64_t jm = -jp;
+  double sp = asdouble (tb[jp & 31] + ((jp >> 5) << 52));
+  double sm = asdouble (tb[jm & 31] + ((jm >> 5) << 52));
+  double te = c[0] + h2 * c[2];
+  double to = (c[1] + h2 * c[3]);
+  double rp = sp * (te + h * to);
+  double rm = sm * (te - h * to);
+  double r = rp - rm;
+  float ub = r;
+  double lb = r - 1.52e-10 * r;
+  if (__glibc_unlikely (ub != lb))
+    {
+      const double iln2h = 0x1.7154765p+5;
+      const double iln2l = 0x1.5c17f0bbbe88p-26;
+      h = (iln2h * z - ia) + iln2l * z;
+      h2 = h * h;
+      te = ch[0] + h2 * ch[2] + (h2 * h2) * (ch[4] + h2 * ch[6]);
+      to = ch[1] + h2 * (ch[3] + h2 * ch[5]);
+      r = sp * (te + h * to) - sm * (te - h * to);
+      ub = r;
+    }
+  return ub;
 }
 libm_alias_finite (__ieee754_sinhf, __sinhf)
index 930399cea712e504658a0ebd5a2edc2bb741dedc..1e57c6a4df73f6284b8ebdd02ad0a6d2ec3522de 100644 (file)
@@ -1293,22 +1293,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "tan":
index 4814a60c555f9bcd052b760c6a6ea73950e25a90..0f0e1fb35db38169a6d888de5513e32a7cbb5485 100644 (file)
@@ -230,7 +230,6 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "tanh":
 double: 2
index 3f96870ac6a6979c3506c00bfdf28fe9c01af675..58223df3b46c156986c2198ae4cb8d0909b988cf 100644 (file)
@@ -1029,19 +1029,15 @@ float: 2
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "tan_downward":
 double: 1
index 095ba5500ddb395891dafb6947fbdd9675e32665..efa76ec249408bc129b3f50a373885adbd9394d5 100644 (file)
@@ -1305,22 +1305,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "tan":
index 5553317139c408cd0c7c026eae0fb14bbd1a6ca0..5900e6d6d9007b014539b3c35ef6f73383d2ce22 100644 (file)
@@ -963,19 +963,15 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "tan_downward":
 double: 1
index 3ae42e23ba2daea55e68c1dfca011d33a0e12f62..6f60e83486e2b41985b97e7d2fba825fe8ec9e70 100644 (file)
@@ -988,19 +988,15 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 
 Function: "sinh_towardzero":
 double: 2
-float: 2
 
 Function: "sinh_upward":
 double: 3
-float: 3
 
 Function: "sinpi":
 double: 1
index e17674546f0f1585cb80229a9bfd1d321684895a..9fe6f82a41fd5b696c9fa337fba505ee03402843 100644 (file)
@@ -1779,25 +1779,21 @@ ldouble: 7
 
 Function: "sinh":
 double: 2
-float: 2
 float128: 2
 ldouble: 3
 
 Function: "sinh_downward":
 double: 3
-float: 3
 float128: 3
 ldouble: 6
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 float128: 3
 ldouble: 6
 
 Function: "sinh_upward":
 double: 3
-float: 3
 float128: 4
 ldouble: 6
 
index 4d34e06205343a26b410e997c4e7bd44e3abe9fe..769c14e81decfc02b99df759ec93483527d0cd5a 100644 (file)
@@ -1402,22 +1402,18 @@ ldouble: 7
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 3
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 6
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 6
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 6
 
 Function: "sqrt":
index 4943c1b08bd8625ac293d09e49c3cc9b2ab00955..3ce20f4bb1234ffe417c1082c6b3eee8770e3418 100644 (file)
@@ -1234,22 +1234,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 2
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "tan":
index bf6478fe7dd976e81b61032a2bc4d9c609fcc33e..98146886d999eca1a2b9bc2db8eab5b1340522c9 100644 (file)
@@ -1292,22 +1292,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "tan":
index 3b927676fb2527d238bfd1bceebcec3ca6915470..e8a3754e4cf5777edb942f0c90058acc2d66749d 100644 (file)
@@ -1311,22 +1311,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "sinpi":
index b24ceaa90313aa4af7319e112d932deb809f1973..3c07cd131713ca8e576d7cc29fac90011e740fa2 100644 (file)
@@ -477,11 +477,9 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 
 Function: "tan_towardzero":
 double: 1
index 703797a1cb0d2a7fbed6c0c0cfeb0eb40519db0d..ec9d2d9d21b579876bbfa7896d0e9aacafa29ef9 100644 (file)
@@ -1326,22 +1326,18 @@ ldouble: 3
 
 Function: "sinh":
 double: 2
-float: 2
 ldouble: 2
 
 Function: "sinh_downward":
 double: 3
-float: 3
 ldouble: 3
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 ldouble: 3
 
 Function: "sinh_upward":
 double: 3
-float: 3
 ldouble: 4
 
 Function: "sinpi":
index 62ddd1a43135866b2df968b378a9ab3badcf49f1..7ce0714683f88b1a8f9ce93b9539df072f97479d 100644 (file)
@@ -2177,25 +2177,21 @@ float: 1
 
 Function: "sinh":
 double: 2
-float: 2
 float128: 2
 ldouble: 3
 
 Function: "sinh_downward":
 double: 3
-float: 3
 float128: 3
 ldouble: 5
 
 Function: "sinh_towardzero":
 double: 3
-float: 2
 float128: 3
 ldouble: 4
 
 Function: "sinh_upward":
 double: 3
-float: 3
 float128: 4
 ldouble: 5