## Documentation

Provides access to ISO C math functions in <math.h> that are not defined by the Chicken core. Please refer to your documentation for <math.h> for a description of the various calls.

### Math Functions

O, P2 are integer.

N, N1, N2, M are real.

#### Usage

`(use "mathh")`

#### bessel-yn

bessel-j0 Nprocedure
bessel-j1 Nprocedure
bessel-jn O Nprocedure
bessel-y0 Nprocedure
bessel-y1 Nprocedure
bessel-yn O Nprocedure

cosh Nprocedure
sinh Nprocedure
tanh Nprocedure
acosh Nprocedure
asinh Nprocedure
atanh Nprocedure

#### hypot

hypot N1 N2procedure

#### lgamma

gamma Nprocedure
lgamma Nprocedure

erf Nprocedure
erfc Nprocedure

log10 Nprocedure
log2 Nprocedure
log1p Nprocedure

#### make-log/base

make-log/base Nprocedure

Returns a procedure of one argument, the logarithm function for the base N.

#### scalbn

ldexp N P2procedure
scalbn N P2procedure

cbrt Nprocedure

#### nextafter

nextafter N Mprocedure

Returns the next N in the direction of M.

#### fpmod

fpmod N Mprocedure

Returns the modulus of N for M.

#### modf

modf Nprocedure

Returns two values, the integral and fractional components of N.

#### frexp

frexp Nprocedure

Returns two values, the fraction and the exponent components of N.

#### signbit

signbit Nprocedure

Returns #t when negative, #f otherwise.

#### copysign

copysign N Mprocedure

Returns N with same sign as M.

#### fpclassify

fpclassify Nprocedure

Returns a symbol denoting the floating-point kind of N.

infinite
nan
normal
subnormal
zero
unclassified

#### fpclass

fpclass Nprocedure

Returns a symbol denoting the floating-point kind of N.

positive-infinite
negative-infinite
quiet-nan
signaling-nan
positive-normal
negative-normal
positive-subnormal
negative-subnormal
positive-zero
negative-zero
unclassified

### Math Constants

Common constants, using 'define-constant'. As such they must be textually included.

#### Usage

`(include "mathh-constants")`

E
e
1/E
1/e
E^2
e^2
E^PI/4
e^(pi/4)
LOG2E
log2(e)
LOG10E
log10(e)
LN2
log(2)
LN3
ln(3)
LNPI
ln(pi)
LN10
log(10)
1/LN2
1/ln(2)
1/LN10
1/ln(10)
PI
pi
PI/2
pi/2
PI/4
pi/4
1/PI
1/pi
2/PI
2/pi
2/SQRTPI
2/sqrt(pi)
SQRTPI
sqrt(pi)
PI^2
pi^2
DEGREE
pi/180
SQRT2
sqrt(2)
1/SQRT2
1/sqrt(2)
SQRT3
sqrt(3)
SQRT5
sqrt(5)
SQRT10
sqrt(10)
CUBERT2
cubert(2)
CUBERT3
cubert(3)
4THRT2
fourthrt(2)
GAMMA1/2
gamma(1/2)
GAMMA1/3
gamma(1/3)
GAMMA2/3
gamma(2/3)
PHI
phi
LNPHI
ln(phi)
1/LNPHI
1/ln(phi)
EULER
euler
E^EULER
e^euler
SIN1
sin(1)
COS1
cos(1)
ZETA3
theta(3

## Notes

• The C library call gamma is deprecated in favor of tgamma but not available yet on some platforms, so we use gamma where necessary.
• Some library calls that are not supplied by the platform have rough implementations provided anyway. See Bugs and Limitations.
• The general naming convention is to use the C library call name as the Scheme name. But there are exceptions:
fmod
fpmod (Should be in Chicken library?)
j0
bessel-j0 (Prefixed to distinguish the names from common variables)
j1
bessel-j1
jn
bessel-jn
y0
bessel-y0
y1
bessel-y1
yn
bessel-yn

## Bugs and Limitations

• CHICKEN_INCLUDE_PATH must at least state the value of the (repository-path) to include mathh-constants.scm.
• The types integer & real refer to the Chicken "core" concept of a number. Support for the full numeric tower is not provided.
• Windows does not provide library calls lgamma, gamma, acosh, asinh, atanh, log2, log1p, erf, erfc, scalbn, cbrt & signbit. Usable versions of log2, log1p, erf, erfc, scalbn & signbit are provided anyway.
• FreeBSD does not provide the library call log2. Usable version of log2 is provided anyway.
• The fpclass quiet-nan is only distinguished on Windows.

Kon Lovett

John Cowan

## Version history

3.0.0 ; Removed copy of mathh-constants.scm to (chicken-home). Ticket #1327
2.2.6 ; better argvector chicken test
2.2.5 ; argvector chicken support
2.2.4 ;
2.2.3 ; Fix for ticket #630
2.2.2 ; mathh-constants.scm copied to Chicken Repository. Produces shared+static object files.
2.2.1
Better no-install support.
2.2.0
Added acosh, asinh, atanh, erf & erfc. Includes <sunmath.h> on Sun platform for log2.
2.1.0
Added signbit, copysign, nextafter & cbrt.
2.0.0
Chicken 4 release. fpclass and fpclassify are now part of the mathh extension.