| Age | Commit message (Collapse) | Author | Files | Lines |
|
Vector variant of the new C23 tanpi. New tests pass on AArch64.
|
|
Vector variant of the new C23 cospi. New tests pass on AArch64.
|
|
Vector variant of the new C23 sinpi. New tests pass on AArch64.
|
|
More routines are to follow, some of which hit many failures in the
current testsuite due to wrong sign of zero (mathvec routines are not
required to get this right). Instead of disabling a large number of
tests, change the failure condition such that, for vector routines,
tests pass as long as computed == expected == 0.0, regardless of sign.
Affected tests (vector tests for expm1, log1p, sin, tan and tanh) all
still pass.
|
|
Clang's <tgmath.h> doesn't support all C23 functions in glibc's <tgmath.h>:
https://github.com/llvm/llvm-project/issues/121536
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
These inputs were generated with the programs from
https://gitlab.inria.fr/zimmerma/math_accuracy,
with rounding to nearest:
* for univariate binary32 functions by exhaustive search
* for other functions with the "threshold" parameter up to 10^6
|
|
|
|
clang warns that since the global variables are only used to function
calls (without being actually used), they are not needed and will
not be emitted.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
Clang doesn't support -ffloat-store:
clang: error: optimization flag '-ffloat-store' is not supported [-Werror,-Wignored-optimization-argument]
Define test-config-cflags-float-store for -ffloat-store and use it in
math/Makefile for testing.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
Since math/math.h isn't a system header, clang issues errors:
In file included from test-flt-eval-method.c:20:
In file included from ../include/math.h:7:
../math/math.h:91:11: error: 'INFINITY' macro redefined [-Werror,-Wmacro-redefined]
91 | # define INFINITY (__builtin_inff ())
| ^
/usr/bin/../lib/clang/19/include/float.h:173:11: note: previous definition is here
173 | # define INFINITY (__builtin_inff())
| ^
In file included from test-flt-eval-method.c:20:
In file included from ../include/math.h:7:
../math/math.h:98:11: error: 'NAN' macro redefined [-Werror,-Wmacro-redefined]
98 | # define NAN (__builtin_nanf (""))
| ^
/usr/bin/../lib/clang/19/include/float.h:174:11: note: previous definition is here
174 | # define NAN (__builtin_nanf(""))
Don't define INFINITY nor NAN if they are defined.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
Since __builtin_complex was added to Clang 12, support __builtin_complex
for Clang 12.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
tgmath3-macro-tests won't compile with <float.h> and <tgmath.h> from
Clang due to missing C23 support:
https://github.com/llvm/llvm-project/issues/97335
Disable them for now when Clang is used for testing so that "make check"
can finish.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
|
Clang has its own <tgmath.h> and doesn't use <tgmath.h> from glibc. Pass
"-I." to compiler only if $($(<F)-no-include-dot) are undefined. Define
it to yes for tgmath tests when testing with Clang.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
On powerpc math/test-ibm128-tanpi shows multiple failures:
testing long double (without inline functions)
Failure: tanpi_downward (0xfffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_downward (0xfffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_downward (0xfffffffffffffffdp-1)
Result:
is: 4.68843873182857939141363635204365e+28 0x1.2efbb6629d1d59b032520400df8p+95
should be: inf inf
Failure: tanpi_downward (0x3fffffffffffffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_downward (0x3fffffffffffffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_downward (0x3fffffffffffffffffffffffffdp-1)
Result:
is: 1.41444453325831960404472183124793e+16 0x1.9202627cbf98e052d5fdbeee1f8p+53
should be: inf inf
Failure: tanpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): Exception "Invalid operation" set
Failure: tanpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): Exception "Overflow" set
Failure: tanpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): errno set to 33, expected 0 (unchanged)
Failure: Test: tanpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020)
Result:
is: qNaN
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
Failure: Test: tanpi_downward (0x3.fffffffffffffffcp+108)
Result:
is: 2.91356019227449116879287504834896e-15 0x1.a3e365fee24d4632f95a2235698p-49
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 2.91356019227449116879287504834896e-15 0x1.a3e365fee24d4632f95a2235698p-49
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 8.0000
Failure: Test: tanpi_downward (0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 7.94911926685664643005642781870827e-16 0x1.ca3c4b83eb5688e1474146dc338p-51
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 7.94911926685664643005642781870827e-16 0x1.ca3c4b83eb5688e1474146dc338p-51
ulp : 160891965142034222272327839154722485473479235229008379884749401713481320342777314570400076204240982703218835644458374555276642
max.ulp : 8.0000
Failure: tanpi_towardzero (0xfffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_towardzero (0xfffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_towardzero (0xfffffffffffffffdp-1)
Result:
is: 2.14718475310122677917055904836884e+28 0x1.1584624c14882fff76592b4ec10p+94
should be: inf inf
Failure: tanpi_towardzero (-0xfffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_towardzero (-0xfffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_towardzero (-0xfffffffffffffffdp-1)
Result:
is: -2.14718475310122677917055904836884e+28 -0x1.1584624c14882fff76592b4ec10p+94
should be: -inf -inf
Failure: tanpi_towardzero (0x3fffffffffffffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_towardzero (0x3fffffffffffffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_towardzero (0x3fffffffffffffffffffffffffdp-1)
Result:
is: 6.60739946234609289593176521179840e+15 0x1.7796511d79d6ce55bc8bf083fe0p+52
should be: inf inf
Failure: tanpi_towardzero (-0x3fffffffffffffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_towardzero (-0x3fffffffffffffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_towardzero (-0x3fffffffffffffffffffffffffdp-1)
Result:
is: -6.60739946234609289593176521179840e+15 -0x1.7796511d79d6ce55bc8bf083fe0p+52
should be: -inf -inf
Failure: Test: tanpi_towardzero (-0x3.fffffffffffffffcp+108)
Result:
is: -1.17953443892757434921819283936141e-14 -0x1.a8f8d97fb893518cbe5688935c0p-47
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 1.17953443892757434921819283936141e-14 0x1.a8f8d97fb893518cbe5688935c0p-47
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 8.0000
Failure: Test: tanpi_towardzero (-0x3.ffffffffffffffffffffffffffp+108)
Result:
is: -1.85584803206881692897837494734542e-14 -0x1.4e51e25c1f5ab4470a3a0a42c24p-46
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 1.85584803206881692897837494734542e-14 0x1.4e51e25c1f5ab4470a3a0a42c24p-46
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 8.0000
Failure: Test: tanpi_towardzero (0x3.fffffffffffffffcp+108)
Result:
is: 1.17953443892757434921819283936141e-14 0x1.a8f8d97fb893518cbe5688935c0p-47
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 1.17953443892757434921819283936141e-14 0x1.a8f8d97fb893518cbe5688935c0p-47
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 8.0000
Failure: Test: tanpi_towardzero (0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 1.85584803206881692897837494734542e-14 0x1.4e51e25c1f5ab4470a3a0a42c24p-46
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 1.85584803206881692897837494734542e-14 0x1.4e51e25c1f5ab4470a3a0a42c24p-46
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 8.0000
Failure: tanpi_upward (-0xfffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_upward (-0xfffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_upward (-0xfffffffffffffffdp-1)
Result:
is: -2.14718475310122677917055904836884e+28 -0x1.1584624c14882fff76592b4ec10p+94
should be: -inf -inf
Failure: tanpi_upward (-0x3fffffffffffffffffffffffffdp-1): Exception "Divide by zero" not set
Failure: tanpi_upward (-0x3fffffffffffffffffffffffffdp-1): errno set to 0, expected 34 (ERANGE)
Failure: Test: tanpi_upward (-0x3fffffffffffffffffffffffffdp-1)
Result:
is: -6.60739946234609289593176521179829e+15 -0x1.7796511d79d6ce55bc8bf083fdbp+52
should be: -inf -inf
Failure: Test: tanpi_upward (-0x3.fffffffffffffffcp+108)
Result:
is: -1.17953443892757434921819283936138e-14 -0x1.a8f8d97fb893518cbe5688935b0p-47
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 1.17953443892757434921819283936139e-14 0x1.a8f8d97fb893518cbe5688935b0p-47
ulp : inf
max.ulp : 8.0000
Failure: Test: tanpi_upward (-0x3.ffffffffffffffffffffffffffp+108)
Result:
is: -1.85584803206881692897837494734542e-14 -0x1.4e51e25c1f5ab4470a3a0a42c24p-46
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 1.85584803206881692897837494734543e-14 0x1.4e51e25c1f5ab4470a3a0a42c24p-46
ulp : inf
max.ulp : 8.0000
Failure: tanpi_upward (0xf.ffffffffffffbffffffffffffcp+1020): Exception "Invalid operation" set
Failure: tanpi_upward (0xf.ffffffffffffbffffffffffffcp+1020): Exception "Overflow" set
Failure: tanpi_upward (0xf.ffffffffffffbffffffffffffcp+1020): errno set to 33, expected 0 (unchanged)
Failure: Test: tanpi_upward (0xf.ffffffffffffbffffffffffffcp+1020)
Result:
is: qNaN
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
|
|
The pi defined constants are not the expected value for carg
on non-default rounding modes (similar to atan). Instead use
autogenerated value.
|
|
The pi defined constants are not the expected value for atan2
on non-default rounding modes. Instead use the autogenerated value.
Reviewed-by: DJ Delorie <dj@redhat.com>
|
|
The M_PI_2 (lit_pi_2_d) constant is not the expected value for atanf
on non-default rounding modes. Instead use the autogenerated value.
|
|
For some correctly rounded inputs where infinity might generate
a number (like atanf), comparing to a pre-defined constant does not
yield the expected result in all rounding modes.
The most straightforward way to handle it would be to get the expected
result from mpfr, where it handles all the rounding modes.
|
|
Reviewed-by: DJ Delorie <dj@redhat.com>
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the atan2pi functions (atan2(y,x)/pi).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
Since libm doesn't export __XXX math functions, don't declare them in
the installed math.h by adding <bits/mathcalls-macros.h> to declare
__XXX math functions internally for glibc build. This fixes BZ #32418.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the atanpi functions (atan(x)/pi).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the asinpi functions (asin(x)/pi).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the acospi functions (acos(x)/pi).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the tanpi functions (tan(pi*x)).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
On powerpc math/test-ibm128-sinpi shows:
testing long double (without inline functions)
Failure: sinpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): Exception "Invalid operation" set
Failure: sinpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): Exception "Overflow" set
Failure: sinpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): errno set to 33, expected 0 (unchanged)
Failure: Test: sinpi_downward (-0xf.ffffffffffffbffffffffffffcp+1020)
Result:
is: qNaN
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
Failure: Test: sinpi_downward (0x3.fffffffffffffffcp+108)
Result:
is: 2.97479253223185882765417834495004e-15 0x1.acb679186c7b49a36c9ec63e110p-49
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 2.97479253223185882765417834495004e-15 0x1.acb679186c7b49a36c9ec63e110p-49
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 4.0000
Failure: Test: sinpi_downward (0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 2.63250110604328276654475674742669e-15 0x1.7b6225fa8503a5a8c514f5c0208p-49
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 2.63250110604328276654475674742669e-15 0x1.7b6225fa8503a5a8c514f5c0208p-49
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 4.0000
Failure: Test: sinpi_towardzero (-0x3.fffffffffffffffcp+108)
Result:
is: -1.71856472474338625450766636956702e-14 -0x1.3596cf230d8f69346d93d8c3100p-46
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 1.71856472474338625450766636956702e-14 0x1.3596cf230d8f69346d93d8c3100p-46
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 3.0000
Failure: Test: sinpi_towardzero (-0x3.ffffffffffffffffffffffffffp+108)
Result:
is: -9.73792846364428462525599942305655e-15 -0x1.5ed8897ea140e96a31453d6e580p-47
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 9.73792846364428462525599942305655e-15 0x1.5ed8897ea140e96a31453d6e580p-47
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 3.0000
Failure: Test: sinpi_towardzero (0x3.fffffffffffffffcp+108)
Result:
is: 1.71856472474338625450766636956702e-14 0x1.3596cf230d8f69346d93d8c3100p-46
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 1.71856472474338625450766636956702e-14 0x1.3596cf230d8f69346d93d8c3100p-46
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 3.0000
Failure: Test: sinpi_towardzero (0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 9.73792846364428462525599942305655e-15 0x1.5ed8897ea140e96a31453d6e580p-47
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
difference: 9.73792846364428462525599942305655e-15 0x1.5ed8897ea140e96a31453d6e580p-47
ulp : 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321
max.ulp : 3.0000
Failure: Test: sinpi_upward (-0x3.fffffffffffffffcp+108)
Result:
is: -1.71856472474338625450766636956709e-14 -0x1.3596cf230d8f69346d93d8c3110p-46
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 1.71856472474338625450766636956710e-14 0x1.3596cf230d8f69346d93d8c3110p-46
ulp : inf
max.ulp : 4.0000
Failure: Test: sinpi_upward (-0x3.ffffffffffffffffffffffffffp+108)
Result:
is: -9.73792846364428462525599942305708e-15 -0x1.5ed8897ea140e96a31453d6e598p-47
should be: -0.00000000000000000000000000000000e+00 -0x0.000000000000000000000000000p+0
difference: 9.73792846364428462525599942305709e-15 0x1.5ed8897ea140e96a31453d6e598p-47
ulp : inf
max.ulp : 4.0000
Failure: sinpi_upward (0xf.ffffffffffffbffffffffffffcp+1020): Exception "Invalid operation" set
Failure: sinpi_upward (0xf.ffffffffffffbffffffffffffcp+1020): Exception "Overflow" set
Failure: sinpi_upward (0xf.ffffffffffffbffffffffffffcp+1020): errno set to 33, expected 0 (unchanged)
Failure: Test: sinpi_upward (0xf.ffffffffffffbffffffffffffcp+1020)
Result:
is: qNaN
should be: 0.00000000000000000000000000000000e+00 0x0.000000000000000000000000000p+0
|
|
On powerpc math/test-ibm128-cospi shows:
testing long double (without inline functions)
Failure: cospi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): Exception "Invalid operation" set
Failure: cospi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): Exception "Overflow" set
Failure: cospi_downward (-0xf.ffffffffffffbffffffffffffcp+1020): errno set to 33, expected 0 (unchanged)
Failure: Test: cospi_downward (-0xf.ffffffffffffbffffffffffffcp+1020)
Result:
is: qNaN
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
Failure: Test: cospi_downward (0x3.fffffffffffffffcp+108)
Result:
is: 9.99999999999999999999999999995574e-01 0x1.ffffffffffffffffffffffff4c8p-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 4.42501664022411309598141492088312e-30 0x1.670000000000000000000000000p-98
ulp : 179.5000
max.ulp : 4.0000
Failure: Test: cospi_downward (0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 9.99999999999999999999999999996524e-01 0x1.ffffffffffffffffffffffff730p-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 3.47591836363008326759542899077727e-30 0x1.1a0000000000000000000000000p-98
ulp : 141.0000
max.ulp : 4.0000
Failure: Test: cospi_towardzero (-0x3.fffffffffffffffcp+108)
Result:
is: 9.99999999999999999999999999852310e-01 0x1.ffffffffffffffffffffffe8990p-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 1.47689552599346303944427057331536e-28 0x1.767000000000000000000000000p-93
ulp : 5991.0000
max.ulp : 4.0000
Failure: Test: cospi_towardzero (-0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 9.99999999999999999999999999952569e-01 0x1.fffffffffffffffffffffff87c0p-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 4.74302619264133348003801799876275e-29 0x1.e10000000000000000000000000p-95
ulp : 1924.0000
max.ulp : 4.0000
Failure: Test: cospi_towardzero (0x3.fffffffffffffffcp+108)
Result:
is: 9.99999999999999999999999999852310e-01 0x1.ffffffffffffffffffffffe8990p-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 1.47689552599346303944427057331536e-28 0x1.767000000000000000000000000p-93
ulp : 5991.0000
max.ulp : 4.0000
Failure: Test: cospi_towardzero (0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 9.99999999999999999999999999952569e-01 0x1.fffffffffffffffffffffff87c0p-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 4.74302619264133348003801799876275e-29 0x1.e10000000000000000000000000p-95
ulp : 1924.0000
max.ulp : 4.0000
Failure: Test: cospi_upward (-0x3.fffffffffffffffcp+108)
Result:
is: 9.99999999999999999999999999852323e-01 0x1.ffffffffffffffffffffffe899bp-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 1.47673235656615530277812119019587e-28 0x1.766568e20369c00000000000000p-93
ulp : 5990.3382
max.ulp : 4.0000
Failure: Test: cospi_upward (-0x3.ffffffffffffffffffffffffffp+108)
Result:
is: 9.99999999999999999999999999952583e-01 0x1.fffffffffffffffffffffff87cbp-1
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
difference: 4.74136253815267677203679334037676e-29 0x1.e0d4cf1e9076600000000000000p-95
ulp : 1923.3252
max.ulp : 4.0000
Failure: cospi_upward (0xf.ffffffffffffbffffffffffffcp+1020): Exception "Invalid operation" set
Failure: cospi_upward (0xf.ffffffffffffbffffffffffffcp+1020): Exception "Overflow" set
Failure: cospi_upward (0xf.ffffffffffffbffffffffffffcp+1020): errno set to 33, expected 0 (unchanged)
Failure: Test: cospi_upward (0xf.ffffffffffffbffffffffffffcp+1020)
Result:
is: qNaN
should be: 1.00000000000000000000000000000000e+00 0x1.000000000000000000000000000p+0
|
|
This should fix the reported issue building cospi and sinpi with GCC 6.
Tested for x86_64 (not with GCC 6).
|
|
Fix variables in Makefiles:
1. There is a tab, not a space, between "variable" and =, +=, :=.
2. The last entry doesn't have a trailing \.
and sort them.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the sinpi functions (sin(pi*x)).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the cospi functions (cos(pi*x)).
Tested for x86_64 and x86, and with build-many-glibcs.py.
|
|
So we can eventually replace each implementation.
Reviewed-by: DJ Delorie <dj@redhat.com>
|
|
The CORE-MATH implementation is correctly rounded (for any rounding mode).
This can be checked by exhaustive tests in a few minutes since there are
less than 2^32 values to check against for example GNU MPFR.
This patch also adds some bench values for tgammaf.
Tested on x86_64 and x86 (cfarm26).
With the initial GNU libc code it gave on an Intel(R) Core(TM) i7-8700:
"tgammaf": {
"": {
"duration": 3.50188e+09,
"iterations": 2e+07,
"max": 602.891,
"min": 65.1415,
"mean": 175.094
}
}
With the new code:
"tgammaf": {
"": {
"duration": 3.30825e+09,
"iterations": 5e+07,
"max": 211.592,
"min": 32.0325,
"mean": 66.1649
}
}
With the initial GNU libc code it gave on cfarm26 (i686):
"tgammaf": {
"": {
"duration": 3.70505e+09,
"iterations": 6e+06,
"max": 2420.23,
"min": 243.154,
"mean": 617.509
}
}
With the new code:
"tgammaf": {
"": {
"duration": 3.24497e+09,
"iterations": 1.8e+07,
"max": 1238.15,
"min": 101.155,
"mean": 180.276
}
}
Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Changes in v2:
- include <math.h> (fix the linknamespace failures)
- restored original benchtests/strcoll-inputs/filelist#en_US.UTF-8 file
- restored original wrapper code (math/w_tgammaf_compat.c),
except for the dealing with the sign
- removed the tgammaf/float entries in all libm-test-ulps files
- address other comments from Joseph Myers
(https://sourceware.org/pipermail/libc-alpha/2024-July/158736.html)
Changes in v3:
- pass NULL argument for signgam from w_tgammaf_compat.c
- use of math_narrow_eval
- added more comments
Changes in v4:
- initialize local_signgam to 0 in math/w_tgamma_template.c
- replace sysdeps/ieee754/dbl-64/gamma_productf.c by dummy file
Changes in v5:
- do not mention local_signgam any more in math/w_tgammaf_compat.c
- initialize local_signgam to 1 instead of 0 in w_tgamma_template.c
and added comment
Changes in v6:
- pass NULL as 2nd argument of __ieee754_gammaf_r in
w_tgammaf_compat.c, and check for NULL in e_gammaf_r.c
Changes in v7:
- added Signed-off-by line for Alexei Sibidanov (author of the code)
Changes in v8:
- added Signed-off-by line for Paul Zimmermann (submitted of the patch)
Changes in v9:
- address comments from review by Adhemerval Zanella
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
|
This enables vectorisation of C23 logp1, which is an alias for log1p.
There are no new tests or ulp entries because the new symbols are simply
aliases.
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
|
|
As reported in bug 32045, it's incorrect for strtod/nan functions to
set errno based on overflowing payload (strtod should only set errno
for overflow / underflow of its actual result, and potentially if
nothing in the string can be parsed as a number at all; nan should be
a pure function that never sets it). Save and restore errno around
the internal strtoull call and add associated test coverage.
Tested for x86_64.
|
|
There are two separate sets of tests of NaN payloads in glibc:
* libm-test-{get,set}payload* verify that getpayload, setpayload,
setpayloadsig and __builtin_nan functions are consistent in their
payload handling.
* test-nan-payload verifies that strtod-family functions and the
not-built-in nan functions are consistent in their payload handling.
Nothing, however, connects the two sets of functions (i.e., verifies
that strtod / nan are consistent with getpayload / setpayload /
__builtin_nan).
Improve test-nan-payload to check actual payload value with getpayload
rather than just verifyin |