You are looking at historical revision 42925 of this page. It may differ significantly from its current revision.

mathh

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 ; fixnum. : P2 ; integer. : N, M, N1, N2 ; float.

Usage

(import "mathh")

bessel-j0

bessel-j1

bessel-jn

bessel-jn

bessel-y0

bessel-y1

bessel-yn

[procedure] (bessel-j0 N) -> float
[procedure] (bessel-j1 N) -> float
[procedure] (bessel-jn O N) -> float
[procedure] (bessel-y0 N) -> float
[procedure] (bessel-y1 N) -> float
[procedure] (bessel-yn O N) -> float

cosh

[procedure] (cosh N) -> float

sinh

[procedure] (sinh N) -> float

tanh

[procedure] (tanh N) -> float

acosh

[procedure] (acosh N) -> float

asinh

[procedure] (asinh N) -> float

atanh

[procedure] (atanh N) -> float

hypot

[procedure] (hypot N1 N2) -> float

gamma

[procedure] (gamma N) -> float

lgamma

[procedure] (lgamma N) -> float

erf

[procedure] (erf N) -> float

erfc

[procedure] (erfc N) -> float

log10

[procedure] (log10 N) -> float

log2

[procedure] (log2 N) -> float

log1p

[procedure] (log1p N) -> float

log-with-base

log/base

[procedure] (log-with-base B) -> (float -> float)
[procedure] (log/base B) -> (float -> float)

Returns a function for the base B logarithm.

ldexp

[procedure] (ldexp N P2) -> float

scalbn

[procedure] (scalbn N P2) -> float

cbrt

[procedure] (cbrt N) -> float

nextafter

[procedure] (nextafter N M) -> float

Returns the next N in the direction of M.

fpmod

[procedure] (fpmod N M) -> float

Returns the modulus of N for M.

modf

modf*

[procedure] (modf N) -> float float
[procedure] (modf* N) -> integer float

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

frexp

[procedure] (frexp N) -> float float

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

signbit

[procedure] (signbit N) -> boolean

Returns #t when negative, #f otherwise.

copysign

[procedure] (copysign N M) -> float

Returns N with same sign as M.

fpclassify

[procedure] (fpclassify N) -> symbol

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

infinite
nan
normal
subnormal
zero
unclassified

fpclass

[procedure] (fpclass N) -> symbol

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

Notes

fmod
fpmod
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

Math Constants (Module)

Usage

(import mathh-consts)

Constants

These are all float.

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)

Math Constants (Include)

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

Usage

(include "mathh-constants")

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)

Miscellaneous Math Functions

Note that unlike mathh the domain & range are number, not float.

Usage

(import misc-math-utils)

log-with-base

log/base

[procedure] (log-with-base B) -> (real -> real)
[procedure] (log/base B) -> (real -> real)

Returns a function for the base B logarithm.

simple-interest

[procedure] (simple-interest RATE TIME [PRIN]) -> number

The accumulation function, the principle is assumed 1. Returns the simple interest for the RATE over TIME.

RATE ; number ; interest rate
TIME ; number ; time period to cover
PRIN ; number ; principle, default 1

compound-interest

[procedure] (compound-interest RATE FREQ TIME [PRIN]) -> number

The accumulation function, the principle is assumed 1. Returns the compound interest for the RATE, applied with FREQ, over TIME.

RATE ; number ; interest rate
FREQ ; number ; compounding frequency
TIME ; number ; time period to cover
PRIN ; number ; principle, default 1
(compound-interest 0.043 4 6 1500)
;=> 1938.84 ;rounded to 2 places

fibonacci

[procedure] (fibonacci N) -> number

Returns fibonacci of N.

fibonacci*

[procedure] (fibonacci* N) -> number

Returns an approximate fibonacci of N.

binomial

[procedure] (binomial N1 N2) -> integer

Returns the Binomial in N1 to N2.

: N1 ; integer ; : N2 ; integer ;

cross-ratio

[procedure] (cross-ratio N1 N2 N3 N4) -> number

Returns the Cross-ratio of N1, N2 and N3, N4.

: N1 ; number ; : N2 ; number ; : N3 ; number ; : N4 ; number ;

square

[procedure] (square N) -> number

cube

[procedure] (cube N) -> number

average

[procedure] (average N1 N2 ...) -> number
[procedure] (average NUMS) -> number

: N1 ; number ; : N1 ; number ;

: NUMS ; (list-of number) ;

least-squares

[procedure] (least-squares PNTS) -> number number

Returns b & e such that y ~= b * x + e.

: PNTS ; (list-of (pair number number)) ; list of x,y pairs

trapezoid

[procedure] (trapezoid F N1 N2) -> (fixnum -> number)

Returns a function to calculate the area under F between N1 & N2 using the Trapezoid Rule. The function takes the number of estimations as an argument, larger for a "better" result.

: F ; (number -> number) ; : N1 ; number ; : N2 ; number ;

factorial

factorial-

factorial+

[procedure] (factorial N) -> number
[procedure] (factorial- N1 FALL) -> number
[procedure] (factorial+ N1 RISE) -> number

: N ; integer ; : FALL : number ; falling factorial : RISE : number ; rising factorial

harmonic

[procedure] (harmonic N) -> number

Result of Harmonic series expansion to N terms.

: N ; integer ;

big-pi

[syntax] (big-pi F N1 N2) -> number

Product of F in N1 to N2.

: F ; (number -> number) ; : N1 ; number ; : N2 ; number ;

big-sigma

[syntax] (big-sigma F N1 N2) -> number

Sum of F in N1 to N2.

: F ; (number -> number) ; : N1 ; number ; : N2 ; number ;

Miscellaneous Vector Math Functions

Usage

(import misc-vector-math-utils)

absolute-magnitude

[procedure] (absolute-magnitude NUMVEC) -> number
NUMVEC
(vector-of number) ; .

cosine-similarity

[procedure] (cosine-similarity NUMVEC1 NUMVEC2) -> number
NUMVEC1
(vector-of number) ; .
NUMVEC2
(vector-of number) ; .

Must be same vector-length.

vector-product

[procedure] (vector-product NUMVEC1 NUMVEC2 [NUMVEC...]) -> number
NUMVEC#
(vector-of number) ; .

Must be same vector-length.

vector-sum

[procedure] (vector-sum NUMVEC1 NUMVEC2 [NUMVEC...]) -> number
NUMVEC#
(vector-of number) ; .

Must be same vector-length.

dot-product

[procedure] (dot-product NUMVEC1 NUMVEC2) -> number
NUMVEC1
(vector-of number) ; .
NUMVEC2
(vector-of number) ; .

Must be same vector-length.

cross-product

[procedure] (cross-product NUMVEC1 NUMVEC2) -> (or number (vector-of number))
NUMVEC1
(vector-of number) ; .
NUMVEC2
(vector-of number) ; .

Must be same vector-length.

Only defined for a vector-length of (0 1 2), returning a number, and (3 4 8), returning a (vector-of number). All others generate an error.

Requirements

test test-utils

Bugs and Limitations

Author

Kon Lovett John Cowan

Repository

This egg is hosted on the CHICKEN Subversion repository:

https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/mathh

If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.

Version history

4.6.1
Add vector-product & vector-sum. Fix cross-product(3).
4.6.0
Add misc-vector-math-utils.
4.5.1
Fix for include source mathh-constants.scm.
4.5.0
Add log function to misc-math-utils.
4.4.0
Add interest functions to misc-math-utils.
4.3.0
Remove Windows restrictions (C2 era), assume BSD has tgamma.
4.2.3
.
4.2.2
.
4.2.1
.
4.2.0
Add modf*.
4.0.0
CHICKEN 5 release.

License

This code is in the public domain.