summaryrefslogtreecommitdiffstats
path: root/lib/libm/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* int is big enough to fully represent exponents of all supported fpmartynas2009-07-251-0/+42
| | | | | | | | formats. which even for 80-bit & 128-bit long doubles is only 15 bits. therefore, scalbln, scalblnf, scalblnl are essentially the same as scalbn, scalbnf, scalbnl with bounds checking so that LONG_MIN..INT_MIN, and INT_MAX..LONG_MAX ranges properly raise exceptions & yield correct values. looks good to millert@
* make ldexpf behavior consistent with the double and extended-precisionmartynas2009-04-193-69/+7
| | | | | | versions; spotted by kettenis@ while here also remove unused ldexp; it lives in libc ok kettenis@, "looks good" millert@
* const static -> static const; since it's deprecated per C99. ok millert@martynas2009-04-051-11/+11
|
* Let this compile with gcc 2.miod2008-12-221-4/+4
|
* use sys/cdefs.h; pointed out by theomartynas2008-12-1019-23/+23
|
* - 80-bit and quad precision trigonometric and other mostmartynas2008-12-0957-137/+3693
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | important functions: acosl, asinl, atanl, atan2l, cosl, sinl, tanl, exp2l, frexpl, ilogbl, ldexpl, logbl, scalbnl, fabsl, hypotl, powl, sqrtl, rintl, copysignl, nanl, fdiml, fmaxl, fminl. mostly taken from freebsd, needed alot of changes to adapt. note, these are all c versions; and are quite slow when architectures have, e.g. sqrt. assembly versions will be added afterwards - make them .weak/__weak_alias to the double precision versions on other archs - no need to have two finites. finite() and finitef() are non-standard 3BSD obsolete versions of isfinite. remove from libm. make them weak_alias in libc to __isfinite and __isfinitef instead. similarly make 3BSD obsolete versions of isinf, isinff, isnan, isnanf weak_aliases to C99's __isinf, __isinff, __isnan, __isnanf - remove unused infinity.c. the c library has infinities for each supported platform - use STRICT_ASSIGN cast hack for _kernel_rem_pio2, so that the double version has a chance of working on i386 with extra precision - avoid storing multiple copies of the pi/2 array, since it won't vary - bump major due to removed finite/finitef. although they will be in libc, which anything is linked to, minor bump might be enough ok millert@. tested by sthen@, jsg@, ajacoutot@, kili@, naddy@
* typo: is -> if. ok millert@martynas2008-09-162-2/+2
|
* gc unused files, the functions are in libc. ok millert@martynas2008-09-164-123/+0
|
* - make much more readable: don't reimplement isnan, signbit eachmartynas2008-09-114-56/+32
| | | | | time we need them ok millert@
* sigh, gamma got lostmartynas2008-09-094-0/+121
|
* - replace dtoa w/ David's gdtoa, version 2008-03-15martynas2008-09-07150-3180/+3512
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@ this commit does not include: - man page changes
* revertmartynas2008-08-081-2/+2
|
* make _digittoint staticmartynas2008-08-081-2/+2
|
* - remove isinff, isnanf. this has been moved to libcmartynas2008-07-246-1/+941
| | | | | | | | | | | - remove never-enabled signbit. libc has is now - add C99 implementations, from freebsd, for nan(), nanf() (needed to write _digittoint for it), exp2(), exp2f(), remquo(), remquof(), needed STRICT_ASSIGN macro for math_private.h - bump major man pages will follow exp2{,f} has been requested by chl@ ok millert@
* remez -> Remes here, too. for consistencymartynas2008-07-222-2/+2
|
* rename lround.c lroundf.c llround.c llroundf.c to s_lround.cmartynas2008-07-214-6/+6
| | | | | s_lroundf.c s_llround.c s_llroundf.c, for naming consistency looks fine to millert@
* Reme algorithm -> Remes algorithm. in commentsmartynas2008-07-204-4/+4
|
* get in the bug fix for pow, from fdlibm 5.3. also adapt it formartynas2008-07-202-39/+40
| | | | | | | | | | | | powf, the float version of it > 1. e_pow.c incorrect results when > x is very close to -1.0 and y is very large, e.g. > pow(-1.0000000000000002e+00,4.5035996273704970e+15) = 0 > pow(-9.9999999999999978e-01,4.5035996273704970e+15) = 0 > Correct results are close to -e and -1/e. while here merge more changes for pow, fixes sign in oflow/uflow cases ok millert@
* use more accurate algorithm for tan. from fdlibm 5.3:martynas2008-07-201-69/+101
| | | | | | | | > 2. k_tan.c error was > 1 ulp target for FDLIBM > 5.2: Worst error at least 1.45 ulp at > tan(1.7765241907548024E+269) = 1.7733884462610958E+16 > 5.3: Worst error 0.96 ulp ok millert@
* some archaic 'n = a(b), c(d)' use that confused lintmartynas2008-07-161-4/+7
| | | | ok millert@
* - expressions such as x != x and x == x are prone to errors andmartynas2008-06-251-2/+2
| | | | | | | | | ugly, when we have isnan and isinf - no need to check for _IEEE, when checking for not-a-number - remove some impossible checks - while here, drem->remainder, as drem is just an obsolete alias now ok millert@
* cleaning up, no functional changesmartynas2008-06-213-7/+8
| | | | | | | - no support for National 32000, removing ns32000/national ifdefs maze - remove tahoe defs - ansify looks fine to millert@; who also noticed rint removal
* shut up lint; pointed out by theomartynas2008-06-122-11/+20
| | | | ok millert@
* - on non-ieee, rename gamma to tgamma, the 'true' gammamartynas2008-06-114-20/+900
| | | | | | | | | | | | | | | | - make gamma an alias of lgamma - on ieee, add tgamma, based on gamma from non-ieee - fixes for tgamma/lgamma/exp/log, esp. special cases (some from freebsd); properly raise invalid fp operations on vax - also some general cleanup, ansification, man page (which was ok jmc@) - bump minor this makes some ports using tgamma possible; also consistifies behavior across openbsd/ieee and openbsd/non-ieee, and other operating systems much thanks sthen@, johan@, steven@, Simon Kuhnle, Wiktor Izdebski for testing ok millert@
* add little endian and big endian shapes for extended and quad floatjason2007-06-011-1/+43
|
* Include s_llrint.c instead of ithe now removed llrint.c.kettenis2006-09-251-2/+2
|
* Move llrint.c, llrintf.c, lrint.c and lrintf.c to s_llrint.c, s_llrintf.c,kettenis2006-09-254-5/+5
| | | | | | s_lrint.c and s_lrintf.c, and add i387-specific assembler versions. ok deraadt@, otto@
* add some more C99 functions: round(3) and roundf(3).brad2006-07-122-0/+102
| | | | | By Steven G. Kargl <kargl at troutmask dot apl dot washington.edu> From FreeBSD
* delint; ok millert@ beck@otto2006-05-053-5/+3
|
* Avoid shadowing of external symbols by local variables; whoeverotto2006-04-2513-95/+95
| | | | | thought up the names of the bessel functions deserves a beating. ok deraadt@
* lint prefers ANSI C function definitions if a prototype is available;otto2006-04-241-2/+1
| | | | i can only agree
* small delint; ok deraadt@otto2006-04-245-5/+4
|
* add some more C99 functions: trunc(3) and truncf(3).brad2006-03-182-0/+118
| | | | | | From FreeBSD ok deraadt@ millert@ otto@ jmc@
* more empty files for lint to chew on (on the vax)deraadt2005-11-244-0/+4
|
* an empty stub file for lint: on the vax, lint will chew on this, but avoid itderaadt2005-11-231-0/+1
| | | | | when compiling, and use the .S file instead if someone has a better solution, show it..
* Work around a gcc optimization problem. Spotted by biorn@; fixotto2005-11-171-3/+5
| | | | inspired by FreeBSD. ok biorn@ millert@ deraadt@
* Introduce a few c99 functions: {l,ll}{rint,round}{,f}. From NetBSD viaotto2005-11-178-0/+412
| | | | jason@. Man page fixes by jmc@, prodding by jsg@. ok mickey@
* ansideraadt2003-06-262-4/+2
|
* spellingderaadt2003-01-041-1/+1
|
* We live in an ANSI C world. Remove lots of gratuitous #ifdef __STDC__ cruft.millert2002-02-19150-1862/+372
|
* Part one of userland __P removal. Done with a simple regexp with some minor hand editing to make comments line up correctly. Another pass is forthcoming that handles the cases that could not be done automatically.millert2002-02-161-64/+64
|
* $OpenBSD$todd2000-03-021-1/+1
|
* fix _USE_WRITEderaadt1998-11-161-2/+1
|
* We don't need two math.h headers incvs server: nothing known aboutmillert1998-03-021-278/+0
| | | | | `math.h'. The one in libm is more up to date but the one in the include dir is what gets installed.
* protect internal "struct excpption" from conflicting one in gcc.millert1998-03-021-2/+4
|
* Don't declare struct exception if __cplusplus is defined as itmillert1998-03-021-1/+3
| | | | | | conflicts with gcc's exception handling stuff. This should really only be visible when building libm I think, and I will do that once I confer with others. Required for libg++ 2.8.0.
* machine/endian.h not needed.etheisen1996-11-141-2/+1
|
* darn good reason not use a primarily big-endian cpu in little-endian mode:deraadt1996-05-241-3/+8
| | | | the ARM port runs little-endian, but it's fp is still big-endian!
* from netbsd:deraadt1995-12-1410-236/+12
| | | | | | | Changed w_gamma.c, w_gamma_r.c, w_gammaf.c, w_gammaf_r.c to call __ieee754_lgamma_r or __ieee754_lgammaf_r. Removed e_gamma.c, e_gamma_r.c, e_gammaf.c, e_gammaf_r.c, e_lgamma.c, e_lgamma_f.c.
* update from NetBSDderaadt1995-10-282-2/+2
|