Commit Graph

545 Commits

Author SHA1 Message Date
Siddhesh Poyarekar
e7906a4789 Use mantissa_t in mpexp 2013-04-02 17:53:09 +05:30
Thomas Schwinge
572676160d New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
2013-04-02 13:51:02 +02:00
Siddhesh Poyarekar
c2d94018c6 Remove ONE and MONE 2013-03-29 16:40:36 +05:30
Siddhesh Poyarekar
27ec37f185 Format s_tan.c 2013-03-29 16:38:27 +05:30
Siddhesh Poyarekar
a64d7e0efb Remove ZERO and MZERO macros 2013-03-29 16:37:26 +05:30
Siddhesh Poyarekar
d26dd3eb00 Format s_atan.c 2013-03-29 16:34:28 +05:30
Siddhesh Poyarekar
0f6a8d4b0b Format e_log.c 2013-03-29 16:34:00 +05:30
Adhemerval Zanella
fbbe2b9a1f Fix e_logl (128ibm) spurious underflow 2013-03-28 09:52:48 -03:00
Siddhesh Poyarekar
1728ab378e Format and clean up s_atan2.c 2013-03-28 10:56:06 +05:30
Siddhesh Poyarekar
5739f705ee Use integral constants
The compiler is smart enough to convert those into double for powerpc,
but if we put them as doubles, it adds overhead by performing those
operations in floating point mode.
2013-03-26 20:24:04 +05:30
Siddhesh Poyarekar
e375e83d17 Removed commented code 2013-03-26 20:14:18 +05:30
Siddhesh Poyarekar
6f2e90e78f Make mantissa type of mp_no configurable
The mantissa of mp_no is intended to take only integral values.  This
is a relatively good choice for powerpc due to its 4 fpus, but not for
other architectures, which suffer due to this choice.  This change
makes the default mantissa a long integer and allows powerpc to
override it.  Additionally, some operations have been optimized for
integer manipulation, resulting in a significant improvement in
performance.
2013-03-26 19:28:50 +05:30
Adhemerval Zanella
e42a38dd9d BZ#13889: expl (709.75) wrongly overflows for ldbl-128ibm
The patch increase the high value to check if expl overflows. Current
high mark value is not really correct, the algorithm accepts high values.
It also adds a correct wrapper function to check for overflow and underflow.
2013-03-22 12:39:10 -03:00
Joseph Myers
98c48fe5cc Fix Bessel function spurious overflows for ldbl-128 / ldbl-128ibm (bug 15285). 2013-03-21 13:57:21 +00:00
Siddhesh Poyarekar
b33d4ce4a2 Replace 8388608.0 with HALFRAD in mp code
Minor cleanup
2013-03-21 13:07:44 +05:30
Joseph Myers
d2f9799e7c Fix y1l spurious overflows for ldbl-96 (bug 15283). 2013-03-16 17:51:48 +00:00
Joseph Myers
2a185d32e8 Fix spurious underflow exceptions for Bessel functions for ldbl-128 / ldbl-128ibm (bug 14155). 2013-03-16 17:50:28 +00:00
Thomas Schwinge
67e971f18f Better distinguish between NaN/qNaN/sNaN. 2013-03-15 19:06:02 +01:00
Siddhesh Poyarekar
1e3803454e Revert configurable mantissa patch
Reverts d22ca8cdfb

since it is severely broken on 32-bit.
2013-03-15 23:18:51 +05:30
Siddhesh Poyarekar
d22ca8cdfb Make mantissa type configurable
This allows the default mantissa to be integral, with powerpc
overriding it to take advantage of its FPUs.
2013-03-15 10:44:03 +05:30
Joseph Myers
41c7328e85 Fix spurious underflow exceptions for Bessel functions for double (bug 14155). 2013-03-14 17:47:30 +00:00
Adhemerval Zanella
edf66e57fc PowerPC: unify math_ldbl.h implementations
This patch removes redudant definition from PowerPC specific
math_ldbl, using the definitions from ieee754 math_ldbl.h.
2013-03-08 11:07:15 -03:00
Siddhesh Poyarekar
ce544b5bda Merge powerpc slowexp.c into generic code 2013-03-07 13:25:02 +05:30
Siddhesh Poyarekar
4cc149fd8e Merge powerpc slowpow.c into generic code 2013-03-07 13:23:07 +05:30
Siddhesh Poyarekar
82a9811d29 Use generic mpa.c code for everything except __mul and __sqr 2013-03-07 12:23:29 +05:30
Adhemerval Zanella
e0b780ad5b BZ #15055: Use __ieee754_sqrl in acoshl for lbdl-128ibm 2013-03-04 11:37:51 -03:00
Siddhesh Poyarekar
09c14ed23e Format mpsqrt.c 2013-02-27 11:28:20 +05:30
Siddhesh Poyarekar
a688864eed Format mpatan2.c 2013-02-27 11:27:41 +05:30
Siddhesh Poyarekar
6295157a77 Format mpatan.c 2013-02-27 11:26:22 +05:30
Siddhesh Poyarekar
b8de22026d Format mptan.c 2013-02-27 11:25:39 +05:30
Siddhesh Poyarekar
11d6e2f237 Format mplog.c 2013-02-27 11:24:45 +05:30
Siddhesh Poyarekar
45f058844c Another tweak to the multiplication algorithm
Reduce the formula to calculate mantissa so that we reduce the net
number of multiplications performed.
2013-02-26 21:28:16 +05:30
Siddhesh Poyarekar
2236d3595a Don't duplicate mpone and mptwo 2013-02-26 15:15:27 +05:30
Siddhesh Poyarekar
2a983a2e0a Remove commented declarations 2013-02-25 18:11:14 +05:30
Siddhesh Poyarekar
e69804d14e Use long wherever possible in mpa.c
Using long throughout like powerpc does is beneficial since it reduces
the need to switch to 32-bit instructions.  It gives a very minor
performance improvement.
2013-02-25 16:43:03 +05:30
Siddhesh Poyarekar
2f22a1e8dd Format slowexp.c 2013-02-25 16:13:35 +05:30
Siddhesh Poyarekar
8930ddc705 Reformat slowpow.c 2013-02-25 16:08:38 +05:30
Siddhesh Poyarekar
dc60cb110b Remove commented code 2013-02-25 14:51:57 +05:30
Siddhesh Poyarekar
bab8a695ee Fix whitespace differences between generic and powerpc mpa.c 2013-02-21 14:31:42 +05:30
Thomas Schwinge
50022a93fc Respect the user's namespace in installed header files.
Fixup for commit c7b275d6b3.
2013-02-20 18:51:56 +01:00
Thomas Schwinge
c7b275d6b3 bits/nan.h: Change __attribute_used__ to __attribute__ ((unused)). 2013-02-20 16:49:58 +01:00
Siddhesh Poyarekar
20cd7fb3ae Copy comment about inner loop from powerpc mpa.c to the default one 2013-02-20 18:56:20 +05:30
Siddhesh Poyarekar
22af19f9fb Don't require LIM to determine loop end in __sqr 2013-02-16 00:15:57 +05:30
Siddhesh Poyarekar
4709fe7602 Use intermediate variable to compute exponent in __mul 2013-02-16 00:09:29 +05:30
Siddhesh Poyarekar
2d0e0f29f8 Fix determination of lower precision in __mul 2013-02-15 23:56:20 +05:30
Siddhesh Poyarekar
f414520d3c Use __sqr instead of __mul wherever possible 2013-02-14 11:39:14 +05:30
Siddhesh Poyarekar
d6752ccd69 New __sqr function as a faster special case of __mul 2013-02-14 10:31:09 +05:30
Siddhesh Poyarekar
c2af38aa76 Remove unnecessary factorial array
kf is n! at the end of the loop, so storing the values is unnecessary.
2013-02-13 17:19:07 +05:30
Siddhesh Poyarekar
4e92d59e26 Better exp polynomial
The lesser the __mul calls, the better it is for performance.
2013-02-13 14:49:50 +05:30
Siddhesh Poyarekar
909279a5cf Optimized mp multiplication
Don't bother multiplying zeroes since that only wastes cycles.
2013-02-13 14:16:23 +05:30
Siddhesh Poyarekar
bdf028142e Clean up add_magnitudes and sub_magnitudes 2013-02-13 13:55:29 +05:30
Roland McGrath
f1d70dad53 Remove lots of inline keywords. 2013-02-07 14:44:18 -08:00
Siddhesh Poyarekar
caa99d06e7 Simplify calculation of 2^-m in __mpexp 2013-01-18 11:18:13 +05:30
Siddhesh Poyarekar
d3b9ea6148 Remove unnecessary multiplication with RADIXI 2013-01-18 11:14:34 +05:30
Siddhesh Poyarekar
a897655d7b Fix header comment 2013-01-17 15:05:22 +05:30
Siddhesh Poyarekar
f93a8d1569 Consolidate constant defines into mpa.h 2013-01-16 16:06:48 +05:30
Siddhesh Poyarekar
dd930cc571 Fix the value of TWO 2013-01-16 14:53:53 +05:30
David S. Miller
438ebba294 Use libc_fe*() in 32-bit nearbyint()
* sysdeps/ieee754/dbl-64/s_nearbyint.c (__nearbyint): Use
	libc_feholdexcept and libc_fesetenv.
2013-01-15 20:32:13 -08:00
Siddhesh Poyarekar
2a91b5735a Minor tweak to mp multiplication
Add a local variable to remove extra copies to/from memory in the Z
array.
2013-01-14 21:53:48 +05:30
Siddhesh Poyarekar
1066a53440 Fix code formatting in mpa.c
This includes the overridden mpa.c in power4.
2013-01-14 21:53:43 +05:30
Andreas Schwab
557eead076 Revert "Use ieee754/dbl-64/wordsize-64 on powerpc64"
This reverts commit 7a9d2c3971.
2013-01-10 10:44:05 +01:00
Andreas Schwab
d1cdd05138 Revert "sysdeps/ieee754/ldbl-128ibm/e_expl.c"
This reverts commit 35eb879e3b.
2013-01-10 10:44:05 +01:00
Siddhesh Poyarekar
7490eb81ae Fix formatting in mpexp.c 2013-01-10 14:59:18 +05:30
Siddhesh Poyarekar
751b85f795 Make __mpexp_twomm1 an array of doubles
Cleanup to get rid of the `number` muck which is not necessary here.
2013-01-10 14:59:18 +05:30
Andreas Schwab
35eb879e3b sysdeps/ieee754/ldbl-128ibm/e_expl.c 2013-01-10 09:59:58 +01:00
Andreas Schwab
7a9d2c3971 Use ieee754/dbl-64/wordsize-64 on powerpc64
* sysdeps/ieee754/ldbl-opt/wordsize-64/s_ceil.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_finite.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_floor.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_frexp.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_isinf.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_isnan.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_llround.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_logb.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_lround.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_modf.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_nearbyint.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_remquo.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_rint.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_round.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_scalbln.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_scalbn.c: New file.
	* sysdeps/ieee754/ldbl-opt/wordsize-64/s_trunc.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/Implies: Add
	ieee754/ldbl-opt/wordsize-64.
	* sysdeps/powerpc/powerpc64/Implies: Add
	ieee754/dbl-64/wordsize-64.
2013-01-10 09:59:58 +01:00
Siddhesh Poyarekar
950c99ca90 Update comments in mpa.c
Fixed comment style and clearer wording in some cases.
2013-01-09 19:07:15 +05:30
Siddhesh Poyarekar
fffb407f46 Remove unused __cr and __cpymn 2013-01-04 22:52:12 +05:30
Siddhesh Poyarekar
6420d207bb Fix code formatting 2013-01-04 15:57:13 +05:30
Siddhesh Poyarekar
a9e48ab40e Clean up comment for MP_NO 2013-01-04 15:42:09 +05:30
Siddhesh Poyarekar
b783726459 Remove some commented code 2013-01-04 15:30:34 +05:30
Siddhesh Poyarekar
f8af25d218 Remove commented declarations 2013-01-04 15:10:00 +05:30
Siddhesh Poyarekar
302913e17e Remove argument variable name from function declaration 2013-01-04 14:54:46 +05:30
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Siddhesh Poyarekar
0f5477af5d Fix values in __mpexp_twomm1 2013-01-02 17:43:35 +05:30
Siddhesh Poyarekar
44e0d4c20c Split mantissa calculation loop and add branch prediction 2013-01-02 11:44:13 +05:30
Siddhesh Poyarekar
4d55b4e596 Add assert for potential access beyond array bounds in m1np
The mpexp code has an access into m1np:

  for (i=n-1; i>0; i--,n--) { if (m1np[i][p]+m2>0) break; }

which could break for p >= 18 or i >= 7.  Fortunately this code is
never called due to the way the exp function is implemented since
values having exponent less than -55 return 1.0.  Make sure that if it
gets called in future, it is trapped.
2013-01-02 11:33:11 +05:30
Siddhesh Poyarekar
da08f647d5 Move more constants into static variables
Code cleanup.
2013-01-02 10:07:50 +05:30
Joseph Myers
f4cf5f2d8b Add script to update copyright notices and reformat some to facilitate its use. 2013-01-01 16:29:10 +00:00
Siddhesh Poyarekar
18ea052c3e Favour normal numbers 2012-12-31 16:05:13 +05:30
Siddhesh Poyarekar
085ec079e3 Demystify the magic number 134217729.0
The number 134217729.0 gets used in various places in e_pow.c but
there is no explanation of what that number is.  Add that explanation.
2012-12-29 06:56:04 +05:30
Siddhesh Poyarekar
d63f73be34 Remove unnecessary variable mptwoim1
Code cleanup.
2012-12-28 19:02:01 +05:30
Siddhesh Poyarekar
6d9f97e1f2 Replace more constants with their values
Code cleanup.
2012-12-28 18:53:17 +05:30
Siddhesh Poyarekar
99136f8202 Replace constants with preprocessor defines
libm Code cleanup.
2012-12-28 09:40:10 +05:30
Siddhesh Poyarekar
31a7fe5ca9 Remove redundant __mpexp_nn
It's an array that stores integral float values of the offset.
2012-12-27 20:43:55 +05:30
Siddhesh Poyarekar
b76eb5f076 Move mpone out to a global const
Code cleanup.
2012-12-27 20:43:24 +05:30
Joseph Myers
66ca5a5b93 Include stdlib.h in sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c. 2012-12-05 20:03:45 +00:00
Joseph Myers
b37984ad36 Fix ldbl-128ibm "set but not used" warnings. 2012-12-04 21:19:17 +00:00
Joseph Myers
c33aa6e3e3 Fix "conflicting types for built-in function" warnings from nldbl-*.c. 2012-12-04 20:22:08 +00:00
Joseph Myers
b3b099af03 Fix powl inaccuracy for ldbl-128ibm (bug 14914). 2012-12-04 14:39:24 +00:00
Joseph Myers
9984dd0126 Use hex float 64-bit values in ldbl-96 asinl (bug 14803). 2012-11-28 21:46:16 +00:00
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
cf9a5d1861 Fix set-but-not-used warnings in ldbl-128 nearbyintl, rintl. 2012-11-20 14:26:07 +00:00
David S. Miller
6d33cc9d9b Fix spurious underflows in ldbl-128 atan implementation.
With help from Joseph Myers.
	* sysdeps/ieee754/ldbl-128/s_atanl.c (__atanl): Handle tiny and
	very large arguments properly.
	* math/libm-test.inc (atan_test): New tests.
	(atan2_test): New tests.
	* sysdeps/sparc/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Update.
2012-11-19 15:31:24 -08:00
David S. Miller
05b227bdae Correct tinyness handling in long-double and float y0/y1.
With help from Joseph Myers.
	* sysdeps/ieee754/flt-32/e_j0f.c (__ieee754_y0f): Adjust tinyness
	cutoff to 2**-13.
	* sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Adjust tinyness
	cutoff to 2**-25.
	* sysdeps/ieee754/ldbl-128/e_j0l.c (U0): New constant.
	( __ieee754_y0l): Avoid arithmetic underflow when 'x' is very
	small.
	* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_y1l): Likewise.
	* math/libm-test.inc (y0_test): New tests.
	(y1_test): New tests.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Update.
	* sysdeps/sparc/fpu/libm-test-ulps: Update.
2012-11-18 12:33:53 -08:00