mathh

  1. mathh
  2. Documentation
    1. Math Functions
      1. Usage
      2. bessel-j0
      3. bessel-j1
      4. bessel-jn
      5. bessel-jn
      6. bessel-y0
      7. bessel-y1
      8. bessel-yn
      9. cosh
      10. sinh
      11. tanh
      12. acosh
      13. asinh
      14. atanh
      15. hypot
      16. gamma
      17. lgamma
      18. erf
      19. erfc
      20. log10
      21. log2
      22. log1p
      23. log-with-base
      24. log/base
      25. ldexp
      26. scalbn
      27. cbrt
      28. nextafter
      29. fpmod
      30. modf
      31. modf*
      32. frexp
      33. signbit
      34. copysign
      35. fpclassify
      36. fpclass
    2. Notes
    3. Math Constants (Module)
      1. Usage
      2. Constants
    4. Math Constants (Include)
      1. Usage
      2. Constants
    5. Miscellaneous Math Functions
      1. Usage
      2. number->sign
      3. log-with-base
      4. log/base
      5. simple-interest
      6. compound-interest
      7. fibonacci
      8. fibonacci*
      9. binomial
      10. cross-ratio
      11. square
      12. cube
      13. average
      14. least-squares
      15. trapezoid
      16. factorial
      17. factorial-
      18. factorial+
      19. harmonic
      20. big-pi
      21. big-sigma
    6. Miscellaneous Vector Math Functions
      1. Usage
      2. absolute-magnitude
      3. cosine-similarity
      4. dot-product
      5. cross-product
      6. vector-mul
      7. vector-sum
      8. vector-div
      9. vector-dif
      10. vector-min
      11. vector-max
      12. vector-lcm
      13. vector-gcd
      14. vector<?
      15. vector=?
      16. vector>?
      17. vector<=?
      18. vector>=?
      19. vector-compare
      20. vector-apply
  3. Requirements
  4. Bugs and Limitations
  5. Author
  6. Repository
  7. Version history
  8. License

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)

number->sign

[procedure] (number->sign N) -> fixnum

Returns -1, 0, or +1 to represent the sign of the number N.

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.

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.

vector-mul

vector-sum

vector-div

vector-dif

vector-min

vector-max

vector-lcm

vector-gcd

[procedure] (vector-mul NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-sum NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-div NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-dif NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-min NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-max NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-lcm NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
[procedure] (vector-gcd NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of number)
NUMVEC#
(vector-of number) ; .

Must be same vector-length.

vector<?

vector=?

vector>?

vector<=?

vector>=?

[procedure] (vector<? NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of boolean)
[procedure] (vector=? NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of boolean)
[procedure] (vector>? NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of boolean)
[procedure] (vector<=? NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of boolean)
[procedure] (vector>=? NUMVEC1 NUMVEC2 [NUMVEC...]) -> (vector-of boolean)
NUMVEC#
(vector-of number) ; .

Must be same vector-length.

vector-compare

[procedure] (vector-compare NUMVEC1 NUMVEC2 -> (vector-of number)

Result is (vector-dif NUMVEC2 NUMVEC1).

NUMVEC1
(vector-of number) ; .
NUMVEC2
(vector-of number) ; .

Must be same vector-length.

vector-apply

[procedure] (vector-apply FUNC VEC1 VEC2 [VEC...]) -> vector
FUNC
(* * !#rest * -> *) ; .
VEC#
vector ; .

Must be same vector-length.

Requirements

test test-utils vector-lib

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.4
Add number->sign. Add test dependency.
4.6.3
Remove vector-apply numeric restriction.
4.6.2
Add vector-mul/div/sum/dif/min/max/lcm/gcd, vector</=/>/<=/>, vector-compare, vector-apply.
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.