mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-23 23:47:22 +08:00
72b6105518
When creating a split manual with one-node-per-page, the main index.html ends up getting clobbered by the page for the index() function because it uses "@node index" which, for html, also creates an index.html page. To remedy this, add "Function " to every function node so now we output "Function-index.html" and avoid clobbering. It also namespaces every other function and helps make sure we don't clobber anything else. Otherwise, there isn't really much rendering difference as @node text is mostly internal. Node title text comes from @section instead.
233 lines
5.7 KiB
TeX
233 lines
5.7 KiB
TeX
@node Math
|
|
@chapter Mathematical Functions (@file{math.h})
|
|
|
|
This chapter groups a wide variety of mathematical functions. The
|
|
corresponding definitions and declarations are in @file{math.h}.
|
|
Two definitions from @file{math.h} are of particular interest.
|
|
|
|
@enumerate
|
|
@item
|
|
The representation of infinity as a @code{double} is defined as
|
|
@code{HUGE_VAL}; this number is returned on overflow by many functions.
|
|
|
|
@item
|
|
The structure @code{exception} is used when you write customized error
|
|
handlers for the mathematical functions. You can customize error
|
|
handling for most of these functions by defining your own version of
|
|
@code{matherr}; see the section on @code{matherr} for details.
|
|
@end enumerate
|
|
|
|
@cindex system calls
|
|
@cindex support subroutines
|
|
@cindex stubs
|
|
@cindex OS stubs
|
|
Since the error handling code calls @code{fputs}, the mathematical
|
|
subroutines require stubs or minimal implementations for the same list
|
|
of OS subroutines as @code{fputs}: @code{close}, @code{fstat},
|
|
@code{isatty}, @code{lseek}, @code{read}, @code{sbrk}, @code{write}.
|
|
@xref{syscalls,,System Calls, libc.info, The Red Hat newlib C Library},
|
|
for a discussion and for sample minimal implementations of these support
|
|
subroutines.
|
|
|
|
Alternative declarations of the mathematical functions, which exploit
|
|
specific machine capabilities to operate faster---but generally have
|
|
less error checking and may reflect additional limitations on some
|
|
machines---are available when you include @file{fastmath.h} instead of
|
|
@file{math.h}.
|
|
|
|
@menu
|
|
* version:: Version of library
|
|
* Function acos:: Arccosine
|
|
* Function acosh:: Inverse hyperbolic cosine
|
|
* Function asin:: Arcsine
|
|
* Function asinh:: Inverse hyperbolic sine
|
|
* Function atan:: Arctangent
|
|
* Function atan2:: Arctangent of y/x
|
|
* Function atanh:: Inverse hyperbolic tangent
|
|
* Function jN:: Bessel functions (jN, yN)
|
|
* Function cbrt:: Cube root
|
|
* Function copysign:: Sign of Y, magnitude of X
|
|
* Function cosh:: Hyperbolic cosine
|
|
* Function erf:: Error function (erf, erfc)
|
|
* Function exp:: Exponential
|
|
* Function expm1:: Exponential of x, - 1
|
|
* Function fabs:: Absolute value (magnitude)
|
|
* Function floor:: Floor and ceiling (floor, ceil)
|
|
* Function fmod:: Floating-point remainder (modulo)
|
|
* Function frexp:: Split floating-point number
|
|
* Function gamma:: Logarithmic gamma function
|
|
* Function hypot:: Distance from origin
|
|
* Function ilogb:: Get exponent
|
|
* Function infinity:: Floating infinity
|
|
* Function isnan:: Check type of number
|
|
* Function ldexp:: Load exponent
|
|
* Function log:: Natural logarithms
|
|
* Function log10:: Base 10 logarithms
|
|
* Function log1p:: Log of 1 + X
|
|
* Function matherr:: Modifiable math error handler
|
|
* Function modf:: Split fractional and integer parts
|
|
* Function nan:: Floating Not a Number
|
|
* Function nextafter:: Get next representable number
|
|
* Function pow:: X to the power Y
|
|
* Function remainder:: remainder of X divided by Y
|
|
* Function scalbn:: scalbn
|
|
* Function sin:: Sine or cosine (sin, cos)
|
|
* Function sinh:: Hyperbolic sine
|
|
* Function sqrt:: Positive square root
|
|
* Function tan:: Tangent
|
|
* Function tanh:: Hyperbolic tangent
|
|
@end menu
|
|
|
|
@page
|
|
@node version
|
|
@section Version of library
|
|
|
|
There are four different versions of the math library routines: IEEE,
|
|
POSIX, X/Open, or SVID. The version may be selected at runtime by
|
|
setting the global variable @code{_LIB_VERSION}, defined in
|
|
@file{math.h}. It may be set to one of the following constants defined
|
|
in @file{math.h}: @code{_IEEE_}, @code{_POSIX_}, @code{_XOPEN_}, or
|
|
@code{_SVID_}. The @code{_LIB_VERSION} variable is not specific to any
|
|
thread, and changing it will affect all threads.
|
|
|
|
The versions of the library differ only in how errors are handled.
|
|
|
|
In IEEE mode, the @code{matherr} function is never called, no warning
|
|
messages are printed, and @code{errno} is never set.
|
|
|
|
In POSIX mode, @code{errno} is set correctly, but the @code{matherr}
|
|
function is never called and no warning messages are printed.
|
|
|
|
In X/Open mode, @code{errno} is set correctly, and @code{matherr} is
|
|
called, but warning message are not printed.
|
|
|
|
In SVID mode, functions which overflow return 3.40282346638528860e+38,
|
|
the maximum single-precision floating-point value, rather than infinity.
|
|
Also, @code{errno} is set correctly, @code{matherr} is called, and, if
|
|
@code{matherr} returns 0, warning messages are printed for some errors.
|
|
For example, by default @samp{log(-1.0)} writes this message on standard
|
|
error output:
|
|
|
|
@example
|
|
log: DOMAIN error
|
|
@end example
|
|
|
|
The library is set to X/Open mode by default.
|
|
|
|
@page
|
|
@include mathfp/sacos.def
|
|
|
|
@page
|
|
@include mathfp/eacosh.def
|
|
|
|
@page
|
|
@include mathfp/sasine.def
|
|
|
|
@page
|
|
@include mathfp/sasinh.def
|
|
|
|
@page
|
|
@include mathfp/satan.def
|
|
|
|
@page
|
|
@include mathfp/satan2.def
|
|
|
|
@page
|
|
@include mathfp/eatanh.def
|
|
|
|
@page
|
|
@include mathfp/wjn.def
|
|
|
|
@page
|
|
@include common/scbrt.def
|
|
|
|
@page
|
|
@include common/scopysign.def
|
|
|
|
@page
|
|
@include mathfp/scosh.def
|
|
|
|
@page
|
|
@include mathfp/serf.def
|
|
|
|
@page
|
|
@include mathfp/sexp.def
|
|
|
|
@page
|
|
@include common/sexpm1.def
|
|
|
|
@page
|
|
@include mathfp/sfabs.def
|
|
|
|
@page
|
|
@include mathfp/sfloor.def
|
|
|
|
@page
|
|
@include mathfp/sfmod.def
|
|
|
|
@page
|
|
@include mathfp/sfrexp.def
|
|
|
|
@page
|
|
@include mathfp/erlgamma.def
|
|
|
|
@page
|
|
@include mathfp/ehypot.def
|
|
|
|
@page
|
|
@include common/silogb.def
|
|
|
|
@page
|
|
@include common/sinfinity.def
|
|
|
|
@page
|
|
@include common/sisnan.def
|
|
|
|
@page
|
|
@include mathfp/sldexp.def
|
|
|
|
@page
|
|
@include mathfp/slogarithm.def
|
|
|
|
@page
|
|
@include mathfp/slog10.def
|
|
|
|
@page
|
|
@include common/slog1p.def
|
|
|
|
@page
|
|
@include common/smatherr.def
|
|
|
|
@page
|
|
@include common/smodf.def
|
|
|
|
@page
|
|
@include common/snan.def
|
|
|
|
@page
|
|
@include common/snextafter.def
|
|
|
|
@page
|
|
@include mathfp/spow.def
|
|
|
|
@page
|
|
@include mathfp/eremainder.def
|
|
|
|
@page
|
|
@include common/sscalbn.def
|
|
|
|
@page
|
|
@include mathfp/ssqrt.def
|
|
|
|
@page
|
|
@include mathfp/ssine.def
|
|
|
|
@page
|
|
@include mathfp/ssineh.def
|
|
|
|
@page
|
|
@include mathfp/stan.def
|
|
|
|
@page
|
|
@include mathfp/stanh.def
|