1
0
mirror of https://github.com/openbsd/src.git synced 2025-01-04 23:35:36 -08:00
Commit Graph

36 Commits

Author SHA1 Message Date
kettenis
6c6408334d Implement sicos(3), sincosf(3) and sincosl(3). These functions are common
extensions and modern compilers (such as clang) will use them to optimize
separate calculations of sine and cosine.

ok tom@, patrick@, deraadt@, jmc@
2018-03-10 20:52:58 +00:00
jca
574dde883c Remove #ifdef __vax__ bits
ok deraadt@ tb@ (who had the same diff)
2016-03-17 20:55:35 +00:00
martynas
2c96417951 Define new C99 macros:
- MATH_ERRNO, MATH_ERREXCEPTION and math_errhandling
- Optional FP_FAST_FMA{,F,L} macros if fma() executes as fast or faster
than (x * y) + z;  which in practice is achievable if gcc implements
__FP_FAST_FMA{,F,L}
Reported by John Marino @ DragonFlyBSD.
2015-07-19 17:41:49 +00:00
martynas
7c58654270 - Provide extended-precision math constants req'd by POSIX
- Explicitly cast double-precision constants as needed for
FLT_EVAL_METHOD = 2 archs
OK guenther@, ratchov@
2014-05-03 16:13:03 +00:00
miod
b67809f11d Try and avoid using __builtin_huge_val*() and __builtin_{inf,nan}* on vax
running gcc 3, for gcc will output a reserved operand for these.

ok martynas@ matthew@ espie@ guenther@
2013-08-06 19:04:50 +00:00
deraadt
4a39ccd02c Remove excessive sys/cdefs.h inclusion
ok guenther millert kettenis
2012-12-05 23:19:48 +00:00
martynas
49393c004c Finalize work on the math library. It's time to do this monster
commit, and deal with problems (if any) in tree.

Note that this adds the following functions.  Ports with hacks might
need adjustments.

nexttoward(3), fma(3), nexttowardf(3), fmaf(3), acoshl(3), asinhl(3),
atanhl(3), coshl(3), sinhl(3), tanhl(3), expl(3), expm1l(3), logl(3),
log10l(3), log1pl(3), log2l(3), modfl(3), cbrtl(3), hypotl(3),
powl(3), erfl(3), erfcl(3), lgammal(3), tgammal(3), ceill(3),
floorl(3), lrintl(3), llrintl(3), roundl(3), lroundl(3), llroundl(3),
truncl(3), fmodl(3), remainderl(3), remquol(3), nextafterl(3),
nexttowardl(3), fmal(3).

With this commit, our library implements all functionality required
by C99.  Documentation bits will follow.
2011-07-06 00:02:42 +00:00
martynas
c968322491 Also enclose variable names with external linkage in __BEGIN_DECLS.
Doesn't matter much since C++ ABI used by GCC doesn't mangle variable
names;  however technically is required by Section 7.5 of the C++ spec.

Discussed with/OK guenther@, matthew@.
2011-05-25 21:46:49 +00:00
martynas
6e4b140d70 - enable fenv
- add nearbyint, nearbyintf and nearbyintl implemented using fenv
2011-04-28 18:05:39 +00:00
martynas
b79f38e521 - make HUGE_VAL, HUGE_VALF, HUGE_VALL, INFINITY, NAN expand to the
constant expressions with the help of gcc post-3.3.
ok millert@, mikeb@.  been in snaps for weeks.
2010-12-14 11:16:15 +00:00
martynas
ed1ba055d0 int is big enough to fully represent exponents of all supported fp
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@
2009-07-25 11:38:09 +00:00
martynas
ec91bd97ac nuke extern from func decls. ok millert@ 2009-04-08 23:09:50 +00:00
martynas
426f92abd4 add __infinityf declaration. (only affects vax). pointed out by miod@ 2008-12-11 12:08:27 +00:00
martynas
ec3edc56ae expose extended-precision definitions. ok millert@ 2008-12-09 20:02:02 +00:00
martynas
190a67d733 sigh, gamma got lost 2008-09-09 20:42:55 +00:00
martynas
7b36286a70 - replace dtoa w/ David's gdtoa, version 2008-03-15
- 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
2008-09-07 20:36:06 +00:00
martynas
49b719a259 unXXX prototypes: exp2, remquo, nan, exp2f, remquof, nanf 2008-07-24 09:41:58 +00:00
martynas
8fe5dbae4f - add NAN definition (except on VAX)
- add C99 real-floating macros fpclassify isfinite isinf isnan
isnormal signbit
- add C99 macros isgreater isgreaterequal isless islessequal
islessgreater isunordered
- add function prototypes, __fpclassify __fpclassifyf __fpclassifyl
__isfinite __isfinitef __isfinitel __isinf __isinfl __isnan __isnanl
__isnormal __isnormalf __isnormall __signbit __signbitf __signbitl
ok millert@
2008-07-24 09:35:30 +00:00
martynas
a170c290bc - added HUGE_VALF, HUGE_VALL, INFINITY, FP_INFINITE, FP_NAN,
FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_ILOGB0, FP_ILOGBNAN definitions,
per C99
- classify functions into sections, add missing definitions, add
and some '#if 0' functions, and long double definitions, so we see
what's needed to be done
- other stuff is XXX'd, and will be uncommented soon
ok millert@
2008-07-22 16:01:46 +00:00
martynas
7c79e32890 - add proper double_t and float_t definitions for each arch
- math.h shouldn't define FLT_EVAL_METHOD, but float.h should (per
C99).  remove from math.h, and add proper definitions in float.h
ok millert@
2008-07-21 20:50:54 +00:00
martynas
67203373ed infnan always returned wrong values, because compiler assumed it
returns integer value, so add missing prototype
ok millert@
2008-07-16 15:01:19 +00:00
martynas
3102793312 tgamma and tgammaf 2008-06-11 21:16:43 +00:00
brad
65850ae265 add some more C99 functions: round(3) and roundf(3).
By Steven G. Kargl <kargl at troutmask dot apl dot washington.edu>
From FreeBSD
2006-07-12 07:26:07 +00:00
brad
4106c2fd6f add missing prototypes for trunc/truncf. 2006-07-12 06:43:31 +00:00
otto
ed994b09be delint; ok millert@ beck@ 2006-05-05 20:10:25 +00:00
millert
52a0e6034e First step in include files overhaul. Use __FOO_VISIBLE (as defined
in sys/cdefs.h) instead of _FOO_SOURCE.  Also fix several namespace
pollution issues, including the byte order defines.  OK deraadt@
2005-12-13 00:35:22 +00:00
otto
a242fdc4be Introduce a few c99 functions: {l,ll}{rint,round}{,f}. From NetBSD via
jason@. Man page fixes by jmc@, prodding by jsg@. ok mickey@
2005-11-17 20:07:40 +00:00
espie
1fc44d42e8 provide float_t, double_t, FLT_EVAL_METHOD (dummy C99 constructs)
okay millert@
2005-01-06 20:36:23 +00:00
jason
98179ed1e0 Better value for vax MAXFLOAT 2003-06-26 22:40:27 +00:00
jason
eca6d111f6 redefine MAXFLOAT in vax terms 2003-06-26 22:27:14 +00:00
millert
c72b5b24e1 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. 2002-02-16 21:27:05 +00:00
millert
f253020c05 Change protection of struct exception back from #ifdef __LIBM_PRIVATE
to #ifndef __cplusplus.  It turns out there is code outside of libm
that wants to use this.  I suppose that's why it is in math.h instead
of math_private.h ;-)
2001-05-26 01:49:25 +00:00
todd
6c61491bd8 $OpenBSD$ 2000-03-01 22:27:13 +00:00
millert
a5ca93ae9b We don't need two math.h headers incvs server: nothing known about
`math.h'.  The one in libm is more up to date but the one in the
include dir is what gets installed.
1998-03-02 23:58:01 +00:00
niklas
5ea2d675e0 Well, as we are heading for a release people are encouraged to rebuild their
entire trees for testing anyway, I might as well do this intrusive touching
of include files now.  Added openBSD tags.
1997-09-21 10:45:23 +00:00
deraadt
df930be708 initial import of NetBSD tree 1995-10-18 08:37:01 +00:00