freebsd-skq/lib/msun/src
Steve Kargl 3ffff4bad5 ld80 and ld128 implementations of expm1l(). This code started life
as a fairly faithful implementation of the algorithm found in

PTP Tang, "Table-driven implementation of the Expm1 function
in IEEE floating-point arithmetic," ACM Trans. Math. Soft., 18,
211-222 (1992).

Over the last 18-24 months, the code has under gone significant
optimization and testing.

Reviewed by:	bde
Obtained from:	bde (most of the optimizations)
2013-06-03 19:51:32 +00:00
..
catrig.c I'm happy to finally commit stephen@'s implementations of cacos, 2013-05-30 04:49:26 +00:00
catrigf.c I'm happy to finally commit stephen@'s implementations of cacos, 2013-05-30 04:49:26 +00:00
e_acos.c Add implementations of acosl(), asinl(), atanl(), atan2l(), 2008-07-31 22:41:26 +00:00
e_acosf.c Minor improvements: 2008-08-03 17:39:54 +00:00
e_acosh.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_acoshf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_acosl.c On i386, gcc truncates long double constants to double precision 2008-08-02 03:56:22 +00:00
e_asin.c For small arguments, these functions use simple approximations, 2011-02-10 07:37:50 +00:00
e_asinf.c Remove some unused variables. 2008-08-08 00:21:27 +00:00
e_asinl.c Fix some style bogosity from fdlibm. 2008-08-03 17:49:05 +00:00
e_atan2.c A few minor corrections, including some from bde: 2008-08-02 19:17:00 +00:00
e_atan2f.c Minor improvements: 2008-08-03 17:39:54 +00:00
e_atan2l.c A few minor corrections, including some from bde: 2008-08-02 19:17:00 +00:00
e_atanh.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_atanhf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_cosh.c Use __ldexp_exp() to simplify things and improve accuracy for x near 2011-10-21 06:28:47 +00:00
e_coshf.c Use __ldexp_exp() to simplify things and improve accuracy for x near 2011-10-21 06:28:47 +00:00
e_exp.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
e_expf.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
e_fmod.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_fmodf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_fmodl.c The high part of the mantissa is 64 bits on sparc64. 2008-07-31 20:09:47 +00:00
e_gamma_r.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_gamma.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_gammaf_r.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_gammaf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_hypot.c Remove some unnecessary initializations. 2011-10-15 07:00:28 +00:00
e_hypotf.c Remove some unnecessary initializations. 2011-10-15 07:00:28 +00:00
e_hypotl.c Move the macros GET_LDBL_EXPSIGN() and SET_LDBL_EXPSIGN() into 2011-10-16 05:36:39 +00:00
e_j0.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_j0f.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_j1.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_j1f.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_jn.c Fix bug in jn(3) and jnf(3) that led to -inf results 2010-11-13 10:54:10 +00:00
e_jnf.c Fix bug in jn(3) and jnf(3) that led to -inf results 2010-11-13 10:54:10 +00:00
e_lgamma_r.c Remove some unnecessary initializations. 2011-10-15 07:00:28 +00:00
e_lgamma.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_lgammaf_r.c Remove some unnecessary initializations. 2011-10-15 07:00:28 +00:00
e_lgammaf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_log2.c Add logl, log2l, log10l, and log1pl. 2013-06-03 09:14:31 +00:00
e_log2f.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
e_log10.c Add logl, log2l, log10l, and log1pl. 2013-06-03 09:14:31 +00:00
e_log10f.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
e_log.c Add logl, log2l, log10l, and log1pl. 2013-06-03 09:14:31 +00:00
e_logf.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
e_pow.c Per IEEE754r, pow(1, y) is 1 even if y is NaN, and pow(-1, +-Inf) is 1. 2011-10-21 06:26:07 +00:00
e_powf.c Per IEEE754r, pow(1, y) is 1 even if y is NaN, and pow(-1, +-Inf) is 1. 2011-10-21 06:26:07 +00:00
e_rem_pio2.c Add __always_inline to __ieee754_rem_pio2() and __ieee754_rem_pio2f(), 2012-08-11 15:47:22 +00:00
e_rem_pio2f.c Add __always_inline to __ieee754_rem_pio2() and __ieee754_rem_pio2f(), 2012-08-11 15:47:22 +00:00
e_remainder.c Implement remainderl() as a wrapper around remquol(). The extra work 2008-03-30 20:47:42 +00:00
e_remainderf.c Fix remainder() and remainderf() in round-towards-minus-infinity mode 2008-02-12 17:11:36 +00:00
e_remainderl.c Implement remainderl() as a wrapper around remquol(). The extra work 2008-03-30 20:47:42 +00:00
e_scalb.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_scalbf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
e_sinh.c Use __ldexp_exp() to simplify things and improve accuracy for x near 2011-10-21 06:28:47 +00:00
e_sinhf.c Use __ldexp_exp() to simplify things and improve accuracy for x near 2011-10-21 06:28:47 +00:00
e_sqrt.c MI implementation of sqrtl(). This is very slow and should 2008-03-02 01:47:58 +00:00
e_sqrtf.c
e_sqrtl.c MI implementation of sqrtl(). This is very slow and should 2008-03-02 01:47:58 +00:00
fenv-softfloat.h Add an implementation of fenv.h intended for platforms that lack an FPU and 2012-01-16 04:09:17 +00:00
k_cos.c Rearrange the polynomial evaluation for better parallelism. This 2008-02-19 12:54:14 +00:00
k_cosf.c Change a few extern inline functions in libm to static inline, since 2012-08-11 11:13:48 +00:00
k_exp.c The cexp() and {,c}{cos,sin}h functions all need to be able to compute 2011-10-21 06:27:56 +00:00
k_expf.c Fix a small nit noted by bde: exp_x should be of type float, not double. 2012-01-20 07:02:42 +00:00
k_log.h Various changes to improve the accuracy and speed of log{2,10}{,f}. 2011-10-15 05:23:28 +00:00
k_logf.h Various changes to improve the accuracy and speed of log{2,10}{,f}. 2011-10-15 05:23:28 +00:00
k_rem_pio2.c Fix typo; s/ouput/output 2012-11-07 07:00:59 +00:00
k_sin.c Rearrange the polynomial evaluation for better parallelism. This 2008-02-19 12:54:14 +00:00
k_sinf.c Change a few extern inline functions in libm to static inline, since 2012-08-11 11:13:48 +00:00
k_tan.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
k_tanf.c Change a few extern inline functions in libm to static inline, since 2012-08-11 11:13:48 +00:00
math_private.h Add logl, log2l, log10l, and log1pl. 2013-06-03 09:14:31 +00:00
math.h ld80 and ld128 implementations of expm1l(). This code started life 2013-06-03 19:51:32 +00:00
s_asinh.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_asinhf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_atan.c For small arguments, these functions use simple approximations, 2011-02-10 07:37:50 +00:00
s_atanf.c Fix some problems with asinf(), acosf(), atanf(), and atan2f(): 2008-08-01 01:24:25 +00:00
s_atanl.c Add implementations of acosl(), asinl(), atanl(), atan2l(), 2008-07-31 22:41:26 +00:00
s_carg.c Implement carg(3) and cargf(3). 2007-12-12 23:43:51 +00:00
s_cargf.c Implement carg(3) and cargf(3). 2007-12-12 23:43:51 +00:00
s_cargl.c Add implementations of acosl(), asinl(), atanl(), atan2l(), 2008-07-31 22:41:26 +00:00
s_cbrt.c Implement the long double version for the cube root function, cbrtl. 2011-03-12 16:50:39 +00:00
s_cbrtf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_cbrtl.c ieeefp.h is only needed on i386 class hardware. 2012-07-30 21:58:28 +00:00
s_ccosh.c Improved handling of large x in ccosh{,f}(): 2011-10-21 06:29:32 +00:00
s_ccoshf.c Improved handling of large x in ccosh{,f}(): 2011-10-21 06:29:32 +00:00
s_ceil.c Sigh, the weak reference for ceill(), floorl() and truncl() was in 2008-02-15 07:01:40 +00:00
s_ceilf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_ceill.c Oops, the weak reference for ceill(), floorl() and truncl() was in the 2008-02-14 15:10:34 +00:00
s_cexp.c The cexp() and {,c}{cos,sin}h functions all need to be able to compute 2011-10-21 06:27:56 +00:00
s_cexpf.c The cexp() and {,c}{cos,sin}h functions all need to be able to compute 2011-10-21 06:27:56 +00:00
s_cimag.c Eliminate __real__ and __imag__ gccisms. 2009-03-14 18:24:15 +00:00
s_cimagf.c Eliminate __real__ and __imag__ gccisms. 2009-03-14 18:24:15 +00:00
s_cimagl.c Eliminate __real__ and __imag__ gccisms. 2009-03-14 18:24:15 +00:00
s_conj.c Use cpack() and the gcc extension __imag__ to implement cimag() and 2008-08-07 14:39:56 +00:00
s_conjf.c Use cpack() and the gcc extension __imag__ to implement cimag() and 2008-08-07 14:39:56 +00:00
s_conjl.c Use cpack() and the gcc extension __imag__ to implement cimag() and 2008-08-07 14:39:56 +00:00
s_copysign.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_copysignf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_copysignl.c
s_cos.c For small arguments, these functions use simple approximations, 2011-02-10 07:37:50 +00:00
s_cosf.c Inline __ieee754__rem_pio2f(). On amd64 (A64) and i386 (A64), this 2008-02-25 22:19:17 +00:00
s_cosl.c * Use ENTERI() and RETURNI() to toggle the rounding precision if 2012-09-22 15:38:29 +00:00
s_cproj.c Implement cproj{,f,l}(). 2008-08-07 15:07:48 +00:00
s_cprojf.c Implement cproj{,f,l}(). 2008-08-07 15:07:48 +00:00
s_cprojl.c Implement cproj{,f,l}(). 2008-08-07 15:07:48 +00:00
s_creal.c
s_crealf.c
s_creall.c
s_csinh.c Improved handling of large x in ccosh{,f}(): 2011-10-21 06:29:32 +00:00
s_csinhf.c Improved handling of large x in ccosh{,f}(): 2011-10-21 06:29:32 +00:00
s_csqrt.c In the line 2008-08-08 00:15:16 +00:00
s_csqrtf.c In the line 2008-08-08 00:15:16 +00:00
s_csqrtl.c In the line 2008-08-08 00:15:16 +00:00
s_ctanh.c Fix a corner case: tan(large + Inf i) == NaN + NaN i. 2011-10-21 06:30:16 +00:00
s_ctanhf.c Fix a corner case: tan(large + Inf i) == NaN + NaN i. 2011-10-21 06:30:16 +00:00
s_erf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_erff.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_exp2.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_exp2f.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_expm1.c ld80 and ld128 implementations of expm1l(). This code started life 2013-06-03 19:51:32 +00:00
s_expm1f.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_fabs.c
s_fabsf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_fabsl.c I stopped using my middle name years ago. 2012-04-25 18:07:35 +00:00
s_fdim.c
s_finite.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_finitef.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_floor.c Sigh, the weak reference for ceill(), floorl() and truncl() was in 2008-02-15 07:01:40 +00:00
s_floorf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_floorl.c Oops, the weak reference for ceill(), floorl() and truncl() was in the 2008-02-14 15:10:34 +00:00
s_fma.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_fmaf.c Fix a double-rounding bug in fma{,f,l}. The bug would occur in 2011-10-15 04:16:58 +00:00
s_fmal.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_fmax.c
s_fmaxf.c
s_fmaxl.c
s_fmin.c
s_fminf.c
s_fminl.c
s_frexp.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_frexpf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_frexpl.c
s_ilogb.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_ilogbf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_ilogbl.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_isfinite.c
s_isnan.c Only define isnan, isnanf, __isnan and __isnanf in libc.so, not in 2012-11-10 21:22:10 +00:00
s_isnormal.c
s_llrint.c
s_llrintf.c
s_llrintl.c Implement rintl(), nearbyintl(), lrintl(), and llrintl(). 2008-01-14 02:12:07 +00:00
s_llround.c
s_llroundf.c
s_llroundl.c
s_log1p.c Add logl, log2l, log10l, and log1pl. 2013-06-03 09:14:31 +00:00
s_log1pf.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_logb.c Oops, fix the fix in rev.1.10. logb() and logbf() were broken on 2008-02-08 01:22:13 +00:00
s_logbf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_logbl.c Add logbl(3) to libm. 2007-12-17 03:53:38 +00:00
s_lrint.c
s_lrintf.c
s_lrintl.c Implement rintl(), nearbyintl(), lrintl(), and llrintl(). 2008-01-14 02:12:07 +00:00
s_lround.c
s_lroundf.c
s_lroundl.c
s_modf.c
s_modff.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_modfl.c
s_nan.c Since nan() is supposed to work the same as strtod("nan(...)", NULL), 2007-12-18 23:46:32 +00:00
s_nearbyint.c Fix some regressions caused by the switch from gcc to clang. The fixes 2013-05-27 08:50:10 +00:00
s_nextafter.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_nextafterf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_nextafterl.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_nexttoward.c Fix a bug where the wrong argument was passed to INSERT_WORDS(). 2011-02-10 07:38:13 +00:00
s_nexttowardf.c Fix a bug where the wrong argument was passed to SET_FLOAT_WORD(). 2011-02-10 07:38:38 +00:00
s_remquo.c Fix a bug in remquo{,f,l}, in which the quotient didn't always have the 2012-04-07 03:59:12 +00:00
s_remquof.c Fix a bug in remquo{,f,l}, in which the quotient didn't always have the 2012-04-07 03:59:12 +00:00
s_remquol.c Fix a bug in remquo{,f,l}, in which the quotient didn't always have the 2012-04-07 03:59:12 +00:00
s_rint.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_rintf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_rintl.c Optimize the conversion to bits a little (by about 11 cycles or 16% 2008-02-22 11:59:05 +00:00
s_round.c
s_roundf.c
s_roundl.c
s_scalbln.c
s_scalbn.c
s_scalbnf.c
s_scalbnl.c
s_signbit.c
s_signgam.c
s_significand.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_significandf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_sin.c For small arguments, these functions use simple approximations, 2011-02-10 07:37:50 +00:00
s_sinf.c Inline __ieee754__rem_pio2f(). On amd64 (A64) and i386 (A64), this 2008-02-25 22:19:17 +00:00
s_sinl.c * Use ENTERI() and RETURNI() to toggle the rounding precision if 2012-09-22 15:38:29 +00:00
s_tan.c For small arguments, these functions use simple approximations, 2011-02-10 07:37:50 +00:00
s_tanf.c Inline __ieee754__rem_pio2f(). On amd64 (A64) and i386 (A64), this 2008-02-25 22:19:17 +00:00
s_tanh.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_tanhf.c s/rcsid/__FBSDID/ 2008-02-22 02:30:36 +00:00
s_tanl.c * Use ENTERI() and RETURNI() to toggle the rounding precision if 2012-09-22 15:38:29 +00:00
s_tgammaf.c Add tgammaf() as a simple wrapper around tgamma(). 2008-02-18 17:27:11 +00:00
s_trunc.c Remove an unused variable. 2008-02-22 02:27:34 +00:00
s_truncf.c
s_truncl.c Oops, the weak reference for ceill(), floorl() and truncl() was in the 2008-02-14 15:10:34 +00:00
w_cabs.c Alias hypotl() and cabsl() for platforms where long double is the same 2008-03-30 20:03:06 +00:00
w_cabsf.c
w_cabsl.c Implement cabsl() in terms of hypotl(). 2008-03-30 20:02:03 +00:00
w_drem.c
w_dremf.c