aboutsummaryrefslogtreecommitdiff
path: root/math
AgeCommit message (Collapse)Author
2013-10-04PowerPC floating point little-endian [4 of 15]Alan Modra
http://sourceware.org/ml/libc-alpha/2013-08/msg00084.html Another batch of ieee854 macros and union replacement. These four files also have bugs fixed with this patch. The fact that the two doubles in an IBM long double may have different signs means that negation and absolute value operations can't just twiddle one sign bit as you can with ieee864 style extended double. fmodl, remainderl, erfl and erfcl all had errors of this type. erfl also returned +1 for large magnitude negative input where it should return -1. The hypotl error is innocuous since the value adjusted twice is only used as a flag. The e_hypotl.c tests for large "a" and small "b" are mutually exclusive because we've already exited when x/y > 2**120. That allows some further small simplifications. [BZ #15734], [BZ #15735] * sysdeps/ieee754/ldbl-128ibm/e_fmodl.c (__ieee754_fmodl): Rewrite all uses of ieee875 long double macros and unions. Simplify test for 0.0L. Correct |x|<|y| and |x|=|y| test. Use ldbl_extract_mantissa value for ix,iy exponents. Properly normalize after ldbl_extract_mantissa, and don't add hidden bit already handled. Don't treat low word of ieee854 mantissa like low word of IBM long double and mask off bit when testing for zero. * sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (__ieee754_hypotl): Rewrite all uses of ieee875 long double macros and unions. Simplify tests for 0.0L and inf. Correct double adjustment of k. Delete dead code adjusting ha,hb. Simplify code setting kld. Delete two600 and two1022, instead use their values. Recognise that tests for large "a" and small "b" are mutually exclusive. Rename vars. Comment. * sysdeps/ieee754/ldbl-128ibm/e_remainderl.c (__ieee754_remainderl): Rewrite all uses of ieee875 long double macros and unions. Simplify test for 0.0L and nan. Correct negation. * sysdeps/ieee754/ldbl-128ibm/s_erfl.c (__erfl): Rewrite all uses of ieee875 long double macros and unions. Correct output for large magnitude x. Correct absolute value calculation. (__erfcl): Likewise. * math/libm-test.inc: Add tests for errors discovered in IBM long double versions of fmodl, remainderl, erfl and erfcl.
2013-10-04PowerPC floating point little-endian [1 of 15]Alan Modra
http://sourceware.org/ml/libc-alpha/2013-08/msg00081.html This is the first of a series of patches to ban ieee854_long_double and the ieee854_long_double macros when using IBM long double. union ieee854_long_double just isn't correct for IBM long double, especially when little-endian, and pretending it is OK has allowed a number of bugs to remain undetected in sysdeps/ieee754/ldbl-128ibm/. This changes the few places in generic code that use it. * stdio-common/printf_size.c (__printf_size): Don't use union ieee854_long_double in fpnum union. * stdio-common/printf_fphex.c (__printf_fphex): Likewise. Use signbit macro to retrieve sign from long double. * stdio-common/printf_fp.c (___printf_fp): Use signbit macro to retrieve sign from long double. * sysdeps/ieee754/ldbl-128ibm/printf_fphex.c: Adjust for fpnum change. * sysdeps/ieee754/ldbl-128/printf_fphex.c: Likewise. * sysdeps/ieee754/ldbl-96/printf_fphex.c: Likewise. * sysdeps/x86_64/fpu/printf_fphex.c: Likewise. * math/test-misc.c (main): Don't use union ieee854_long_double. ports/ * sysdeps/ia64/fpu/printf_fphex.c: Adjust for fpnum change.
2013-09-19New test cases for sin and cos for multiple precision fallbackSiddhesh Poyarekar
2013-09-09Fix static-binary lazy FPU context allocationMaciej W. Rozycki
Long ago static startup did not parse the auxiliary vector and therefore could not get at any `AT_FPUCW' tag to check whether upon FPU context allocation the kernel would use a FPU control word setting different to that provided by the `__fpu_control' variable. Static startup therefore always initialized the FPU control word, forcing immediate FPU context allocation even for binaries that otherwise never used the FPU. As from GIT commit f8f900ecb9096ec47f5b7bb7626e29223c69061a static startup supports parsing the auxiliary vector, so now it can avoid explicit initialization of the FPU control word, just as can dynamic startup, in the usual case where the setting written to the FPU control word would be the same as the kernel uses. This defers FPU context allocation until the binary itself actually pokes at the FPU. Note that the `AT_FPUCW' tag is usually absent from the auxiliary vector in which case _FPU_DEFAULT is assumed to be the kernel default.
2013-09-03Fix lgammaf spurious underflow (bug 15427).Joseph Myers
2013-09-02Fix spurious jnf underflows (bug 14155).Joseph Myers
2013-08-29math: Additional type conversion testsThomas Schwinge
These have helped me find and fix type conversion issues in QEMU's MIPS hardware emulation. While certainly glibc is not the best place for such tests, they're just an enhancement of tests already present.
2013-08-23Fix cexp (NaN + i0) (bug 15532).Joseph Myers
2013-08-21Fix fdim handling of infinities (bug 15797).Joseph Myers
2013-08-20Fix cproj handling of (finite, NaN) arguments (bug 15531).Joseph Myers
2013-08-13Fix cbrtl for ldbl-96Andreas Schwab
2013-07-13Annotate more cases of math bug 15319.David S. Miller
* math/libm-test.inc (casin_test_data): Annotate more cases of missing underflows from atanl/atan2l due to bug 15319. (casinh_test_data): Likewise.
2013-06-20Allow fesetround failures in math/test-misc.c if ROUNDING_TESTS fails.Joseph Myers
2013-06-20Avoid spurious failures from <fenv.h> fallback functions (bug 15654).Joseph Myers
2013-06-17Use math-tests.h more in math/test-misc.Joseph Myers
2013-06-15Add another fma test.Joseph Myers
2013-06-12Make more libm tests condition exceptions tests with math-tests.h.Joseph Myers
2013-06-11Add exception information to math-tests.h and use it in libm-test.inc.Joseph Myers
2013-06-10Add rounding mode information to math-tests.h and use it in libm-test.inc.Joseph Myers
2013-06-05Remove trailing whitespace.Joseph Myers
2013-06-03BZ #15536: Fix ulp for 128-bit IBM long double.Carlos O'Donell
In 128-bit IBM long double the precision of the type decreases as you approach subnormal numbers, equaling that of a double for subnormal numbers. Therefore adjust the computation in ulp to use 2^(MIN_EXP - MANT_DIG) which is correct for FP_SUBNORMAL for all types.
2013-05-31Link extra-libs consistently with libc and ld.so.Joseph Myers
2013-05-24Fix ldbl-96 hypotl of subnormals (bug 15529).Joseph Myers
2013-05-24Test drem and pow10 in libm-test.inc.Joseph Myers
2013-05-24Use same tests for isfinite/finite, lgamma/gamma.Joseph Myers
2013-05-24Correctly compute ulp near zero.Carlos O'Donell
The current value used for ulp near zero is wrong, and this commit fixes it such that ulp(0) is the smallest subnormal value nearest to zero, which makes the most sense for testing values near zero. Note that this is not what Java does; they use the nearest normal value, which is less accurate than what we want for glibc. Note that there is no correct implementation of ulp since there is no strict mathmatical definition that is accepted by all groups using IEEE 754. Previously with the large ulp values near zero there were tests that previously passed, but were in fact billions of ulp away from the precise answer. With this commit we now need to disable one of the cpow tests which is revealed to be inaccurate (bug 14473). --- 2013-05-24 Carlos O'Donell <carlos@redhat.com> * math/libm-test.inc (MAX_EXP): Define. (ULPDIFF): Define. (ulp): New function. (check_float_internal): Use ULPDIFF. (cpow_test): Disable failing test. (check_ulp): Test ulp() implemetnation. (main): Call check_ulp before starting tests.
2013-05-24Remove libm-test START_DATA and END_DATA.Joseph Myers
2013-05-24Make libm-test START and END into ordinary macros.Joseph Myers
2013-05-22Don't include function names in test data in generated libm-test.c.Joseph Myers
2013-05-22Don't include expected results in libm-test test names.Joseph Myers
2013-05-19Handle sincos with generic libm-test logic.Joseph Myers
2013-05-19Simplify gen-libm-test.pl handling of tests with extra outputs.Joseph Myers
2013-05-18Don't disable CMPLXL macro for __NO_LONG_DOUBLE_MATH (bug 15488).Joseph Myers
2013-05-18Make libm-test look up ulps by name at runtime.Joseph Myers
2013-05-17Fix remainder exceptions and directed-rounding results (bugs 15480, 15485).Joseph Myers
2013-05-17Simplify libm-test extra-output initialization.Joseph Myers
2013-05-17Don't handle ulps for integer tests in libm-test.inc.Joseph Myers
2013-05-17Test more cases of "inexact" exceptions in libm-test.inc.Joseph Myers
2013-05-16Test for errno setting in more pole error cases.Joseph Myers
2013-05-16Remove ENOSYS tests in libm-test.inc.Joseph Myers
2013-05-16Remove libm-test support for TEST_* inside functions.Joseph Myers
2013-05-16Convert TEST_extra tests from code to data.Joseph Myers
2013-05-16De-stringify constants in math/atest-exp2.c.Richard Henderson
2013-05-16Support testing "inexact" exceptions in libm-test.inc.Joseph Myers
2013-05-16Test for errno setting in more overflow error cases.Joseph Myers
2013-05-16Convert TEST_cc_c tests from code to data.Joseph Myers
2013-05-16Convert TEST_f_L tests from code to data.Joseph Myers
2013-05-15Remove const attribute on get_log2Peter Collingbourne
This function is not const, as it can modify log2_m and log2_m_inited.
2013-05-15Convert TEST_f_l tests from code to data.Joseph Myers
2013-05-15Consistently use TEST_f_L in tests of llrint and llround.Joseph Myers