freebsd-dev/lib/msun/src
Bruce Evans d79d610d9c Fixed the threshold for using the simple Taylor approximation.
In e_log.c, there was just a off-by-1 (1 ulp) error in the comment
about the threshold.  The precision of the threshold is unimportant,
but the magic numbers in the code are easier to understand when the
threshold is described precisely.

In e_logf.c, mistranslation of the magic numbers gave an off-by-1
(1 * 16 ulps) error in the intended negative bound for the threshold
and an off-by-7 (7 * 16 ulps) error in the intended positive bound for
the threshold, and the intended bounds were not translated from the
double precision bounds so they were unnecessarily small by a factor
of about 2048.

The optimization of using the simple Taylor approximation for args
near a power of 2 is dubious since it only applies to a relatively
small proportion of args, but if it is done then doing it 2048 times
as often _may_ be more efficient.  (My benchmarks show unexplained
dependencies on the data that increase with further optimizations
in this area.)
2006-07-07 04:33:08 +00:00
..
e_acos.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_acosf.c
e_acosh.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_acoshf.c
e_asin.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_asinf.c Fixed the approximation to pio4. pio4_hi must be pio2_hi/2 since it 2005-12-04 13:52:46 +00:00
e_atan2.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_atan2f.c Fixed lots of 1 ULP errors caused by a broken approximation for pi/2. 2004-06-02 17:09:05 +00:00
e_atanh.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_atanhf.c
e_cosh.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_coshf.c Fixed some magic numbers. 2005-11-13 00:08:23 +00:00
e_exp.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_expf.c Fixed the hi+lo approximation to log(2). The normal 17+24 bit decomposition 2005-11-30 04:56:49 +00:00
e_fmod.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_fmodf.c
e_gamma_r.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_gamma.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_gammaf_r.c
e_gammaf.c
e_hypot.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_hypotf.c
e_j0.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_j0f.c
e_j1.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_j1f.c
e_jn.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_jnf.c
e_lgamma_r.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_lgamma.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_lgammaf_r.c Fixed about 50 million errors of infinity ulps and about 3 million errors 2005-11-28 08:32:15 +00:00
e_lgammaf.c
e_log10.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_log10f.c
e_log.c Fixed the threshold for using the simple Taylor approximation. 2006-07-07 04:33:08 +00:00
e_logf.c Fixed the threshold for using the simple Taylor approximation. 2006-07-07 04:33:08 +00:00
e_pow.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_powf.c Merged from double precision case (e_pow.c 1.10: sign fixes). 2004-06-01 19:33:30 +00:00
e_rem_pio2.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_rem_pio2f.c Simplified setiing up args for __kernel_rem_pio2(). We already have x 2005-11-23 03:03:09 +00:00
e_remainder.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_remainderf.c
e_scalb.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_scalbf.c Backed out rev.1.10. It tried to implement ldexpf() as a weak reference 2006-07-05 02:16:29 +00:00
e_sinh.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_sinhf.c Fixed some magic numbers. 2005-11-13 00:41:46 +00:00
e_sqrt.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
e_sqrtf.c
k_cos.c Use a better algorithm for reducing the error in __kernel_cos[f](). 2005-10-26 12:36:18 +00:00
k_cosf.c Rearranged the polynomial evaluation to reduce dependencies, as in 2005-11-30 11:51:17 +00:00
k_rem_pio2.c Reduce diffs against vendor source (Sun fdlibm 5.3). 2005-02-04 18:26:06 +00:00
k_rem_pio2f.c Fixed range reduction for large multiples of pi/2 on systems with 2005-10-11 07:56:05 +00:00
k_sin.c Updated the comment about the optimization for tiny x (the previous 2005-11-02 13:06:49 +00:00
k_sinf.c Rearranged the polynomial evaluation to reduce dependencies, as in 2005-11-30 11:51:17 +00:00
k_tan.c Moved the optimization for tiny x from __kernel_tan[f](x) to tan[f](x) 2005-11-02 14:01:45 +00:00
k_tanf.c Rearranged the polynomial evaluation some more to reduce dependencies. 2005-11-28 11:46:20 +00:00
math_private.h Use only double precision for "kernel" cosf and sinf (except for 2005-11-28 04:58:57 +00:00
math.h Implement truncl() based on floorl(). 2005-04-16 21:12:47 +00:00
s_asinh.c
s_asinhf.c
s_atan.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_atanf.c
s_cbrt.c Extract the high and low words together. With gcc-3.4 on uniformly 2005-12-20 01:21:30 +00:00
s_cbrtf.c Oops, on amd64 (and probably on all non-i386 systems), the previous 2006-01-05 09:18:48 +00:00
s_ceil.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_ceilf.c
s_ceill.c Revert the last change, the conversion from long double to double can raise 2005-04-28 19:45:55 +00:00
s_cimag.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_cimagf.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_cimagl.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_conj.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_conjf.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_conjl.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_copysign.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_copysignf.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_copysignl.c Add an implementation of copysignl(), a long double version of copysign(). 2004-05-07 18:56:31 +00:00
s_cos.c Moved the optimization for tiny x from __kernel_{cos,sin}[f](x) to 2005-10-24 14:08:36 +00:00
s_cosf.c Fixed cosf(x) when x is a "negative" NaNs. I broke this in rev.1.10. 2005-11-30 06:47:18 +00:00
s_creal.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_crealf.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_creall.c Add implementations for cimag{,f,l}, creal{,f,l} and conj{,f,l}. They are 2004-05-30 09:21:56 +00:00
s_erf.c
s_erff.c
s_exp2.c Implement exp2() and exp2f(). 2005-04-05 02:57:15 +00:00
s_exp2f.c Implement exp2() and exp2f(). 2005-04-05 02:57:15 +00:00
s_expm1.c
s_expm1f.c
s_fabs.c
s_fabsf.c
s_fabsl.c Better safe than clever. 2003-10-25 19:53:28 +00:00
s_fdim.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_finite.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_finitef.c
s_floor.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_floorf.c
s_floorl.c Revert the last change, the conversion from long double to double can raise 2005-04-28 19:45:55 +00:00
s_fma.c Fix the double rounding problem with subnormals, and 2005-03-18 02:27:59 +00:00
s_fmaf.c Add fma() and fmaf(), which implement a fused multiply-add operation. 2005-01-22 09:53:18 +00:00
s_fmal.c Fix the double rounding problem with subnormals, and 2005-03-18 02:27:59 +00:00
s_fmax.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_fmaxf.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_fmaxl.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_fmin.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_fminf.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_fminl.c Implement and document fdim{,f,l}, fmax{,f,l}, and fmin{,f,l}. 2004-06-30 07:04:01 +00:00
s_frexp.c Replace strong references with weak references. There's no 2005-03-07 21:27:37 +00:00
s_frexpf.c
s_frexpl.c Implement frexpl. 2005-03-07 04:54:51 +00:00
s_ilogb.c Use the FP_ILOG macros from <math.h> rather than hardcoded return values. 2004-10-09 17:14:28 +00:00
s_ilogbf.c Use the FP_ILOG macros from <math.h> rather than hardcoded return values. 2004-10-09 17:14:28 +00:00
s_ilogbl.c Add and document ilogbl(), a long double version of ilogb(). 2004-10-11 18:13:52 +00:00
s_isfinite.c Implement the classification macros isfinite(), isinf(), isnan(), and 2004-07-09 03:32:40 +00:00
s_isnan.c Replace s_isnan.c and s_isnanf.c with the more compact s_isnan.c from 2004-08-05 01:46:11 +00:00
s_isnormal.c Implement the classification macros isfinite(), isinf(), isnan(), and 2004-07-09 03:32:40 +00:00
s_llrint.c Add MI implementations of [l]lrint[f]() and [l]lround[f](). 2005-01-11 23:12:55 +00:00
s_llrintf.c Add MI implementations of [l]lrint[f]() and [l]lround[f](). 2005-01-11 23:12:55 +00:00
s_llround.c These files should include s_lround.c instead of s_lrint.c. 2005-04-08 00:52:27 +00:00
s_llroundf.c These files should include s_lround.c instead of s_lrint.c. 2005-04-08 00:52:27 +00:00
s_llroundl.c Add roundl(), lroundl(), and llroundl(). 2005-04-08 01:24:08 +00:00
s_log1p.c For log1pf(), fixed the approximations to sqrt(2), sqrt(2)-1 and 2005-12-04 12:30:44 +00:00
s_log1pf.c For log1pf(), fixed the approximations to sqrt(2), sqrt(2)-1 and 2005-12-04 12:30:44 +00:00
s_logb.c Fixed fdlibm[+cygnus] logbf() and logb() on denormals. Adjustment 2005-12-03 11:57:19 +00:00
s_logbf.c Fixed fdlibm[+cygnus] logbf() and logb() on denormals. Adjustment 2005-12-03 11:57:19 +00:00
s_lrint.c Add MI implementations of [l]lrint[f]() and [l]lround[f](). 2005-01-11 23:12:55 +00:00
s_lrintf.c Add MI implementations of [l]lrint[f]() and [l]lround[f](). 2005-01-11 23:12:55 +00:00
s_lround.c Fix a (coincidentally harmless) bug. 2005-04-08 00:52:16 +00:00
s_lroundf.c These files should include s_lround.c instead of s_lrint.c. 2005-04-08 00:52:27 +00:00
s_lroundl.c Add roundl(), lroundl(), and llroundl(). 2005-04-08 01:24:08 +00:00
s_modf.c
s_modff.c
s_nearbyint.c Add C99's nearbyint{,f}() functions as wrappers around rint(). 2004-07-06 04:46:08 +00:00
s_nextafter.c Replace strong references with weak references. There's no 2005-03-07 21:27:37 +00:00
s_nextafterf.c - Try harder to trick gcc into not optimizing away statements 2005-03-07 04:55:58 +00:00
s_nextafterl.c Implement nexttoward and nextafterl; the latter is also known as 2005-03-07 04:56:46 +00:00
s_nexttoward.c Implement nexttoward and nextafterl; the latter is also known as 2005-03-07 04:56:46 +00:00
s_nexttowardf.c Implement nexttowardf. This is used on both platforms with 11-bit 2005-03-07 04:57:38 +00:00
s_remquo.c Implement and document remquo() and remquof(). 2005-03-25 04:40:44 +00:00
s_remquof.c Implement and document remquo() and remquof(). 2005-03-25 04:40:44 +00:00
s_rint.c Simplified the fix in rev.1.3. Instead of using long double for 2005-12-03 07:38:35 +00:00
s_rintf.c Restored removal of the special handling needed for a result of +-0. 2005-12-03 09:00:29 +00:00
s_round.c Fixed roundf(). The following cases never worked in FreeBSD: 2005-12-02 13:45:06 +00:00
s_roundf.c Fixed roundf(). The following cases never worked in FreeBSD: 2005-12-02 13:45:06 +00:00
s_roundl.c Fixed roundf(). The following cases never worked in FreeBSD: 2005-12-02 13:45:06 +00:00
s_scalbln.c - Implement scalblnl. 2005-03-07 04:57:50 +00:00
s_scalbn.c Replace strong references with weak references. There's no 2005-03-07 21:27:37 +00:00
s_scalbnf.c Alias scalbnf as ldexpf. The two are identical in binary 2005-03-07 04:52:43 +00:00
s_scalbnl.c Add scalbnl, also known as as ldexpl. 2005-03-07 04:52:58 +00:00
s_signbit.c Fix two bugs in the signbit() macro, which was implemented last year: 2004-07-19 08:16:10 +00:00
s_signgam.c
s_significand.c Only provide one copy of the math functions. If we provide a MD function, 2003-07-23 04:53:47 +00:00
s_significandf.c
s_sin.c Moved the optimization for tiny x from __kernel_{cos,sin}[f](x) to 2005-10-24 14:08:36 +00:00
s_sinf.c Exploit skew-symmetry to avoid an operation: -sin(x-A) = sin(A-x). This 2005-11-28 06:15:10 +00:00
s_tan.c Moved the optimization for tiny x from __kernel_tan[f](x) to tan[f](x) 2005-11-02 14:01:45 +00:00
s_tanf.c Changed spelling of the request-to-inline macro name to match the change 2005-11-28 05:35:32 +00:00
s_tanh.c Fixed tanh(-0.0) on ia64 and optimizeed tanh(x) for 2**-55 <= |x| < 2006-07-05 22:59:33 +00:00
s_tanhf.c Fixed some magic numbers. 2005-12-11 11:40:55 +00:00
s_trunc.c Implement trunc() and truncf(). 2004-06-20 09:25:43 +00:00
s_truncf.c Implement trunc() and truncf(). 2004-06-20 09:25:43 +00:00
s_truncl.c Revert the last change, the conversion from long double to double can raise 2005-04-28 19:45:55 +00:00
w_cabs.c
w_cabsf.c
w_drem.c
w_dremf.c Work around known GCC 3.4.x problem and use ANSI prototype for dremf(). 2004-07-28 05:53:18 +00:00