#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
272845 |
|
09-Oct-2014 |
kargl |
The value small=2**-(p+3), where p is the precision, can be determine from lgamma(x) = -log(x) - log(1+x) + x*(1-g) + x**2*P(x) with g = 0.57... being the Euler constant and P(x) a polynomial. Substitution of small into the RHS shows that the last 3 terms are negligible in comparison to the leading term. The choice of 3 may be conservative.
The value large=2**(p+3) is detemined from Stirling's approximation lgamma(x) = x*(log(x)-1) - log(x)/2 + log(2*pi)/2 + P(1/x)/x Again, substitution of large into the RHS reveals the last 3 terms are negligible in comparison to the leading term.
Move the x=+-0 special case into the |x|<small block.
In the ld80 and ld128 implementaion, use fdlibm compatible comparisons involving ix, lx, and llx. This replaces several floating point comparisons (some involving fabsl()) and also fixes the special cases x=1 and x=2.
While here . Remove unnecessary parentheses. . Fix/improve comments due to the above changes. . Fix nearby whitespace.
* src/e_lgamma_r.c: . Sort declaration. . Remove unneeded explicit cast for type conversion. . Replace a double literal constant by an integer literal constant.
* src/e_lgammaf_r.c: . Sort declaration.
* ld128/e_lgammal_r.c: . Replace a long double literal constant by a double literal constant.
* ld80/e_lgammal_r.c: . Remove unused '#include float.h' . Replace a long double literal constant by a double literal constant.
Requested by: bde
|
#
272457 |
|
02-Oct-2014 |
kargl |
Remove whitespace and 2 blank lines.
|
#
272138 |
|
25-Sep-2014 |
kargl |
* Whitespace.
|
#
271719 |
|
17-Sep-2014 |
kargl |
For targets that have a signed zero, lgamma_r(-0, &signgamp) should set signgamp = -1.
Submitted by: enh at google dot com (e_lgamma[f]_r.c)
|
#
271651 |
|
15-Sep-2014 |
kargl |
* Makefile: . Hook e_lgammal[_r].c to the build. . Create man page links for lgammal[-r].3.
* Symbol.map: . Sort lgammal to its rightful place. . Add FBSD_1.4 section for the new lgamal_r symbol.
* ld128/e_lgammal_r.c: . 128-bit implementataion of lgammal_r().
* ld80/e_lgammal_r.c: . Intel 80-bit format implementation of lgammal_r().
* src/e_lgamma.c: . Expose lgammal as a weak reference to lgamma for platforms where long double is mapped to double.
* src/e_lgamma_r.c: . Use integer literal constants instead of real literal constants. Let compiler(s) do the job of conversion to the appropriate type. . Expose lgammal_r as a weak reference to lgamma_r for platforms where long double is mapped to double.
* src/e_lgammaf_r.c: . Fixed the Cygnus Support conversion of e_lgamma_r.c to float. This includes the generation of new polynomial and rational approximations with fewer terms. For each approximation, include a comment on an estimate of the accuracy over the relevant domain. . Use integer literal constants instead of real literal constants. Let compiler(s) do the job of conversion to the appropriate type. This allows the removal of several explicit casts of double values to float.
* src/e_lgammal.c: . Wrapper for lgammal() about lgammal_r().
* src/imprecise.c: . Remove the lgamma.
* src/math.h: . Add a prototype for lgammal_r().
* man/lgamma.3: . Document the new functions.
Reviewed by: bde
|
#
271147 |
|
04-Sep-2014 |
kargl |
Remove an initialized, but otherwise, unused variable.
|
#
270947 |
|
01-Sep-2014 |
kargl |
According to the ISO C standard, lgamma(-integer) returns inf and raises the divided-by-zero exception. Compilers constant fold one/zero to inf but do not raise the exception. Introduce a volatile vzero to prevent the constant folding.
Move the declaration of zero into the main declaration block.
While here, fix a nearby disordering of 'lx,ix'
Discussed with: bde
|
#
270932 |
|
01-Sep-2014 |
kargl |
Fix a tab that somehow became 8 spaces.
Remove parentheses in a return statement to be consistent with the rest of the file.
Rename sin_pi() in the float version to sin_pif().
Remove large comment that precedes sin_pif(). The comment duplicates a comment in e_lgamma_r.c where the algorithm is documented.
Requested by: bde
|
#
270893 |
|
31-Aug-2014 |
kargl |
Compute sin(pi*x) without actually doing the pi*x multiplication. sin_pi(x) is only called for x < 0 and |x| < 2**(p-1) where p is the precision of x. The new argument reduction is an optimization compared to the old code, and it removes a chunk of dead code. Accuracy tests in the intervals (-21,-20), (-20,-19), ... (-1,0) show no differences between the old and new code.
Obtained from: bde
|
#
226380 |
|
15-Oct-2011 |
das |
Remove some unnecessary initializations.
Obtained from: DragonFlyBSD
|
#
176451 |
|
22-Feb-2008 |
das |
s/rcsid/__FBSDID/
|
#
169220 |
|
02-May-2007 |
bde |
Don't assume that int is signed 32-bits in one place. Keep assuming that ints have >= 31 value bits elsewhere. s/int/int32_t/ seems to have been done too globally for all other files in msun/src before msun/ was imported into FreeBSD.
Minor fixes in comments.
e_lgamma_r.c: Describe special cases in more detail: - exception for lgamma(0) and lgamma(neg.integer) - lgamma(-Inf) = Inf. This is wrong but is required by C99 Annex F. I hope to change this.
|
#
141296 |
|
04-Feb-2005 |
das |
Reduce diffs against vendor source (Sun fdlibm 5.3).
|
#
97413 |
|
28-May-2002 |
alfred |
Fix formatting, this is hard to explain, so I'll show one example.
- float ynf(int n, float x) /* wrapper ynf */ +float +ynf(int n, float x) /* wrapper ynf */
This is because the __STDC__ stuff was indented.
Reviewed by: md5
|
#
97409 |
|
28-May-2002 |
alfred |
Assume __STDC__, remove non-__STDC__ code.
Reviewed by: md5
|
#
50476 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
22993 |
|
22-Feb-1997 |
peter |
Revert $FreeBSD$ to $Id$
|
#
21673 |
|
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
8870 |
|
30-May-1995 |
rgrimes |
Remove trailing whitespace.
|
#
2117 |
|
19-Aug-1994 |
jkh |
This commit was generated by cvs2svn to compensate for changes in r2116, which included commits to RCS files with non-trunk default branches.
|
#
2116 |
|
19-Aug-1994 |
jkh |
J.T. Conklin's latest version of the Sun math library.
-- Begin comments from J.T. Conklin: The most significant improvement is the addition of "float" versions of the math functions that take float arguments, return floats, and do all operations in floating point. This doesn't help (performance) much on the i386, but they are still nice to have.
The float versions were orginally done by Cygnus' Ian Taylor when fdlibm was integrated into the libm we support for embedded systems. I gave Ian a copy of my libm as a starting point since I had already fixed a lot of bugs & problems in Sun's original code. After he was done, I cleaned it up a bit and integrated the changes back into my libm. -- End comments
Reviewed by: jkh Submitted by: jtc
|