about summary refs log tree commit diff
path: root/math
Commit message (Collapse)AuthorAgeFilesLines
* PowerPC floating point little-endian [4 of 15]Alan Modra2013-10-041-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* PowerPC floating point little-endian [1 of 15]Alan Modra2013-10-041-214/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* New test cases for sin and cos for multiple precision fallbackSiddhesh Poyarekar2013-09-191-0/+18
|
* Fix static-binary lazy FPU context allocationMaciej W. Rozycki2013-09-095-7/+40
| | | | | | | | | | | | | | | | | | | 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.
* Fix lgammaf spurious underflow (bug 15427).Joseph Myers2013-09-031-0/+55
|
* Fix spurious jnf underflows (bug 14155).Joseph Myers2013-09-021-2/+17
|
* math: Additional type conversion testsThomas Schwinge2013-08-291-7/+13
| | | | | | 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.
* Fix cexp (NaN + i0) (bug 15532).Joseph Myers2013-08-234-13/+32
|
* Fix fdim handling of infinities (bug 15797).Joseph Myers2013-08-214-39/+43
|
* Fix cproj handling of (finite, NaN) arguments (bug 15531).Joseph Myers2013-08-204-9/+43
|
* Fix cbrtl for ldbl-96Andreas Schwab2013-08-131-0/+5
|
* Annotate more cases of math bug 15319.David S. Miller2013-07-131-16/+20
| | | | | | * math/libm-test.inc (casin_test_data): Annotate more cases of missing underflows from atanl/atan2l due to bug 15319. (casinh_test_data): Likewise.
* Allow fesetround failures in math/test-misc.c if ROUNDING_TESTS fails.Joseph Myers2013-06-201-1/+5
|
* Avoid spurious failures from <fenv.h> fallback functions (bug 15654).Joseph Myers2013-06-2010-15/+27
|
* Use math-tests.h more in math/test-misc.Joseph Myers2013-06-171-2/+10
|
* Add another fma test.Joseph Myers2013-06-151-0/+1
|
* Make more libm tests condition exceptions tests with math-tests.h.Joseph Myers2013-06-123-51/+54
|
* Add exception information to math-tests.h and use it in libm-test.inc.Joseph Myers2013-06-111-17/+21
|
* Add rounding mode information to math-tests.h and use it in libm-test.inc.Joseph Myers2013-06-101-4/+9
|
* Remove trailing whitespace.Joseph Myers2013-06-051-1/+1
|
* BZ #15536: Fix ulp for 128-bit IBM long double.Carlos O'Donell2013-06-031-11/+26
| | | | | | | | 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.
* Link extra-libs consistently with libc and ld.so.Joseph Myers2013-05-311-5/+0
|
* Fix ldbl-96 hypotl of subnormals (bug 15529).Joseph Myers2013-05-241-0/+13
|
* Test drem and pow10 in libm-test.inc.Joseph Myers2013-05-241-5/+63
|
* Use same tests for isfinite/finite, lgamma/gamma.Joseph Myers2013-05-241-44/+18
|
* Correctly compute ulp near zero.Carlos O'Donell2013-05-241-48/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Remove libm-test START_DATA and END_DATA.Joseph Myers2013-05-242-347/+0
|
* Make libm-test START and END into ordinary macros.Joseph Myers2013-05-242-197/+176
|
* Don't include function names in test data in generated libm-test.c.Joseph Myers2013-05-222-132/+241
|
* Don't include expected results in libm-test test names.Joseph Myers2013-05-221-4/+1
|
* Handle sincos with generic libm-test logic.Joseph Myers2013-05-193-86/+56
|
* Simplify gen-libm-test.pl handling of tests with extra outputs.Joseph Myers2013-05-191-65/+17
|
* Don't disable CMPLXL macro for __NO_LONG_DOUBLE_MATH (bug 15488).Joseph Myers2013-05-183-9/+1
|
* Make libm-test look up ulps by name at runtime.Joseph Myers2013-05-182-228/+225
|
* Fix remainder exceptions and directed-rounding results (bugs 15480, 15485).Joseph Myers2013-05-171-7/+162
|
* Simplify libm-test extra-output initialization.Joseph Myers2013-05-172-37/+30
|
* Don't handle ulps for integer tests in libm-test.inc.Joseph Myers2013-05-171-15/+3
|
* Test more cases of "inexact" exceptions in libm-test.inc.Joseph Myers2013-05-171-1119/+1132
|
* Test for errno setting in more pole error cases.Joseph Myers2013-05-161-15/+15
|
* Remove ENOSYS tests in libm-test.inc.Joseph Myers2013-05-161-649/+0
|
* Remove libm-test support for TEST_* inside functions.Joseph Myers2013-05-162-90/+28
|
* Convert TEST_extra tests from code to data.Joseph Myers2013-05-161-48/+75
|
* De-stringify constants in math/atest-exp2.c.Richard Henderson2013-05-161-42/+32
|
* Support testing "inexact" exceptions in libm-test.inc.Joseph Myers2013-05-161-392/+399
|
* Test for errno setting in more overflow error cases.Joseph Myers2013-05-161-81/+79
|
* Convert TEST_cc_c tests from code to data.Joseph Myers2013-05-161-14/+36
|
* Convert TEST_f_L tests from code to data.Joseph Myers2013-05-161-769/+780
|
* Remove const attribute on get_log2Peter Collingbourne2013-05-151-1/+0
| | | | This function is not const, as it can modify log2_m and log2_m_inited.
* Convert TEST_f_l tests from code to data.Joseph Myers2013-05-151-167/+179
|
* Consistently use TEST_f_L in tests of llrint and llround.Joseph Myers2013-05-151-6/+6
|