OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libm/] [math/] [math.tex] - Rev 56

Go to most recent revision | Compare with Previous | Blame | View Log

@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 Cygnus C Support 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
* acos::	Arccosine
* acosh::	Inverse hyperbolic cosine
* asin::	Arcsine
* asinh::	Inverse hyperbolic sine
* atan::	Arctangent
* atan2::	Arctangent of y/x
* atanh::	Inverse hyperbolic tangent
* jN::	        Bessel functions  (jN, yN)
* cbrt::	Cube root
* copysign::	Sign of Y, magnitude of X
* cosh::	Hyperbolic cosine
* erf::		Error function  (erf, erfc)
* exp::		Exponential
* expm1::	Exponential of x, - 1
* fabs::	Absolute value (magnitude)
* floor::	Floor and ceiling  (floor, ceil)
* fmod::	Floating-point remainder (modulo)
* frexp::	Split floating-point number
* gamma::	Logarithmic gamma function
* hypot::	Distance from origin
* ilogb::	Get exponent
* infinity::	Floating infinity
* isnan::	Check type of number
* ldexp::	Load exponent
* log::		Natural logarithms
* log10::	Base 10 logarithms
* log1p::	Log of 1 + X
* matherr::	Modifiable math error handler
* modf::	Split fractional and integer parts
* nan::		Floating Not a Number
* nextafter::	Get next representable number
* pow::		X to the power Y
* remainder::	remainder of X divided by Y 
* scalbn::	scalbn
* sin::		Sine or cosine (sin, cos)
* sinh::	Hyperbolic sine
* sqrt::	Positive square root
* tan::		Tangent
* 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 math/wacos.def
 
@page
@include math/wacosh.def
 
@page
@include math/wasin.def
 
@page
@include math/sasinh.def
 
@page
@include math/satan.def
 
@page
@include math/watan2.def
 
@page
@include math/watanh.def
 
@page
@include math/wj0.def
 
@page
@include math/wcosh.def
 
@page
@include math/serf.def
 
@page
@include math/wexp.def
 
@page
@include math/sfabs.def
 
@page
@include math/sfloor.def
 
@page
@include math/wfmod.def
 
@page
@include math/sfrexp.def
 
@page
@include math/wgamma.def
 
@page
@include math/whypot.def
 
@page
@include math/sisnan.def
 
@page
@include math/sldexp.def
 
@page
@include math/wlog.def
 
@page
@include math/wlog10.def
 
@page
@include math/wpow.def
 
@page
@include math/wremainder.def
 
@page
@include math/wsqrt.def
 
@page
@include math/ssin.def
 
@page
@include math/wsinh.def
 
@page
@include math/stan.def
 
@page
@include math/stanh.def
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.