summaryrefslogtreecommitdiffstats
path: root/lib/msun
Commit message (Collapse)AuthorAgeFilesLines
* Only build the vfp/softfp switching code on armv6 as we don't support vfpandrew2014-03-161-1/+5
| | | | | on anything earlier than this. This should fix the armeb and arm builds when using gcc.
* Build fenv-vfp.c with the softfp float abi. Without this gcc generates anandrew2014-03-161-0/+3
| | | | incorrect assembly file that doesn't allow for vfp instructions.
* On armv6 access both the softfloat and, when available, the vfp to get andandrew2014-03-157-10/+391
| | | | set the floating-point environment.
* In lib/msun/ld128/s_expl.c, remove '/*' within block comment, to avoid adim2014-02-211-1/+1
| | | | warning.
* For lib/msun, turn off warnings about unknown pragmas, sincedim2014-02-211-0/+1
| | | | lib/msun/src/e_sqrtl.c uses an unsupported STDC FENV_ACCESS pragma.
* * Mark static inline functions with __fenv_static.andrew2014-01-251-7/+11
| | | | * Correctly shift the mask when masking/unmasking exceptions.
* Use __fenv_static for all static inline functions.andrew2014-01-251-3/+3
|
* * msun/man/cosh.3:kargl2013-12-316-10/+18
| | | | | | | | | | | | | | | | | | | | * msun/man/sinh.3: * msun/man/tanh.3: . Fix grammar. * msun/src/e_coshl.c: * msun/src/e_sinhl.c: . Fix comment. * msun/src/s_tanhl.c: . Remove unused variables. . Fix location/indentation of comments. . Use comparison involving ints instead of long double. . Re-order polynomial evaluation on ld128 for |x| < 0.25. For now, retain the older order in an "#if 0 ... #else" block. . Use int comparison to short-circuit the |x| < 1.5 condition. Requested by: bde
* Fix a mismerge of my local doc changes to msun/man/sinh.3.kargl2013-12-301-2/+4
|
* * Makefile:kargl2013-12-3013-27/+480
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . Hook coshl, sinhl, and tanhl into libm. . Create symbolic links for corresponding manpages. . While here remove a nearby extraneous space. * Symbol.map: * src/math.h: . Move coshl, sinhl, and tanhl to their proper locations. * man/cosh.3: * man/sinh.3: * man/tanh.3: . Update the manpages. * src/e_cosh.c: * src/e_sinh.c: * src/s_tanh.c: . Add weak reference for LBDL_MANT_DIG==53 targets. * src/imprecise.c: . Remove the coshl, sinhl, and tanhl kludge. * src/e_coshl.c: . ld80 and ld128 implementation of coshl(). * src/e_sinhl.c: . ld80 and ld128 implementation of sinhl(). * src/s_tanhl.c: . ld80 and ld128 implementation of tanhl(). Obtained from: bde (mostly), das and kargl
* * ld80/k_expl.h:kargl2013-12-304-463/+743
| | | | | | | | | | | | | | | * ld128/k_expl.h: . Split out a computational kernel,__k_expl(x, &hi, &lo, &k) from expl(x). x must be finite and not tiny or huge. The kernel returns hi and lo values for extra precision and an exponent k for a 2**k scale factor. . Define additional kernels k_hexpl() and hexpl() that include a 1/2 scaling and are used by the hyperbolic functions. * ld80/s_expl.c: * ld128/s_expl.c: . Use the __k_expl() kernel. Obtained from: bde
* Yet, another attempt to fix the libm breakage due to thekargl2013-11-071-0/+2
| | | | | | changes in s_roundl.c to use bit twiddling. Reported by: ian
* Fix bulding libm on platforms with LDBL_MANT_DIG == 53.kargl2013-11-072-2/+6
| | | | Reported by: ian
* * Use "math.h" instead of <math.h>.kargl2013-11-063-24/+41
| | | | | | | | | | | | | | * Use bit twiddling. This requires inclusion of math_private.h and inclusion of float.h in s_roundl.c. Raise invalid exception. * Use literal integer constants where possible. Let the compiler do the appropriate conversion. * In s_roundf.c, use an F suffix on float constants instead of promoting float to double and then converting the result back to float. In s_roundl.c, use an L suffix. * In s_roundl.c, use the ENTERI and RETURNI macros. This requires the inclusion of fpmath.h and on __i386__ class hardware ieeefp.h. Reviewed by: bde
* Update the hard-float version of the fenv functions to use the VFP unit.andrew2013-10-271-36/+53
| | | | Any other floating-point unit is unsupported on ARM.
* After r255294, building lib/msun's symbol map (using clang as thedim2013-09-121-1/+1
| | | | | | | | | | | | | | preprocessor) gives the following error: --- Version.map --- <stdin>:287:4: error: invalid preprocessing directive # Implemented as weak aliases for imprecise versions ^ 1 error generated. Change the comment to a C-style one, to prevent this error. Approved by: re (hrs)
* On ARM EABI double precision floating point values are stored in theandrew2013-09-071-1/+1
| | | | | | endian the CPU is in, i.e. little-endian on most ARM cores. This allows ARMv4 and ARMv5 boards to boot with the ARM EABI.
* Add stub implementations of the missing C++11 math functions.theraven2013-09-063-0/+79
| | | | | | | | | | These are weak and so can be replaced by other versions in applications that choose to do so, and will give a linker warning when used so that applications that rely on the extra precision can avoid them. Note that since the C/C++ specs only guarantee that long double has precision equal to double, code that actually relies on these functions having greater precision is unportable at best and broken at worst.
* * Whitespace.kargl2013-08-281-1/+1
|
* * s_erf.c:kargl2013-08-272-99/+71
| | | | | | | | | | | | | | | | | | | | | | . Use integer literal constants instead of double literal constants. * s_erff.c: . Use integer literal constants instead of casting double literal constants to float. . Update the threshold values from those carried over from erf() to values appropriate for float. . New sets of polynomial coefficients for the rational approximations. These coefficients have little, but positive, effect on the maximum error in ULP in the four intervals, but do improve the overall speed of execution. . Remove redundant GET_FLOAT_WORD(ix,x) as hx already contained the contents that is packed into ix. . Update the mask that is used to zero-out lower-order bits in x in the intervals [1.25, 2.857143] and [2.857143, 12]. In tests on amd64, this change improves the maximum error in ULP from 6.27739 and 63.8095 to 3.16774 and 2.92095 on these intervals for erffc(). Reviewed by: bde
* Restore the longer form of the _Generic. The short form does not work in C++.theraven2013-07-291-2/+11
|
* Reenable the isnan(double) / isinf(double) declarations when targeting C89 + ↵theraven2013-07-291-0/+15
| | | | SUSv2 mode.
* Cleaner support for type qualifiers.theraven2013-07-131-11/+2
| | | | Submitted by: Pasi Parviainen
* Ensure that the _Generic() macro in math.h works with qualified types.theraven2013-07-131-17/+26
| | | | tgmath.h contains the same bugs and so should be fixed in the same way.
* Fix the build with C++ where __builtin_types_compatible_p is not allowed.theraven2013-07-121-2/+3
|
* Fix some typoes in math.h cleanup.theraven2013-07-111-3/+3
|
* Cleanups to math.h that prevent namespace conflicts with C++.theraven2013-07-111-28/+49
| | | | | Reviewed by: bde MFC after: 3 days
* Make the order of operations for lib/msun more clear.eadler2013-06-242-2/+2
| | | | | | | Tested with md5 sum of object code Reported by: swildner@DragonFlyBSD.org Submitted by: bde
* Add implementations of acoshl(), asinhl(), and atanhl(). This is adas2013-06-1012-48/+344
| | | | merge of the work done by bde and myself.
* Style fixes.das2013-06-054-54/+58
| | | | Submitted by: bde
* Add man links for expl(3) and expm1l(3).das2013-06-041-2/+2
|
* Change a comma to a semicolon.kargl2013-06-031-3/+2
| | | | | | Remove a blank line that crept into the declarations. Fix a comment to show a sign on a NaN.
* ld80 and ld128 implementations of expm1l(). This code started lifekargl2013-06-036-4/+373
| | | | | | | | | | | | | | 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)
* Fix two comments that got lost in the disentanglement of the larger diff.kargl2013-06-031-1/+6
|
* ld80/s_expl.c:kargl2013-06-032-8/+11
| | | | | | | | | | | | | | * Use integral numerical constants, and let the compiler do the conversion to long double. ld128/s_expl.c: * Use integral numerical constants, and let the compiler do the conversion to long double. * Use the ENTERI/RETURNI macros, which are no-ops on ld128. This however makes the ld80 and ld128 identical. Reviewed by: bde (as part of larger diff)
* Micro-optimization: move the unary mius operator to operatekargl2013-06-032-3/+3
| | | | | | on a literal constant. Obtained from: bde
* Add a comment to note that bde supplied most, if not all,kargl2013-06-031-0/+2
| | | | of the optimizations.
* ld80/s_expl.c:kargl2013-06-032-13/+9
| | | | | | | | | | | | | | | | * In the special case x = -Inf or -NaN, use a micro-optimization to eliminate the need to access u.xbits.man. * Fix an off-by-one for small arguments |x| < 0x1p-65. ld128/s_expl.c: * In the special case x = -Inf or -NaN, use a micro-optimization to eliminate the need to access u.xbits.manh and u.xbits.manl. * Fix an off-by-one for small arguments |x| < 0x1p-114. Obtained from: bde
* ld80/s_expl.c:kargl2013-06-032-27/+55
| | | | | | | | | | | | | | * Update the evaluation of the polynomial. This allows the removal of the now unused variables t23 and t45. ld128/s_expl.c: * Update the evaluation of the polynomial and the intermediate result t. This update allows several numerical constants to be written as double rather than long double constants. Update the constants as appropriate. Obtained from: bde
* Rename a few P2, P3, ... coefficients to A2, A3, ... missed inkargl2013-06-031-3/+3
| | | | my previous commit.
* Update a comment to reflect that we are using an endpoint ofkargl2013-06-032-2/+2
| | | | an interval instead of a midpoint.
* Add a u suffix to the IEEEl2bits unions o_threshold and u_threshold,kargl2013-06-031-4/+7
| | | | | | | and use macros to access the e component of the unions. This allows the portions of the code in ld80 to be identical to the ld128 code. Obtained from: bde
* Introduce the macro LOG2_INTERVAL, which is log2(number of intervals).kargl2013-06-032-2/+5
| | | | | | | Use the macroi as a micro-optimization to convert a subtraction and division to a shift. Obtained from: bde
* Whitespace.kargl2013-06-032-4/+4
|
* * Rename the polynomial coefficients from P2, P3, ... to A2, A3, ....kargl2013-06-032-25/+24
| | | | | | | | | | The names now coincide with the name used in PTP Tang's paper. * Rename the variable from s to tbl to better reflect that this is a table, and to be consistent with the naming scheme in s_exp2l.c Reviewed by: bde (as part of larger diff)
* * Style(9). Start non-Copyright fancy formatted comments with /**.kargl2013-06-031-1/+1
| | | | Reviewed by: bde (as part of larger diff)
* ld80/s_expl.c:kargl2013-06-032-2/+2
| | | | | | | | | | | * Update Copyright years to include 2013. ld128/s_expl.c: * Correct and update Copyright years. This code originated from the ld80 version, so it should reflect the same time period. Reviewed by: bde (as part of larger diff)
* Add logl, log2l, log10l, and log1pl.das2013-06-0311-18/+1809
| | | | Submitted by: bde
* I'm happy to finally commit stephen@'s implementations of cacos,das2013-05-308-15/+1186
| | | | | | | | cacosh, casin, casinh, catan, and catanh. Thanks to stephen@ and bde@ for working on these. Submitted by: stephen@ Reviewed by: bde
* Style(9)kargl2013-05-271-1/+1
| | | | | Approved by: das (implicit) Reported by: jh
OpenPOWER on IntegriCloud