Commit Graph

60 Commits

Author SHA1 Message Date
Joseph Myers
0a42601f27 Fix ldbl-128ibm atanl spurious underflows (bug 14871). 2012-11-22 19:56:47 +00:00
Joseph Myers
c60d3bf2fa Fix sign of inexact zero results for ldbl-128ibm fmal. 2012-11-22 15:00:35 +00:00
Joseph Myers
ef1e0867c0 Fix ldbl-128ibm powl spurious underflows. 2012-11-22 14:59:45 +00:00
Joseph Myers
1468ded38e Fix ldbl-128ibm hypotl internal underflows (bug 14869). 2012-11-22 14:58:41 +00:00
Joseph Myers
8e27e3cc45 Fix ldbl-128ibm hypotl inaccuracy for arguments with large ratio (bug 14868). 2012-11-22 14:57:22 +00:00
Joseph Myers
7c7feb4772 Fix expm1l spurious underflows for ldbl-128ibm. 2012-11-22 14:55:17 +00:00
Joseph Myers
16a0e2ec87 Fix ldbl-128ibm atan2l for x near 1. 2012-10-31 20:44:59 +00:00
Joseph Myers
d032e0d29b Fix inaccuracy of clog, clog10 near |z| = 1 (bug 13629). 2012-09-25 19:43:49 +00:00
Marek Polacek
354691b7b5 Set up errno properly for yn. 2012-07-25 12:59:36 +02:00
Adhemerval Zanella
28cfe84316 Fix ctan, ctanh of subnormals in round-upwards mode (bug 14328).
IBM long double fixes and POWER ulps update.
2012-07-11 09:19:27 -03:00
Adhemerval Zanella
1b671feb61 Fix for wrong ldbl128-ibm fmodl commit 2012-06-05 21:33:23 -03:00
Adhemerval Zanella
6043738b36 Fix spurious undeflow for ldbl-128ibm erfl
For values higher than 25.6283 erflc underflow, so adjust erfl
to return a constant value based argument sign.
2012-06-05 10:42:49 -03:00
Adhemerval Zanella
34ae0b3270 Fix ldbl128ibm fmodl for subnormals. 2012-06-05 10:16:49 -03:00
Andreas Schwab
25dbcb277a Optimize handling of denormals in logb/logbf/logbl 2012-05-26 13:53:22 +02:00
Adhemerval Zanella
89c9aa491a Fix for logb/logbf/logbl (bugs 13954/13955/13956)
POSIX 2008 states that if the input for 'logb[f|l]' is a subnormal number
it should be treated as if it were normalized.  This means the
implementation should calculate the log2 of the mantissa and add it to the
subnormal exponent (-126 for float and -1022 for double and IBM long
double).  This patch takes care of that.
2012-05-10 15:11:55 -05:00
Joseph Myers
d8b82cad1b Fix exp10 inaccuracy and exceptions (bugs 13884, 13914). 2012-05-06 18:23:44 +00:00
Adhemerval Zanella
31dc8730af Fix for ldbl-128ibm acosl/asinl inaccuracies
2012-05-02  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>

	* sysdeps/ieee754/ldbl-128ibm/e_acosl.c (__ieee754_acosl): Fix
	long double comparison inaccuracies.
	* sysdeps/ieee754/ldbl-128ibm/e_asinl.c (__ieee754_asinl):
	* Likewise.
	* sysdeps/powerpc/fpu/libm-test-ulps: Update.
2012-05-04 13:06:32 +02:00
Adhemerval Zanella
4f9d04aa8f Fix nexttoward bugs
[BZ #2550]
        [BZ #2570]
        * sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: Use floating-point
        comparisons to determine direction to adjust input.
2012-05-02 15:14:17 +02:00
Joseph Myers
7cb029ee6e Fix nexttoward bugs (bugs 2550, 2570). 2012-05-01 15:37:43 +00:00
Andreas Schwab
7e0d315da8 Fix formatting of denormal IBM long double numbers 2012-04-28 22:21:27 +02:00
Adhemerval Zanella
0ac229c819 Fix ctan, ctanh overflow for ldbl-128ibm (bug 11521). 2012-04-26 11:18:11 -05:00
Adhemerval Zanella
76da726532 Fix ilogb exception and errno (bug 6794)
[BZ #6794]
Following Joseph comments about bug 6794, here is a proposed fix. It turned out
to be a large fix mainly because I had to move some file along to follow libm
files/names conventions.

Basically I have added wrappers (w_ilogb.c, w_ilogbf.c, w_ilogbl.c) that now calls
the symbol '__ieee754_ilogb'. The wrappers checks for '__ieee754_ilogb' output and
set the errno and raise exceptions as expected.

The '__ieee754_ilogb' is implemented in sysdeps. I have moved the 's_ilogb[f|l]' files
to e_ilogb[f|l] and renamed the '__ilogb[f|l]' to '__ieee754_ilogb[f|l]'.

I also found out a bug in i386 and x86-64 assembly coded ilogb implementation where
it raises a FE_DIVBYZERO when argument is '0.0'. I corrected this issue as well.

Finally I added the errno and FE_INVALID tests for 0.0, NaN and +-InF argument. Tested
on i386, x86-64, ppc32 and ppc64.
2012-04-17 22:12:53 +02:00
Andreas Schwab
a3f61311c0 Fix undue underflow in ldbl-128ibm version of expl 2012-03-26 14:19:35 +02:00
Joseph Myers
c0df8e693f Fix low-part sign handling in sin/cos for ldbl-128 and ldbl-128ibm. 2012-03-22 12:52:50 +00:00
Andreas Schwab
dcb3398838 Fix missing overflow/underflow exception in ldbl-128ibm version of powl 2012-03-21 23:59:22 +01:00
Richard Henderson
1ed0291c31 Use <> for math.h and math_private.h everywhere.
Entire tree edited via find | grep | sed.
2012-03-09 16:09:10 -08:00
Andreas Schwab
bbb78d030e Fix loss of precision in cosh and sinh for IBM long double 2012-03-05 20:38:17 +01:00
Joseph Myers
a6d06d7b86 Fix scalbn, scalbln integer overflow. 2012-03-02 15:32:56 +00:00
Joseph Myers
7b1902cb3e Improve erfc accuracy. 2012-03-01 21:15:38 +00:00
Paul Eggert
59ba27a63a Replace FSF snail mail address with URLs. 2012-02-09 23:18:22 +00:00
Joseph Myers
8db2188281 Remove __STDC__ conditionals from libm. 2012-01-27 17:29:45 +00:00
Andreas Schwab
246ad57ad6 Add missing _finite aliases 2011-10-23 15:32:05 +02:00
Andreas Schwab
ee2aafe08e Fix compilation due to __nan defines 2011-10-22 14:03:26 +02:00
Ulrich Drepper
bcf01e6d80 Optimize exp
Add __exp*_finite optimizations and rewrite some wrappers.
2011-10-15 20:22:59 -04:00
Ulrich Drepper
0ac5ae2335 Optimize libm
libm is now somewhat integrated with gcc's -ffinite-math-only option
and lots of the wrapper functions have been optimized.
2011-10-12 11:27:51 -04:00
Andreas Schwab
12cc2fcdb4 Implement __isinf_nsl for IBM long double 2011-10-10 21:39:59 +02:00
Petr Baudis
1248c1c415 Fix jn precision 2011-09-09 22:16:10 -04:00
Ulrich Drepper
3d4837df4a Check for finite/infinity parms in IBM Long Double 128 fmal( )
This patch addresses some IBM Long Double 128 fmal () test-ldouble.out
and test-ildoubl.out failures.  If the ‘x’ and ‘y’ parameters are
finite values and ‘z’ is infinity, the result of fmal () should be ‘z’
not NaN.

Conflicts:

	ChangeLog
2011-09-07 22:17:33 -04:00
Luis Machado
da93d21475 Fix comparison in sqrtl for IBM long double 128. 2010-11-10 16:15:05 -05:00
Ulrich Drepper
88e236a627 Fix cproj implmentation. 2010-04-08 15:32:51 -07:00
Andreas Schwab
38ae768d88 Fix errno for IBM long double.
After the last addition to the math test suite PPC routines haven't
been adjusted so far.
2009-05-22 08:35:15 -07:00
Ulrich Drepper
3b6d574e01 * sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c (__nearbyintl): Use
__nextafter instead of nextafter to avoid local PLT.
2008-04-12 03:49:11 +00:00
Ulrich Drepper
246ec41199 * sysdeps/powerpc/fpu/fenv_libc.h: Add libm_hidden_proto for
__fe_nomask_env.
	* sysdeps/powerpc/fpu/fe_nomask.c: Add libm_hidden_def.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: Likewise.

	* sysdeps/powerpc/bits/fenv.h: Make safe for C++.

	* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: New file.
	* sysdeps/powerpc/fpu/fegetexcept.c (__fegetexcept): Rename
	function from fegetexcept and make old name weak alias.
	* include/fenv.h: Declare __fegetexcept.
	* sysdeps/powerpc/fpu/fedisblxcpt.c: Use __fegetexcept instead of
	fegetexcept.
	* sysdeps/powerpc/fpu/feenablxcpt.c: Likewise.
	* sysdeps/powerpc/fpu/fraiseexcpt.c (__feraiseexcept): Avoid call
	to fetestexcept.
	* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Use __frexpl
	instead of frexpl to avoid local PLT.
	* math/s_significandl.c (__significandl): Use __ilogbl instead of
	ilogbl to avoid local PLT.
	* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Use __ldexpl
	instead of ldexpl to avoid local PLT.
	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use
	__roundl not roundl to avoid local PLT.
	* sysdeps/ieee754/ldbl-128/e_j0l.c: Use function names which avoid
	local PLTs.  Use __sincosl instead of separate sinl and cosl
	calls.
	* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
2008-04-12 00:51:34 +00:00
Jakub Jelinek
1e28665349 * sysdeps/ieee754/ldbl-128ibm/strtold_l.c (___new_strtold_l,
___new_wcstold_l): New weak aliases. 
(strtold_l, wcstold_l): Use them as second argument for 
long_double_symbol.
2007-08-10  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/ieee754/ldbl-128ibm/strtold_l.c (___new_strtold_l,
	___new_wcstold_l): New weak aliases.
	(strtold_l, wcstold_l): Use them as second argument for
	long_double_symbol.
2007-08-10 17:59:27 +00:00
Roland McGrath
773e305efc * include/stdlib.h: Add libc_hidden_proto for strto*, __strto*_l.
Remove __strto*_l inlines.
	* include/wchar.h: Add libc_hidden_proto for wcsto*, __wcsto*_l.
	* stdlib/strtod.c: Add libc_hidden_def.
	* stdlib/strtod_l.c: Likewise.
	* stdlib/strtold.c [__LONG_DOUBLE_MATH_OPTIONAL]: Add libc_hidden_proto
	for __new_strtold and __new_wcstold.
	* sysdeps/ieee754/ldbl-128ibm/strtold_l.c: Add libc_hidden_proto for
	__STRTOF, STRTOF.
	* stdlib/strtol.c: Add libc_hidden_def.
	* stdlib/strtol_l.c: Likewise.
	* sysdeps/wordsize-64/strtol.c: Add libc_hidden_ver for strtoll and
	strtoq.

	* scripts/data/localplt-powerpc-linux-gnu.data: New file.

	* scripts/data/localplt-x86_64-linux-gnu.data: File renamed to ...
	* scripts/data/localplt-generic.data: ... here.
	* elf/Makefile (check-data): Get generic file if no other.
	($(objpfx)check-localplt.out): Make target unconditional.
2007-08-07 05:36:32 +00:00
Ulrich Drepper
7e3706ea25 * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (nextafterl): Remove
unused ily variable.  Fix nextafterl on +-__LDBL_MAX__ and +-Inf.
	Remove unreachable code at the end.

2007-06-01  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c: Correct description of
	ldbl-128ibm in comment.
	(fpclassifyl): Correct classification of denormals.
	* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (nextafterl): Correct
	return value for MIN denormal. Rewrite using long double math too
	correctly handle denormals and canonicalize the results.

2007-06-05  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c
	(__mpn_construct_long_double): Fix conversion where result ought
	to be smaller than __LDBL_MIN__, or the low double should be
	denormal.  Fix decision where to negate low double - honor round
	to even rules.
	* stdio-common/tst-sprintf2.c: Include string.h.
	(COMPARE_LDBL): Define.
	(TEST): Also test whether a string hexadecimal float representation
	can be parsed back to the number.
	(main): Add a couple of further tests.

2007-06-04  Jakub Jelinek  <jakub@redhat.com>
2007-06-08 03:08:45 +00:00
Ulrich Drepper
43b7682843 * sysdeps/ieee754/ldbl-128ibm/printf_fphex.c
(PRINT_FPHEX_LONG_DOUBLE): Fix printing numbers where lower double
	is non-zero, but smaller than 2 * __DBL_MIN__.
	* stdio-common/tst-sprintf2.c: New test.
	* stdio-common/Makefile (tests): Add tst-sprintf2.

	* math/test-misc.c (main): Don't run last batch of tests with
	IBM long double format.
2007-06-04 14:38:22 +00:00
Ulrich Drepper
7a82b74f17 * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (__nextafterl): Use
math_opt_barrier and math_force_eval macros.
2007-04-16 20:42:23 +00:00
Ulrich Drepper
3e336a8754 [BZ #3306]
2007-03-27  Jakub Jelinek  <jakub@redhat.com>
	[BZ #3306]
	* math/math_private.h (math_opt_barrier, math_force_eval): Define.
	* sysdeps/i386/fpu/math_private.h: New file.
	* sysdeps/x86_64/fpu/math_private.h: New file.
	* math/s_nexttowardf.c (__nexttowardf): Use math_opt_barrier and
	math_force_eval macros.  Use "+m" constraint on asm rather than
	"=m" and "m".
	* math/s_nextafter.c (__nextafter): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c (__nexttoward):
	Likewise.
	* sysdeps/ieee754/flt-32/s_nextafterf.c (__nextafterf): Likewise.
	* sysdeps/ieee754/ldbl-128/s_nexttoward.c (__nexttoward): Likewise.
	* sysdeps/ieee754/ldbl-96/s_nexttoward.c (__nexttoward): Likewise.
	* sysdeps/i386/fpu/s_nextafterl.c (__nextafterl): Use
	math_opt_barrier and math_force_eval macros.
	* sysdeps/ieee754/ldbl-128/s_nextafterl.c (__nextafterl): Likewise.
	* sysdeps/ieee754/ldbl-96/s_nextafterl.c (__nextafterl): Likewise.
	* sysdeps/i386/fpu/s_nexttoward.c: Include float.h.
	(__nexttoward): Use math_opt_barrier and
	math_force_eval macros.  Use "+m" constraint on asm rather than
	"=m" and "m".  Only use asm to force double result if
	FLT_EVAL_METHOD is 2.
	* sysdeps/i386/fpu/s_nexttowardf.c: Include float.h.
	(__nexttowardf): Use math_opt_barrier and
	math_force_eval macros.  Use "+m" constraint on asm rather than
	"=m" and "m".  Only use asm to force double result if
	FLT_EVAL_METHOD is not 0.
	* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c: Include float.h.
	(__nexttowardf): Use math_opt_barrier and
	math_force_eval macros.  If FLT_EVAL_METHOD is not 0, force
	x to float using asm.
	* sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c: Include float.h.
	(__nldbl_nexttowardf): Use math_opt_barrier and
	math_force_eval macros.  If FLT_EVAL_METHOD is not 0, force
	x to float using asm.
	* sysdeps/ieee754/ldbl-96/s_nexttowardf.c: Include float.h.
	(__nexttowardf): Use math_opt_barrier and math_force_eval
	macros.  If FLT_EVAL_METHOD is not 0, force x to float using asm.
	* math/bug-nextafter.c (zero, inf): New variables.
	(main): Add new tests.
	* math/bug-nexttoward.c (zero, inf): New variables.
	(main): Add new tests.
2007-04-16 20:41:42 +00:00
Jakub Jelinek
cd8127cc70 [BZ #2749]
* sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: Include 
<math_ldbl_opt.h>.  Remove weak_alias.  Use long_double_symbol macro. 
(__copysignl): Use signbit() for comparison. 
* sysdeps/ieee754/ldbl-128ibm/s_fabsl.c (__fabsl): Correct parms for 
SET_LDOUBLE_WORDS64.
	[BZ #2423, #2749]
	* sysdeps/ieee754/ldbl-128ibm/s_ceill.c: Don't include <fenv_libc.h>.
	(__ceill): Remove calls to fegetround(), fesetround().
	* sysdeps/ieee754/ldbl-128ibm/s_floorl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_roundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_truncl.c: Likewise.
2007-01-12  Steven Munroe  <sjmunroe@us.ibm.com>
	    Joe Kerian  <jkerian@us.us.ibm.com>

	[BZ #2749]
	* sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: Include
	<math_ldbl_opt.h>.  Remove weak_alias.  Use long_double_symbol macro.
	(__copysignl): Use signbit() for comparison.
	* sysdeps/ieee754/ldbl-128ibm/s_fabsl.c (__fabsl): Correct parms for
	SET_LDOUBLE_WORDS64.

	[BZ #2423, #2749]
	* sysdeps/ieee754/ldbl-128ibm/s_ceill.c: Don't include <fenv_libc.h>.
	(__ceill): Remove calls to fegetround(), fesetround().
	* sysdeps/ieee754/ldbl-128ibm/s_floorl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_roundl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_truncl.c: Likewise.
2007-01-17 13:00:11 +00:00