Add various math/float functions whose absence was getting in my way.
authorTaylor R Campbell <campbell@mumble.net>
Mon, 3 Aug 2015 02:53:25 +0000 (02:53 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Mon, 3 Aug 2015 03:00:02 +0000 (03:00 +0000)
commit51dc119b39131a06a66c199da85b9ddb292b0cf7
tree0a2c40aef59214a3c744913e84af33796f6bf053
parenta70b248f66224916d630413865cbb8a23ec918f9
Add various math/float functions whose absence was getting in my way.

New functions:

- flo:copysign          copy sign from one value to another
- flo:nextafter         next representable floating-point number
- flo:sinh              hyperbolic trig
- flo:cosh
- flo:tanh
- flo:asinh             hyperbolic inverse trig
- flo:acosh
- flo:atanh
- flo:cbrt              cube root
- flo:erf               error function: 2/sqrt(pi) \int_0^x e^{-t^2} dt
- flo:erfc              complement: 1 - erf(x)
- flo:gamma             Gamma function: \int_0^\infty t^{x-1} e^{-t} dt
- flo:hypot             Euclidean distance: sqrt(x^2 + y^2)
- flo:j0                Bessel function of first kind, order 0
- flo:j1                "      "        "  "     "     "     1
- flo:jn                "      "        "  "     "     "     n
- flo:y0                Bessel function of second kind, order 0
- flo:y1                "      "        "  "      "     "     1
- flo:yn                "      "        "  "      "     "     n

These are all in C99 and POSIX.  For beta, incomplete Gamma, and
other such common critters, we'll have to do it ourselves.

XXX Need automatic tests.
src/microcode/configure.ac
src/microcode/flonum.c
src/runtime/fixart.scm
src/runtime/runtime.pkg