History log of /netbsd-current/include/math.h
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.69 22-Jan-2024 kre

It seems that we need prototypes for long double math functions, even
when !__HAVE_LONG_DOUBLE -- they still exist, but just aren't...

This might unbreak several more builds.


# 1.68 22-Jan-2024 kre

This set of changes seem to be sufficient to make at least the
amd64 port build again after the long double math function infusion
from yesterday.

Feel free (without consulting me, I'm just hacking about) to revert
any of this and do it a better way.

Note: this is not intended to be complete, in particular, in <math.h>
I added prototypes only for the functions that are needed for a
successful build, not all of the new ones...


Revision tags: netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
# 1.67 27-Aug-2022 christos

Add sincos{,f,l} from FreeBSD


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406
# 1.66 22-Feb-2020 joerg

Correct C99 / C++11 feature testing. Document remaining missing symbols.


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
# 1.65 24-Jun-2018 christos

branches: 1.65.2; 1.65.4;
Fix the rest of the functions that have been made visible by xopen5,
posix 2017, and c99.


# 1.64 24-Jun-2018 christos

PR/53393: coypu: move rint to the right section.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.63 16-Sep-2013 martin

branches: 1.63.24;
Allow archs to provide __isinf() and __isnan() as inline functions instead
of macros.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.62 19-Apr-2013 joerg

If __FLT_EVAL_METHOD__ exists and is in {0,1,2}, provide float_t and
double_t.


Revision tags: agc-symver-base
# 1.61 11-Feb-2013 matt

FP_ILOGBNAN should be INT_MAX


# 1.60 09-Feb-2013 matt

Define FP_ILOGB0 and FP_ILOGBNAN


# 1.59 28-Jan-2013 matt

Add missing long double functions


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5
# 1.58 05-May-2012 christos

branches: 1.58.2;
oops, forgot to commit: add tgamma and tgammaf


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.57 05-Feb-2012 matt

branches: 1.57.2;
Use __INFINITY in preference to __builtin_inff(). Currently only VAX defines
__INFINITY and allows to use __builtin_huge_valf() instead since gcc4.5 will
error out unconditionally if __builtin_inf() is used.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.56 28-Jul-2011 joerg

branches: 1.56.2;
Add ilogbl(3).


# 1.55 26-Jul-2011 joerg

Add scalbnl to libm.


Revision tags: cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
# 1.54 06-Feb-2011 christos

remquo{,f} from FreeBSD via Stathis Kamperis


Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3
# 1.53 15-Sep-2010 christos

branches: 1.53.2;
Commit SoC long double support from Stathis Kamperis


Revision tags: uebayasi-xip-base2
# 1.52 02-May-2010 dholland

typo in comment


Revision tags: uebayasi-xip-base1
# 1.51 23-Feb-2010 joerg

PR 36988: ISO C99 mandates that HUGE_VAL, HUGE_VALF, HUGE_VALL and
INFINITY are constant expressions.

Use the GCC builtins if possible to implement them.


Revision tags: uebayasi-xip-base
# 1.50 11-Jan-2010 christos

branches: 1.50.2;
Add exp2 and exp2m


Revision tags: matt-premerge-20091211
# 1.49 04-Oct-2009 christos

oops forgot to commit that one--- Add f{dim,min,max}{,l,f}


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.48 22-Feb-2009 martin

Make NAN a compile time constant (with help from the compiler). Suggested
by krister. Fixes PR 40695.
Make references to the old construct (which we can't remove for binary
compatibility reasons) emit a linker warning.


Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
# 1.47 25-Apr-2008 christos

branches: 1.47.8; 1.47.10; 1.47.12; 1.47.16;
make name const.


Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking cube-autoconf-base matt-armv6-base matt-mips64-base hpcarm-cleanup-base
# 1.46 22-Feb-2007 drochner

branches: 1.46.10;
-get cabs() and cabsf() out of public view - these are historical and
conflict with C99 functions which are builtins in newer gcc
(actually, the old cabs() is ABI compatible with the new _complex one
on i386, but this is purely accidental)
remove public prototypes and manpages, move the code into a compat
subdirectory as libc does so that binary compatibility is kept
-add a manpage for the isgreater() etc macros, borrowed from FreeBSD


# 1.45 06-Feb-2007 drochner

add the isgreater() at al. comparision macros defined in C99 and SUSv3;
use just the primitive macros for now (identical to FreeBSD/DragonFly)
which don't use gcc internals, the rest can go in after some testing;
addresses PR standards/25520


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base
# 1.44 25-Mar-2006 xtraeme

Add trunc() and truncf() C99 functions, from FreeBSD.


# 1.43 23-Mar-2006 kleink

Add nan(3), nanf(3), and nanl(3); welcome libm.so.0.4.


# 1.42 24-Dec-2005 perry

Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.41 21-Jul-2005 christos

Add log2f


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
# 1.40 03-Feb-2005 perry

de-__P -- the hack is long since useless. Discussed with christos,
matt, kleink, others. Approved by christos.


# 1.39 12-Jul-2004 kleink

Move round() to the C99 section.


# 1.38 10-Jul-2004 junyoung

lib/24252: Add C99 functions round(3) and roundf(3).
libm minor unchanged; ride a recent bump.

From FreeBSD.


# 1.37 01-Jul-2004 drochner

being here, add the (l)lround(f) functions to libm
(almost the same like lrint)


# 1.36 30-Jun-2004 drochner

shut up lint's "long long" warnings


# 1.35 30-Jun-2004 drochner

Add (l)lrint(f).
Being here, move some C99 function declarations into the appropriate
section (as discussed with kleink).


Revision tags: netbsd-2-0-base
# 1.34 04-Mar-2004 kleink

branches: 1.34.2;
* Turn isinf(3) and isnan(3) into C99-style macros.
* Make it possible for ports to override these (i.e., VAX).
* Remove isnanl(), which was internal to libc only.


# 1.33 04-Mar-2004 kleink

Make lint happy for __fpmacro_unary_floating() users.


# 1.32 20-Jan-2004 kleink

Move FP_ROP and FP_DIRTYZERO from <math.h> to <vax/math.h> (where they
would have ended up if I hadn't missed the latter file in the commit).


# 1.31 20-Jan-2004 matt

Add FP_ROP and FP_DIRTYZERO to MD range for VAX.


# 1.30 17-Jan-2004 uwe

Close the comment after #endif.


# 1.29 15-Jan-2004 kleink

Add C99 fpclassify(), isfinite(), isnormal(), and signbit() macros.


# 1.28 26-Oct-2003 kleink

C99 7.12#4: provide INFINITY, which defaults to HUGE_VALF.
If infinities are not available, the machine-dependent header must define
__INFINITY as a positive constant of type float that overflows.


# 1.27 25-Oct-2003 kleink

C99: provide HUGE_VALF and HUGE_VALL.


# 1.26 17-May-2003 thorpej

Add long double support.


# 1.25 28-Apr-2003 bjh21

Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
!defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them. In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.24 19-Feb-2002 simonb

Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
- Use the above for the __infinity and __nan constants on all
architectures that use the standard ieee754 representation of
those constants.
- Add a single copy of various ieee754 math functions (frexp, isinf,
isnan, ldexp and modf) that had numerous duplicates among the
arch-specific directories.
- Use the above functions on all architectures where the generic C
versions where used. Architectures that had local assembly
routines are untouched (for those functions only).


# 1.23 05-Jan-2001 christos

branches: 1.23.2;
protect the incomplete cabs declarations with #ifndef __MATH_PRIVATE__ so that
the code that defines the functions can declare them properly.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.22 13-Jun-2000 simonb

Remove 'extern' from function declarations.


Revision tags: minoura-xpg4dl-base
# 1.21 04-Jan-2000 kleink

branches: 1.21.2;
const -> __const and include <sys/cdefs.h> earlier; fixes PR lib/9052
by Takahiro Kambe.


# 1.20 23-Dec-1999 kleink

C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
a single-precision quiet NaN; only to be defined on platforms that do support
this value.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.19 16-Aug-1999 kleink

Add missing isinff() declaration.


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.18 31-Jan-1999 christos

This file has still missing prototypes: cabs and cabsf... At least comment
what the arguments should be.


# 1.17 15-Nov-1998 christos

s/void/const void/


# 1.16 15-Nov-1998 christos

cast to void * first to avoid lint warning.


# 1.15 07-Sep-1998 kleink

Oops, isinf() was never included in any X/Open interface specification.


# 1.14 26-Jul-1998 mycroft

const poisoning.


# 1.13 11-May-1998 kleink

Fix comment typo in previous.


# 1.12 07-May-1998 kleink

Reorganize name space protection.


# 1.11 08-Apr-1998 tv

C++ has a very different concept of "exception." Delimit struct exception
and matherr() with #ifndef __cplusplus.


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.10 26-Oct-1994 cgd

new RCS ID format.


# 1.9 10-Aug-1994 jtc

Added prototypes for float versions of math functions.
Removed prototypes for internal functions.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.8 01-Mar-1994 jtc

Add cabs() and drem(), for BSD libm compatibility.


# 1.7 14-Feb-1994 cgd

Add missing _. reported by several folks.


# 1.6 11-Feb-1994 jtc

New math.h, based on fdlibm's fdlibm.h.


# 1.5 11-Oct-1993 jtc

Moved definition of M_FOO constants into !_ANSI_SOURCE && !_POSIX_SOURCE
conditional.


# 1.4 04-Aug-1993 jtc

Use __pure qualifier.


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.3 09-Jul-1993 cgd

update for better FP routines, from AT&T & elsewhere


Revision tags: netbsd-0-8 netbsd-alpha-1 patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.67 27-Aug-2022 christos

Add sincos{,f,l} from FreeBSD


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406
# 1.66 22-Feb-2020 joerg

Correct C99 / C++11 feature testing. Document remaining missing symbols.


Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
# 1.65 24-Jun-2018 christos

branches: 1.65.2; 1.65.4;
Fix the rest of the functions that have been made visible by xopen5,
posix 2017, and c99.


# 1.64 24-Jun-2018 christos

PR/53393: coypu: move rint to the right section.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.63 16-Sep-2013 martin

branches: 1.63.24;
Allow archs to provide __isinf() and __isnan() as inline functions instead
of macros.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.62 19-Apr-2013 joerg

If __FLT_EVAL_METHOD__ exists and is in {0,1,2}, provide float_t and
double_t.


Revision tags: agc-symver-base
# 1.61 11-Feb-2013 matt

FP_ILOGBNAN should be INT_MAX


# 1.60 09-Feb-2013 matt

Define FP_ILOGB0 and FP_ILOGBNAN


# 1.59 28-Jan-2013 matt

Add missing long double functions


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5
# 1.58 05-May-2012 christos

branches: 1.58.2;
oops, forgot to commit: add tgamma and tgammaf


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.57 05-Feb-2012 matt

branches: 1.57.2;
Use __INFINITY in preference to __builtin_inff(). Currently only VAX defines
__INFINITY and allows to use __builtin_huge_valf() instead since gcc4.5 will
error out unconditionally if __builtin_inf() is used.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.56 28-Jul-2011 joerg

branches: 1.56.2;
Add ilogbl(3).


# 1.55 26-Jul-2011 joerg

Add scalbnl to libm.


Revision tags: cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
# 1.54 06-Feb-2011 christos

remquo{,f} from FreeBSD via Stathis Kamperis


Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3
# 1.53 15-Sep-2010 christos

branches: 1.53.2;
Commit SoC long double support from Stathis Kamperis


Revision tags: uebayasi-xip-base2
# 1.52 02-May-2010 dholland

typo in comment


Revision tags: uebayasi-xip-base1
# 1.51 23-Feb-2010 joerg

PR 36988: ISO C99 mandates that HUGE_VAL, HUGE_VALF, HUGE_VALL and
INFINITY are constant expressions.

Use the GCC builtins if possible to implement them.


Revision tags: uebayasi-xip-base
# 1.50 11-Jan-2010 christos

branches: 1.50.2;
Add exp2 and exp2m


Revision tags: matt-premerge-20091211
# 1.49 04-Oct-2009 christos

oops forgot to commit that one--- Add f{dim,min,max}{,l,f}


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.48 22-Feb-2009 martin

Make NAN a compile time constant (with help from the compiler). Suggested
by krister. Fixes PR 40695.
Make references to the old construct (which we can't remove for binary
compatibility reasons) emit a linker warning.


Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
# 1.47 25-Apr-2008 christos

branches: 1.47.8; 1.47.10; 1.47.12; 1.47.16;
make name const.


Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking cube-autoconf-base matt-armv6-base matt-mips64-base hpcarm-cleanup-base
# 1.46 22-Feb-2007 drochner

branches: 1.46.10;
-get cabs() and cabsf() out of public view - these are historical and
conflict with C99 functions which are builtins in newer gcc
(actually, the old cabs() is ABI compatible with the new _complex one
on i386, but this is purely accidental)
remove public prototypes and manpages, move the code into a compat
subdirectory as libc does so that binary compatibility is kept
-add a manpage for the isgreater() etc macros, borrowed from FreeBSD


# 1.45 06-Feb-2007 drochner

add the isgreater() at al. comparision macros defined in C99 and SUSv3;
use just the primitive macros for now (identical to FreeBSD/DragonFly)
which don't use gcc internals, the rest can go in after some testing;
addresses PR standards/25520


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base
# 1.44 25-Mar-2006 xtraeme

Add trunc() and truncf() C99 functions, from FreeBSD.


# 1.43 23-Mar-2006 kleink

Add nan(3), nanf(3), and nanl(3); welcome libm.so.0.4.


# 1.42 24-Dec-2005 perry

Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.41 21-Jul-2005 christos

Add log2f


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
# 1.40 03-Feb-2005 perry

de-__P -- the hack is long since useless. Discussed with christos,
matt, kleink, others. Approved by christos.


# 1.39 12-Jul-2004 kleink

Move round() to the C99 section.


# 1.38 10-Jul-2004 junyoung

lib/24252: Add C99 functions round(3) and roundf(3).
libm minor unchanged; ride a recent bump.

From FreeBSD.


# 1.37 01-Jul-2004 drochner

being here, add the (l)lround(f) functions to libm
(almost the same like lrint)


# 1.36 30-Jun-2004 drochner

shut up lint's "long long" warnings


# 1.35 30-Jun-2004 drochner

Add (l)lrint(f).
Being here, move some C99 function declarations into the appropriate
section (as discussed with kleink).


Revision tags: netbsd-2-0-base
# 1.34 04-Mar-2004 kleink

branches: 1.34.2;
* Turn isinf(3) and isnan(3) into C99-style macros.
* Make it possible for ports to override these (i.e., VAX).
* Remove isnanl(), which was internal to libc only.


# 1.33 04-Mar-2004 kleink

Make lint happy for __fpmacro_unary_floating() users.


# 1.32 20-Jan-2004 kleink

Move FP_ROP and FP_DIRTYZERO from <math.h> to <vax/math.h> (where they
would have ended up if I hadn't missed the latter file in the commit).


# 1.31 20-Jan-2004 matt

Add FP_ROP and FP_DIRTYZERO to MD range for VAX.


# 1.30 17-Jan-2004 uwe

Close the comment after #endif.


# 1.29 15-Jan-2004 kleink

Add C99 fpclassify(), isfinite(), isnormal(), and signbit() macros.


# 1.28 26-Oct-2003 kleink

C99 7.12#4: provide INFINITY, which defaults to HUGE_VALF.
If infinities are not available, the machine-dependent header must define
__INFINITY as a positive constant of type float that overflows.


# 1.27 25-Oct-2003 kleink

C99: provide HUGE_VALF and HUGE_VALL.


# 1.26 17-May-2003 thorpej

Add long double support.


# 1.25 28-Apr-2003 bjh21

Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
!defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them. In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.24 19-Feb-2002 simonb

Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
- Use the above for the __infinity and __nan constants on all
architectures that use the standard ieee754 representation of
those constants.
- Add a single copy of various ieee754 math functions (frexp, isinf,
isnan, ldexp and modf) that had numerous duplicates among the
arch-specific directories.
- Use the above functions on all architectures where the generic C
versions where used. Architectures that had local assembly
routines are untouched (for those functions only).


# 1.23 05-Jan-2001 christos

branches: 1.23.2;
protect the incomplete cabs declarations with #ifndef __MATH_PRIVATE__ so that
the code that defines the functions can declare them properly.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.22 13-Jun-2000 simonb

Remove 'extern' from function declarations.


Revision tags: minoura-xpg4dl-base
# 1.21 04-Jan-2000 kleink

branches: 1.21.2;
const -> __const and include <sys/cdefs.h> earlier; fixes PR lib/9052
by Takahiro Kambe.


# 1.20 23-Dec-1999 kleink

C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
a single-precision quiet NaN; only to be defined on platforms that do support
this value.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.19 16-Aug-1999 kleink

Add missing isinff() declaration.


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.18 31-Jan-1999 christos

This file has still missing prototypes: cabs and cabsf... At least comment
what the arguments should be.


# 1.17 15-Nov-1998 christos

s/void/const void/


# 1.16 15-Nov-1998 christos

cast to void * first to avoid lint warning.


# 1.15 07-Sep-1998 kleink

Oops, isinf() was never included in any X/Open interface specification.


# 1.14 26-Jul-1998 mycroft

const poisoning.


# 1.13 11-May-1998 kleink

Fix comment typo in previous.


# 1.12 07-May-1998 kleink

Reorganize name space protection.


# 1.11 08-Apr-1998 tv

C++ has a very different concept of "exception." Delimit struct exception
and matherr() with #ifndef __cplusplus.


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.10 26-Oct-1994 cgd

new RCS ID format.


# 1.9 10-Aug-1994 jtc

Added prototypes for float versions of math functions.
Removed prototypes for internal functions.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.8 01-Mar-1994 jtc

Add cabs() and drem(), for BSD libm compatibility.


# 1.7 14-Feb-1994 cgd

Add missing _. reported by several folks.


# 1.6 11-Feb-1994 jtc

New math.h, based on fdlibm's fdlibm.h.


# 1.5 11-Oct-1993 jtc

Moved definition of M_FOO constants into !_ANSI_SOURCE && !_POSIX_SOURCE
conditional.


# 1.4 04-Aug-1993 jtc

Use __pure qualifier.


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.3 09-Jul-1993 cgd

update for better FP routines, from AT&T & elsewhere


Revision tags: netbsd-0-8 netbsd-alpha-1 patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.66 22-Feb-2020 joerg

Correct C99 / C++11 feature testing. Document remaining missing symbols.


Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
# 1.65 24-Jun-2018 christos

Fix the rest of the functions that have been made visible by xopen5,
posix 2017, and c99.


# 1.64 24-Jun-2018 christos

PR/53393: coypu: move rint to the right section.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.63 16-Sep-2013 martin

branches: 1.63.24;
Allow archs to provide __isinf() and __isnan() as inline functions instead
of macros.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.62 19-Apr-2013 joerg

If __FLT_EVAL_METHOD__ exists and is in {0,1,2}, provide float_t and
double_t.


Revision tags: agc-symver-base
# 1.61 11-Feb-2013 matt

FP_ILOGBNAN should be INT_MAX


# 1.60 09-Feb-2013 matt

Define FP_ILOGB0 and FP_ILOGBNAN


# 1.59 28-Jan-2013 matt

Add missing long double functions


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5
# 1.58 05-May-2012 christos

branches: 1.58.2;
oops, forgot to commit: add tgamma and tgammaf


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.57 05-Feb-2012 matt

branches: 1.57.2;
Use __INFINITY in preference to __builtin_inff(). Currently only VAX defines
__INFINITY and allows to use __builtin_huge_valf() instead since gcc4.5 will
error out unconditionally if __builtin_inf() is used.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.56 28-Jul-2011 joerg

branches: 1.56.2;
Add ilogbl(3).


# 1.55 26-Jul-2011 joerg

Add scalbnl to libm.


Revision tags: cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
# 1.54 06-Feb-2011 christos

remquo{,f} from FreeBSD via Stathis Kamperis


Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3
# 1.53 15-Sep-2010 christos

branches: 1.53.2;
Commit SoC long double support from Stathis Kamperis


Revision tags: uebayasi-xip-base2
# 1.52 02-May-2010 dholland

typo in comment


Revision tags: uebayasi-xip-base1
# 1.51 23-Feb-2010 joerg

PR 36988: ISO C99 mandates that HUGE_VAL, HUGE_VALF, HUGE_VALL and
INFINITY are constant expressions.

Use the GCC builtins if possible to implement them.


Revision tags: uebayasi-xip-base
# 1.50 11-Jan-2010 christos

branches: 1.50.2;
Add exp2 and exp2m


Revision tags: matt-premerge-20091211
# 1.49 04-Oct-2009 christos

oops forgot to commit that one--- Add f{dim,min,max}{,l,f}


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.48 22-Feb-2009 martin

Make NAN a compile time constant (with help from the compiler). Suggested
by krister. Fixes PR 40695.
Make references to the old construct (which we can't remove for binary
compatibility reasons) emit a linker warning.


Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
# 1.47 25-Apr-2008 christos

branches: 1.47.8; 1.47.10; 1.47.12; 1.47.16;
make name const.


Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking cube-autoconf-base matt-armv6-base matt-mips64-base hpcarm-cleanup-base
# 1.46 22-Feb-2007 drochner

branches: 1.46.10;
-get cabs() and cabsf() out of public view - these are historical and
conflict with C99 functions which are builtins in newer gcc
(actually, the old cabs() is ABI compatible with the new _complex one
on i386, but this is purely accidental)
remove public prototypes and manpages, move the code into a compat
subdirectory as libc does so that binary compatibility is kept
-add a manpage for the isgreater() etc macros, borrowed from FreeBSD


# 1.45 06-Feb-2007 drochner

add the isgreater() at al. comparision macros defined in C99 and SUSv3;
use just the primitive macros for now (identical to FreeBSD/DragonFly)
which don't use gcc internals, the rest can go in after some testing;
addresses PR standards/25520


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base
# 1.44 25-Mar-2006 xtraeme

Add trunc() and truncf() C99 functions, from FreeBSD.


# 1.43 23-Mar-2006 kleink

Add nan(3), nanf(3), and nanl(3); welcome libm.so.0.4.


# 1.42 24-Dec-2005 perry

Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.41 21-Jul-2005 christos

Add log2f


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
# 1.40 03-Feb-2005 perry

de-__P -- the hack is long since useless. Discussed with christos,
matt, kleink, others. Approved by christos.


# 1.39 12-Jul-2004 kleink

Move round() to the C99 section.


# 1.38 10-Jul-2004 junyoung

lib/24252: Add C99 functions round(3) and roundf(3).
libm minor unchanged; ride a recent bump.

From FreeBSD.


# 1.37 01-Jul-2004 drochner

being here, add the (l)lround(f) functions to libm
(almost the same like lrint)


# 1.36 30-Jun-2004 drochner

shut up lint's "long long" warnings


# 1.35 30-Jun-2004 drochner

Add (l)lrint(f).
Being here, move some C99 function declarations into the appropriate
section (as discussed with kleink).


Revision tags: netbsd-2-0-base
# 1.34 04-Mar-2004 kleink

branches: 1.34.2;
* Turn isinf(3) and isnan(3) into C99-style macros.
* Make it possible for ports to override these (i.e., VAX).
* Remove isnanl(), which was internal to libc only.


# 1.33 04-Mar-2004 kleink

Make lint happy for __fpmacro_unary_floating() users.


# 1.32 20-Jan-2004 kleink

Move FP_ROP and FP_DIRTYZERO from <math.h> to <vax/math.h> (where they
would have ended up if I hadn't missed the latter file in the commit).


# 1.31 20-Jan-2004 matt

Add FP_ROP and FP_DIRTYZERO to MD range for VAX.


# 1.30 17-Jan-2004 uwe

Close the comment after #endif.


# 1.29 15-Jan-2004 kleink

Add C99 fpclassify(), isfinite(), isnormal(), and signbit() macros.


# 1.28 26-Oct-2003 kleink

C99 7.12#4: provide INFINITY, which defaults to HUGE_VALF.
If infinities are not available, the machine-dependent header must define
__INFINITY as a positive constant of type float that overflows.


# 1.27 25-Oct-2003 kleink

C99: provide HUGE_VALF and HUGE_VALL.


# 1.26 17-May-2003 thorpej

Add long double support.


# 1.25 28-Apr-2003 bjh21

Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
!defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them. In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.24 19-Feb-2002 simonb

Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
- Use the above for the __infinity and __nan constants on all
architectures that use the standard ieee754 representation of
those constants.
- Add a single copy of various ieee754 math functions (frexp, isinf,
isnan, ldexp and modf) that had numerous duplicates among the
arch-specific directories.
- Use the above functions on all architectures where the generic C
versions where used. Architectures that had local assembly
routines are untouched (for those functions only).


# 1.23 05-Jan-2001 christos

branches: 1.23.2;
protect the incomplete cabs declarations with #ifndef __MATH_PRIVATE__ so that
the code that defines the functions can declare them properly.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.22 13-Jun-2000 simonb

Remove 'extern' from function declarations.


Revision tags: minoura-xpg4dl-base
# 1.21 04-Jan-2000 kleink

branches: 1.21.2;
const -> __const and include <sys/cdefs.h> earlier; fixes PR lib/9052
by Takahiro Kambe.


# 1.20 23-Dec-1999 kleink

C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
a single-precision quiet NaN; only to be defined on platforms that do support
this value.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.19 16-Aug-1999 kleink

Add missing isinff() declaration.


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.18 31-Jan-1999 christos

This file has still missing prototypes: cabs and cabsf... At least comment
what the arguments should be.


# 1.17 15-Nov-1998 christos

s/void/const void/


# 1.16 15-Nov-1998 christos

cast to void * first to avoid lint warning.


# 1.15 07-Sep-1998 kleink

Oops, isinf() was never included in any X/Open interface specification.


# 1.14 26-Jul-1998 mycroft

const poisoning.


# 1.13 11-May-1998 kleink

Fix comment typo in previous.


# 1.12 07-May-1998 kleink

Reorganize name space protection.


# 1.11 08-Apr-1998 tv

C++ has a very different concept of "exception." Delimit struct exception
and matherr() with #ifndef __cplusplus.


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.10 26-Oct-1994 cgd

new RCS ID format.


# 1.9 10-Aug-1994 jtc

Added prototypes for float versions of math functions.
Removed prototypes for internal functions.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.8 01-Mar-1994 jtc

Add cabs() and drem(), for BSD libm compatibility.


# 1.7 14-Feb-1994 cgd

Add missing _. reported by several folks.


# 1.6 11-Feb-1994 jtc

New math.h, based on fdlibm's fdlibm.h.


# 1.5 11-Oct-1993 jtc

Moved definition of M_FOO constants into !_ANSI_SOURCE && !_POSIX_SOURCE
conditional.


# 1.4 04-Aug-1993 jtc

Use __pure qualifier.


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.3 09-Jul-1993 cgd

update for better FP routines, from AT&T & elsewhere


Revision tags: netbsd-0-8 netbsd-alpha-1 patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
# 1.65 24-Jun-2018 christos

Fix the rest of the functions that have been made visible by xopen5,
posix 2017, and c99.


# 1.64 24-Jun-2018 christos

PR/53393: coypu: move rint to the right section.


Revision tags: netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
# 1.63 16-Sep-2013 martin

branches: 1.63.24;
Allow archs to provide __isinf() and __isnan() as inline functions instead
of macros.


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.62 19-Apr-2013 joerg

If __FLT_EVAL_METHOD__ exists and is in {0,1,2}, provide float_t and
double_t.


Revision tags: agc-symver-base
# 1.61 11-Feb-2013 matt

FP_ILOGBNAN should be INT_MAX


# 1.60 09-Feb-2013 matt

Define FP_ILOGB0 and FP_ILOGBNAN


# 1.59 28-Jan-2013 matt

Add missing long double functions


Revision tags: yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5
# 1.58 05-May-2012 christos

branches: 1.58.2;
oops, forgot to commit: add tgamma and tgammaf


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.57 05-Feb-2012 matt

branches: 1.57.2;
Use __INFINITY in preference to __builtin_inff(). Currently only VAX defines
__INFINITY and allows to use __builtin_huge_valf() instead since gcc4.5 will
error out unconditionally if __builtin_inf() is used.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.56 28-Jul-2011 joerg

branches: 1.56.2;
Add ilogbl(3).


# 1.55 26-Jul-2011 joerg

Add scalbnl to libm.


Revision tags: cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
# 1.54 06-Feb-2011 christos

remquo{,f} from FreeBSD via Stathis Kamperis


Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3
# 1.53 15-Sep-2010 christos

branches: 1.53.2;
Commit SoC long double support from Stathis Kamperis


Revision tags: uebayasi-xip-base2
# 1.52 02-May-2010 dholland

typo in comment


Revision tags: uebayasi-xip-base1
# 1.51 23-Feb-2010 joerg

PR 36988: ISO C99 mandates that HUGE_VAL, HUGE_VALF, HUGE_VALL and
INFINITY are constant expressions.

Use the GCC builtins if possible to implement them.


Revision tags: uebayasi-xip-base
# 1.50 11-Jan-2010 christos

branches: 1.50.2;
Add exp2 and exp2m


Revision tags: matt-premerge-20091211
# 1.49 04-Oct-2009 christos

oops forgot to commit that one--- Add f{dim,min,max}{,l,f}


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.48 22-Feb-2009 martin

Make NAN a compile time constant (with help from the compiler). Suggested
by krister. Fixes PR 40695.
Make references to the old construct (which we can't remove for binary
compatibility reasons) emit a linker warning.


Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
# 1.47 25-Apr-2008 christos

branches: 1.47.8; 1.47.10; 1.47.12; 1.47.16;
make name const.


Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking cube-autoconf-base matt-armv6-base matt-mips64-base hpcarm-cleanup-base
# 1.46 22-Feb-2007 drochner

branches: 1.46.10;
-get cabs() and cabsf() out of public view - these are historical and
conflict with C99 functions which are builtins in newer gcc
(actually, the old cabs() is ABI compatible with the new _complex one
on i386, but this is purely accidental)
remove public prototypes and manpages, move the code into a compat
subdirectory as libc does so that binary compatibility is kept
-add a manpage for the isgreater() etc macros, borrowed from FreeBSD


# 1.45 06-Feb-2007 drochner

add the isgreater() at al. comparision macros defined in C99 and SUSv3;
use just the primitive macros for now (identical to FreeBSD/DragonFly)
which don't use gcc internals, the rest can go in after some testing;
addresses PR standards/25520


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base
# 1.44 25-Mar-2006 xtraeme

Add trunc() and truncf() C99 functions, from FreeBSD.


# 1.43 23-Mar-2006 kleink

Add nan(3), nanf(3), and nanl(3); welcome libm.so.0.4.


# 1.42 24-Dec-2005 perry

Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.


# 1.41 21-Jul-2005 christos

Add log2f


Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
# 1.40 03-Feb-2005 perry

de-__P -- the hack is long since useless. Discussed with christos,
matt, kleink, others. Approved by christos.


# 1.39 12-Jul-2004 kleink

Move round() to the C99 section.


# 1.38 10-Jul-2004 junyoung

lib/24252: Add C99 functions round(3) and roundf(3).
libm minor unchanged; ride a recent bump.

From FreeBSD.


# 1.37 01-Jul-2004 drochner

being here, add the (l)lround(f) functions to libm
(almost the same like lrint)


# 1.36 30-Jun-2004 drochner

shut up lint's "long long" warnings


# 1.35 30-Jun-2004 drochner

Add (l)lrint(f).
Being here, move some C99 function declarations into the appropriate
section (as discussed with kleink).


Revision tags: netbsd-2-0-base
# 1.34 04-Mar-2004 kleink

branches: 1.34.2;
* Turn isinf(3) and isnan(3) into C99-style macros.
* Make it possible for ports to override these (i.e., VAX).
* Remove isnanl(), which was internal to libc only.


# 1.33 04-Mar-2004 kleink

Make lint happy for __fpmacro_unary_floating() users.


# 1.32 20-Jan-2004 kleink

Move FP_ROP and FP_DIRTYZERO from <math.h> to <vax/math.h> (where they
would have ended up if I hadn't missed the latter file in the commit).


# 1.31 20-Jan-2004 matt

Add FP_ROP and FP_DIRTYZERO to MD range for VAX.


# 1.30 17-Jan-2004 uwe

Close the comment after #endif.


# 1.29 15-Jan-2004 kleink

Add C99 fpclassify(), isfinite(), isnormal(), and signbit() macros.


# 1.28 26-Oct-2003 kleink

C99 7.12#4: provide INFINITY, which defaults to HUGE_VALF.
If infinities are not available, the machine-dependent header must define
__INFINITY as a positive constant of type float that overflows.


# 1.27 25-Oct-2003 kleink

C99: provide HUGE_VALF and HUGE_VALL.


# 1.26 17-May-2003 thorpej

Add long double support.


# 1.25 28-Apr-2003 bjh21

Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
!defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them. In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.24 19-Feb-2002 simonb

Clean up some rampant code duplication wrt ieee number handling:
- Add alignment-safe double and float unions.
- Use the above for the __infinity and __nan constants on all
architectures that use the standard ieee754 representation of
those constants.
- Add a single copy of various ieee754 math functions (frexp, isinf,
isnan, ldexp and modf) that had numerous duplicates among the
arch-specific directories.
- Use the above functions on all architectures where the generic C
versions where used. Architectures that had local assembly
routines are untouched (for those functions only).


# 1.23 05-Jan-2001 christos

branches: 1.23.2;
protect the incomplete cabs declarations with #ifndef __MATH_PRIVATE__ so that
the code that defines the functions can declare them properly.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.22 13-Jun-2000 simonb

Remove 'extern' from function declarations.


Revision tags: minoura-xpg4dl-base
# 1.21 04-Jan-2000 kleink

branches: 1.21.2;
const -> __const and include <sys/cdefs.h> earlier; fixes PR lib/9052
by Takahiro Kambe.


# 1.20 23-Dec-1999 kleink

C99: Define a NAN macro in <math.h> which evaulates to a constant expression of
a single-precision quiet NaN; only to be defined on platforms that do support
this value.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base
# 1.19 16-Aug-1999 kleink

Add missing isinff() declaration.


Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.18 31-Jan-1999 christos

This file has still missing prototypes: cabs and cabsf... At least comment
what the arguments should be.


# 1.17 15-Nov-1998 christos

s/void/const void/


# 1.16 15-Nov-1998 christos

cast to void * first to avoid lint warning.


# 1.15 07-Sep-1998 kleink

Oops, isinf() was never included in any X/Open interface specification.


# 1.14 26-Jul-1998 mycroft

const poisoning.


# 1.13 11-May-1998 kleink

Fix comment typo in previous.


# 1.12 07-May-1998 kleink

Reorganize name space protection.


# 1.11 08-Apr-1998 tv

C++ has a very different concept of "exception." Delimit struct exception
and matherr() with #ifndef __cplusplus.


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.10 26-Oct-1994 cgd

new RCS ID format.


# 1.9 10-Aug-1994 jtc

Added prototypes for float versions of math functions.
Removed prototypes for internal functions.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.8 01-Mar-1994 jtc

Add cabs() and drem(), for BSD libm compatibility.


# 1.7 14-Feb-1994 cgd

Add missing _. reported by several folks.


# 1.6 11-Feb-1994 jtc

New math.h, based on fdlibm's fdlibm.h.


# 1.5 11-Oct-1993 jtc

Moved definition of M_FOO constants into !_ANSI_SOURCE && !_POSIX_SOURCE
conditional.


# 1.4 04-Aug-1993 jtc

Use __pure qualifier.


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.3 09-Jul-1993 cgd

update for better FP routines, from AT&T & elsewhere


Revision tags: netbsd-0-8 netbsd-alpha-1 patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision