summaryrefslogtreecommitdiffstats
path: root/lib/msun
Commit message (Collapse)AuthorAgeFilesLines
* General mdoc(7) and typo fixes.gjb2012-05-112-2/+2
| | | | | | PR: 167734 Submitted by: Nobuyuki Koganemaru (kogane!jp.freebsd.org) MFC after: 3 days
* I stopped using my middle name years ago.des2012-04-251-1/+1
|
* mdoc: fix column names, indentation, column separation within each row, andjoel2012-04-071-7/+7
| | | | | | | quotation. Also make sure we have the same amount of columns in each row as the number of columns we specify in the head arguments. Reviewed by: brueffer
* Fix a bug in remquo{,f,l}, in which the quotient didn't always have thedas2012-04-073-5/+8
| | | | | | | | | | | | | | | correct sign when the remainder was 0. Fix a separate bug in remquo alone, in which the remainder and quotient were both off by a bit in certain cases involving subnormal remainders. The bugs affected all platforms except amd64 and i386, on which the routines are implemented in assembly. PR: 166463 Submitted by: Ilya Burylov MFC after: 2 weeks
* Remove superfluous paragraph macro.joel2012-03-251-1/+0
|
* Fix a small nit noted by bde: exp_x should be of type float, not double.das2012-01-201-1/+1
|
* Add a change I missed in r230367 (don't inline arm's fenv.h functions).das2012-01-201-1/+0
|
* Don't inline fenv.h functions on arm for now. Inlining makes sense:das2012-01-203-13/+31
| | | | | | | | the function bodies require only 2 to 10 instructions. However, it leads to application binaries that refer to a private ABI, namely, the softfloat innards in libc. This could complicate future changes in the implementation of the floating-point emulation layer, so it seems best to have programs refer to the official fe* entry points in libm.
* Add an implementation of fenv.h intended for platforms that lack an FPU anddas2012-01-164-6/+205
| | | | | | | use softfloat. Thanks to Ian Lepore for testing and debugging this patch. The fenv regression tests pass (at least for Ian's arm chip) with this change.
* Convert files to UTF-8 and add some copyright markers where missing.uqs2012-01-071-1/+1
|
* Expose the unimplemented libm functions in the math.h header. This allows ↵theraven2011-11-121-13/+13
| | | | | | | C++'s <cmath> to work without the compiler complaining that the C++ versions are calling implicitly-declared functions. You will still get a linker error when they are called. OpenBSD 5.0 claims to fully implement the C99 <math.h> stuff, so might be worth investigating... Reviewed by: das Approved by: dim (mentor)
* Minor corrections and clarifications regarding exceptions.das2011-10-211-12/+23
|
* Fix a regression introduced in r226371: When the high part of x*ydas2011-10-212-6/+6
| | | | | exactly cancels with z, return the low part of x*y instead of discarding it.
* Fix a corner case: tan(large + Inf i) == NaN + NaN i.das2011-10-212-0/+10
|
* Improved handling of large x in ccosh{,f}():das2011-10-214-15/+83
| | | | | | | | | - Handle cases where exp(x) would overflow, but ccosh(x) ~= exp(x) / 2 shouldn't. - Use the ccosh(x) ~= exp(x) / 2 approximation to simplify the calculation when x is large. Similarly for csinh(). Also fixed the return value of csinh(-Inf +- 0i).
* Use __ldexp_exp() to simplify things and improve accuracy for x neardas2011-10-214-27/+10
| | | | the overflow threshold.
* The cexp() and {,c}{cos,sin}h functions all need to be able to computedas2011-10-216-33/+210
| | | | | | | | | | | exp(x) scaled down by some factor, and the challenge is doing this accurately when exp(x) would overflow. This change replaces all of the tricks we've been using with common __ldexp_exp() and __ldexp_cexp() routines that handle all the scaling. bde plans to improve on this further by moving the guts of exp() into k_exp.c and handling the scaling in a more direct manner. But the current approach is simple and adequate for now.
* Use STRICT_ASSIGN() to ensure that the compiler doesn't screw thingsdas2011-10-214-5/+13
| | | | | | up by storing x in a wider type than it's supposed to. Submitted by: bde
* Per IEEE754r, pow(1, y) is 1 even if y is NaN, and pow(-1, +-Inf) is 1.das2011-10-212-2/+8
| | | | MFC after: 2 weeks
* Bugfix: feenableexcept() and fedisableexcept() should just return thedas2011-10-212-8/+8
| | | | | | old exception mask, not mask | ~FE_ALL_EXCEPT. MFC after: 2 weeks
* It's no longer accurate to say that math.h "constitute[s] the C mathdas2011-10-171-1/+16
| | | | | | library," since complex.h, tgmath.h, and fenv.h are also part of the math library. Replace the outdated sentence with some references to the other parts.
* Add c{cos,sin,tan}{,h}{,f} functions. This is joint work withdas2011-10-1717-12/+871
| | | | bde and kargl.
* - change "is is" to "is" or "it is"eadler2011-10-161-1/+1
| | | | | | | | - change "the the" to "the" Approved by: lstewart Approved by: sahil (mentor) MFC after: 3 days
* Use #include "fenv.h" instead of #include <fenv.h>. This makes itdas2011-10-167-7/+7
| | | | | | more convenient to compile the math library by itself. Requested by: bde
* Fix some non-standard variable declarations.das2011-10-161-10/+10
|
* Optimize the case of pure imaginary arguments. Calls like this aredas2011-10-162-2/+9
| | | | | | common, e.g., in DFT implementations. Discussed with: bde, kargl
* Move the macros GET_LDBL_EXPSIGN() and SET_LDBL_EXPSIGN() intodas2011-10-162-15/+19
| | | | math_private.h, so they can be used elsewhere in the math library.
* Remove an unused variable.das2011-10-161-1/+1
|
* Remove some unnecessary initializations.das2011-10-156-6/+2
| | | | Obtained from: DragonFlyBSD
* Various changes to improve the accuracy and speed of log{2,10}{,f}.das2011-10-156-72/+143
| | | | | | | | | | | | | | | | | - Rename __kernel_log() to k_log1p(). - Move some of the work that was previously done in the kernel log into the callers. This enables further refactoring to improve accuracy or speed, although I don't recall the details. - Use extra precision when adding the final scaling term, which improves accuracy. - Describe and work around compiler problems that break some of the multiprecision calculations. A fix for a small bug is also included: - Add a special case for log*(1). This is needed to ensure that log*(1) == +0 instead of -0, even when the rounding mode is FE_DOWNWARD. Submitted by: bde
* Style fixes and updates to comments.das2011-10-154-32/+34
| | | | Submitted by: bde
* Don't define FP_FAST_FMA on sparc64; with the recent fixes, fma() isdas2011-10-151-5/+2
| | | | | | no longer "fast" on sparc64. (It really wasn't to begin with, since the old implementation was using long doubles, and long doubles are emulated in software on sparc64.)
* Add INSERT_WORD64 and EXTRACT_WORD64 macros for use in s_fma.c.das2011-10-151-0/+24
|
* Replace two lines accidentally removed in r226218. Thanks to bdedas2011-10-151-0/+3
| | | | for noticing this.
* Fix a double-rounding bug in fma{,f,l}. The bug would occur indas2011-10-153-125/+231
| | | | | | | | | | round-to-nearest mode when the result, rounded to twice machine precision, was exactly halfway between two machine-precision values. The essence of the fix is to simulate a "sticky bit" in the pathological cases, which is how hardware implementations break the ties. MFC after: 1 month
* Refactor this code by introducing separate functions to handle thedas2011-10-112-92/+164
| | | | | extra-precision add and multiply operations. This simplifies future work but shouldn't result in any functional change.
* Provide external definitions of all of the standardized functions indas2011-10-1022-91/+288
| | | | | | | | | | | | | | | | | fenv.h that are currently inlined. The definitions are provided in fenv.c via 'extern inline' declaractions. This assumes the compiler handles 'extern inline' as specified in C99, which has been true under FreeBSD since 8.0. The goal is to eventually remove the 'static' keyword from the inline definitions in fenv.h, so that non-inlined references all wind up pointing to the same external definition like they're supposed to. I am deferring the second step to provide a window where newly-compiled apps will still link against old math libraries. (This isn't supported, but there's no need to cause undue breakage.) Reviewed by: stefanf, bde
* In the libm access macros for the double type, z can sometimeskargl2011-06-191-2/+1
| | | | | | | | be used uninitialized. This can lead to spurious exceptions and bit clobbering. Submitted by: bde Approved by: das (mentor)
* Fix clang warnings.benl2011-06-181-1/+1
| | | | Approved by: philip (mentor)
* Clean up the unneeded cpp macro INLINE_REM_PIO2L.kargl2011-05-305-11/+2
| | | | | Reviewed by: das Approved by: das (mentor)
* Improve the accuracy from a max ULP of ~2000 to max ULP < 0.79kargl2011-04-295-98/+321
| | | | | | | | | | | | | | | | | | | | on i386-class hardware for sinl and cosl. The hand-rolled argument reduction have been replaced by e_rem_pio2l() implementations. To preserve history the following commands have been executed: svn cp src/e_rem_pio2.c ld80/e_rem_pio2l.h mv ${HOME}/bde/ld80/e_rem_pio2l.c ld80/e_rem_pio2l.h svn cp src/e_rem_pio2.c ld128/e_rem_pio2l.h mv ${HOME}/bde/ld128/e_rem_pio2l.c ld128/e_rem_pio2l.h The ld80 version has been tested by bde, das, and kargl over the last few years (bde, das) and few months (kargl). An older ld128 version was tested by das. The committed version has only been compiled tested via 'make universe'. Approved by: das (mentor) Obtained from: bde
* Take two. Add the missing file that should have been committedkargl2011-03-123-1/+159
| | | | | | | | | | | with r219571 and re-enable building of cbrtl. Implement the long double version for the cube root function, cbrtl. The algorithm uses Newton's iterations with a crude estimate of the cube root to converge to a result. Reviewed by: bde Approved by: das
* Temporary disable the building of cbrtl until Ikargl2011-03-122-2/+1
| | | | | | | can determine why svn will not allow one to commit a new file. Approved by: das (implicit)
* Implement the long double version for the cube root function, cbrtl.kargl2011-03-126-18/+32
| | | | | | | | The algorithm uses Newton's iterations with a crude estimate of the cube root to converge to a result. Reviewed by: bde Approved by: das
* Add cexp() to the complex(3) manpage. Thanks to bde for pointing outdas2011-03-071-14/+12
| | | | that I missed this.
* Remove part of an uncommitted change that snuck into the last commit.das2011-03-071-1/+0
|
* Convert log10f() to use __kernel_log(), which is more accurate and simpler.das2011-03-071-11/+19
|
* Convert log10() to use __kernel_log(), which is more accurate and simpler.das2011-03-071-38/+16
|
* Add cexp() and cexpf().das2011-03-075-2/+317
| | | | Reviewed by: bde (earlier version)
* Fix typos - remove duplicate "the".brucec2011-02-211-1/+1
| | | | | | PR: bin/154928 Submitted by: Eitan Adler <lists at eitanadler.com> MFC after: 3 days
OpenPOWER on IntegriCloud