mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 05:39:18 +02:00
adding (srfi 144)
This commit is contained in:
parent
4e14c53ddb
commit
b52711cac8
5 changed files with 352 additions and 2 deletions
6
Makefile
6
Makefile
|
@ -36,7 +36,7 @@ COMPILED_LIBS = $(CHIBI_COMPILED_LIBS) $(CHIBI_IO_COMPILED_LIBS) \
|
||||||
$(EXTRA_COMPILED_LIBS) \
|
$(EXTRA_COMPILED_LIBS) \
|
||||||
lib/srfi/18/threads$(SO) lib/srfi/27/rand$(SO) lib/srfi/142/bit$(SO) \
|
lib/srfi/18/threads$(SO) lib/srfi/27/rand$(SO) lib/srfi/142/bit$(SO) \
|
||||||
lib/srfi/39/param$(SO) lib/srfi/69/hash$(SO) lib/srfi/95/qsort$(SO) \
|
lib/srfi/39/param$(SO) lib/srfi/69/hash$(SO) lib/srfi/95/qsort$(SO) \
|
||||||
lib/srfi/98/env$(SO) lib/scheme/time$(SO)
|
lib/srfi/98/env$(SO) lib/srfi/144/math$(SO) lib/scheme/time$(SO)
|
||||||
|
|
||||||
BASE_INCLUDES = include/chibi/sexp.h include/chibi/features.h include/chibi/install.h include/chibi/bignum.h
|
BASE_INCLUDES = include/chibi/sexp.h include/chibi/features.h include/chibi/install.h include/chibi/bignum.h
|
||||||
INCLUDES = $(BASE_INCLUDES) include/chibi/eval.h include/chibi/gc_heap.h
|
INCLUDES = $(BASE_INCLUDES) include/chibi/eval.h include/chibi/gc_heap.h
|
||||||
|
@ -317,7 +317,7 @@ install-base: all
|
||||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/chibi/io/
|
$(MKDIR) $(DESTDIR)$(BINMODDIR)/chibi/io/
|
||||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/chibi/optimize/
|
$(MKDIR) $(DESTDIR)$(BINMODDIR)/chibi/optimize/
|
||||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/scheme/
|
$(MKDIR) $(DESTDIR)$(BINMODDIR)/scheme/
|
||||||
$(MKDIR) $(DESTDIR)$(BINMODDIR)/srfi/18 $(DESTDIR)$(BINMODDIR)/srfi/27 $(DESTDIR)$(BINMODDIR)/srfi/142 $(DESTDIR)$(BINMODDIR)/srfi/39 $(DESTDIR)$(BINMODDIR)/srfi/69 $(DESTDIR)$(BINMODDIR)/srfi/95 $(DESTDIR)$(BINMODDIR)/srfi/98
|
$(MKDIR) $(DESTDIR)$(BINMODDIR)/srfi/18 $(DESTDIR)$(BINMODDIR)/srfi/27 $(DESTDIR)$(BINMODDIR)/srfi/142 $(DESTDIR)$(BINMODDIR)/srfi/39 $(DESTDIR)$(BINMODDIR)/srfi/69 $(DESTDIR)$(BINMODDIR)/srfi/95 $(DESTDIR)$(BINMODDIR)/srfi/98 $(DESTDIR)$(BINMODDIR)/srfi/144
|
||||||
$(INSTALL_EXE) -m0755 $(CHIBI_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/
|
$(INSTALL_EXE) -m0755 $(CHIBI_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/
|
||||||
$(INSTALL_EXE) -m0755 $(CHIBI_CRYPTO_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/crypto/
|
$(INSTALL_EXE) -m0755 $(CHIBI_CRYPTO_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/crypto/
|
||||||
$(INSTALL_EXE) -m0755 $(CHIBI_IO_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/io/
|
$(INSTALL_EXE) -m0755 $(CHIBI_IO_COMPILED_LIBS) $(DESTDIR)$(BINMODDIR)/chibi/io/
|
||||||
|
@ -330,6 +330,7 @@ install-base: all
|
||||||
$(INSTALL_EXE) -m0755 lib/srfi/95/qsort$(SO) $(DESTDIR)$(BINMODDIR)/srfi/95
|
$(INSTALL_EXE) -m0755 lib/srfi/95/qsort$(SO) $(DESTDIR)$(BINMODDIR)/srfi/95
|
||||||
$(INSTALL_EXE) -m0755 lib/srfi/98/env$(SO) $(DESTDIR)$(BINMODDIR)/srfi/98
|
$(INSTALL_EXE) -m0755 lib/srfi/98/env$(SO) $(DESTDIR)$(BINMODDIR)/srfi/98
|
||||||
$(INSTALL_EXE) -m0755 lib/srfi/142/bit$(SO) $(DESTDIR)$(BINMODDIR)/srfi/142
|
$(INSTALL_EXE) -m0755 lib/srfi/142/bit$(SO) $(DESTDIR)$(BINMODDIR)/srfi/142
|
||||||
|
$(INSTALL_EXE) -m0755 lib/srfi/144/math$(SO) $(DESTDIR)$(BINMODDIR)/srfi/144
|
||||||
$(MKDIR) $(DESTDIR)$(INCDIR)
|
$(MKDIR) $(DESTDIR)$(INCDIR)
|
||||||
$(INSTALL) -m0644 $(INCLUDES) $(DESTDIR)$(INCDIR)/
|
$(INSTALL) -m0644 $(INCLUDES) $(DESTDIR)$(INCDIR)/
|
||||||
$(MKDIR) $(DESTDIR)$(LIBDIR)
|
$(MKDIR) $(DESTDIR)$(LIBDIR)
|
||||||
|
@ -403,6 +404,7 @@ uninstall:
|
||||||
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/99/records $(DESTDIR)$(BINMODDIR)/srfi/99/records
|
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/99/records $(DESTDIR)$(BINMODDIR)/srfi/99/records
|
||||||
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/99 $(DESTDIR)$(BINMODDIR)/srfi/99
|
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/99 $(DESTDIR)$(BINMODDIR)/srfi/99
|
||||||
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/142 $(DESTDIR)$(BINMODDIR)/srfi/142
|
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/142 $(DESTDIR)$(BINMODDIR)/srfi/142
|
||||||
|
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi/144 $(DESTDIR)$(BINMODDIR)/srfi/144
|
||||||
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi $(DESTDIR)$(BINMODDIR)/srfi
|
-$(RMDIR) $(DESTDIR)$(MODDIR)/srfi $(DESTDIR)$(BINMODDIR)/srfi
|
||||||
-$(RMDIR) $(DESTDIR)$(MODDIR) $(DESTDIR)$(BINMODDIR)
|
-$(RMDIR) $(DESTDIR)$(MODDIR) $(DESTDIR)$(BINMODDIR)
|
||||||
-$(RM) $(DESTDIR)$(MANDIR)/chibi-scheme.1 $(DESTDIR)$(MANDIR)/chibi-ffi.1 $(DESTDIR)$(MANDIR)/chibi-doc.1
|
-$(RM) $(DESTDIR)$(MANDIR)/chibi-scheme.1 $(DESTDIR)$(MANDIR)/chibi-ffi.1 $(DESTDIR)$(MANDIR)/chibi-doc.1
|
||||||
|
|
53
lib/srfi/144.sld
Normal file
53
lib/srfi/144.sld
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
(define-library (srfi 144)
|
||||||
|
(import (chibi)
|
||||||
|
(rename (srfi 141)
|
||||||
|
(floor/ flfloor/)
|
||||||
|
(floor-quotient flfloor-quotient)
|
||||||
|
(floor-remainder flfloor-remainder)
|
||||||
|
(ceiling/ flceiling/)
|
||||||
|
(ceiling-quotient flceiling-quotient)
|
||||||
|
(ceiling-remainder flceiling-remainder)
|
||||||
|
(truncate/ fltruncate/)
|
||||||
|
(truncate-quotient fltruncate-quotient)
|
||||||
|
(truncate-remainder fltruncate-remainder)
|
||||||
|
(round/ flround/)
|
||||||
|
(round-quotient flround-quotient)
|
||||||
|
(round-remainder flround-remainder)
|
||||||
|
(euclidean/ fleuclidean/)
|
||||||
|
(euclidean-quotient fleuclidean-quotient)
|
||||||
|
(euclidean-remainder fleuclidean-remainder)
|
||||||
|
(balanced/ flbalanced/)
|
||||||
|
(balanced-quotient flbalanced-quotient)
|
||||||
|
(balanced-remainder flbalanced-remainder)))
|
||||||
|
(export
|
||||||
|
fl-e fl-e-2 fl-log2-e fl-log10-e fl-log-2 fl-log-10 fl-pi
|
||||||
|
fl-1/pi fl-2/pi fl-pi/2 fl-pi/4 fl-sqrt-pi fl-2/sqrt-pi
|
||||||
|
fl-sqrt-2 fl-sqrt-3 fl-sqrt-5 fl-sqrt-10 fl-1/sqrt-2
|
||||||
|
fl-cbrt-2 fl-cbrt-3 fl-4thrt-2 fl-phi fl-log-phi fl-1/log-phi
|
||||||
|
fl-euler fl-e-euler fl-sin-1 fl-cos-1 fl-greatest fl-least
|
||||||
|
fl-integer-exponent-zero fl-integer-exponent-nan fl-fast-+*
|
||||||
|
|
||||||
|
flonum? fl= fl< fl> fl<= fl>= flodd? fleven?
|
||||||
|
flunordered? flinteger? flzero? flpositive? flnegative?
|
||||||
|
|
||||||
|
fl+ fl- fl* fl/ fl+* flmax flmin flabsdiff
|
||||||
|
flnumerator fldenominator
|
||||||
|
|
||||||
|
fladjacent flcopysign flsgn make-flonum flinteger-fraction
|
||||||
|
flexponent flinteger-exponent flnormalized-fraction-exponent
|
||||||
|
sign-bit flfinite? flinfinite? flnan? flnormalized? fldenormalized?
|
||||||
|
flabs flposdiff flfloor flceiling flround fltruncate
|
||||||
|
|
||||||
|
flexp flexp2 flexp-1 flsquare flsqrt flcbrt flhypot flexpt fllog fllog1+
|
||||||
|
fllog2 fllog10 flsin flcos fltan flasin flacos flatan
|
||||||
|
flsinh flcosh fltanh flasinh flacosh flatanh flremquo
|
||||||
|
flgamma flloggamma flfirst-bessel flsecond-bessel flerf flerfc
|
||||||
|
|
||||||
|
flfloor/ flfloor-quotient flfloor-remainder
|
||||||
|
flceiling/ flceiling-quotient flceiling-remainder
|
||||||
|
fltruncate/ fltruncate-quotient fltruncate-remainder
|
||||||
|
flround/ flround-quotient flround-remainder
|
||||||
|
fleuclidean/ fleuclidean-quotient fleuclidean-remainder
|
||||||
|
flbalanced/ flbalanced-quotient flbalanced-remainder)
|
||||||
|
(include-shared "144/math")
|
||||||
|
(include "144/flonum.scm"))
|
47
lib/srfi/144/flonum.scm
Normal file
47
lib/srfi/144/flonum.scm
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
|
||||||
|
(define fl= =)
|
||||||
|
(define fl< <)
|
||||||
|
(define fl> >)
|
||||||
|
(define fl<= <=)
|
||||||
|
(define fl>= >=)
|
||||||
|
(define flodd? odd?)
|
||||||
|
(define fleven? even?)
|
||||||
|
(define (flunordered? x y) (or (flnan? x) (flnan? y)))
|
||||||
|
(define flinteger? integer?)
|
||||||
|
(define flzero? zero?)
|
||||||
|
(define flpositive? positive?)
|
||||||
|
(define flnegative? negative?)
|
||||||
|
|
||||||
|
(define fl+ +)
|
||||||
|
(define fl- -)
|
||||||
|
(define fl* *)
|
||||||
|
(define fl/ /)
|
||||||
|
(define flmax max)
|
||||||
|
(define flmin min)
|
||||||
|
(define (flabsdiff x y) (abs (- x y)))
|
||||||
|
(define flnumerator numerator)
|
||||||
|
(define fldenominator denominator)
|
||||||
|
|
||||||
|
(define (flsquare x) (fl* x x))
|
||||||
|
|
||||||
|
(define (flsgn x) (flcopysign 1.0 x))
|
||||||
|
|
||||||
|
(define (fldenormalized? x)
|
||||||
|
(eqv? FP_SUBNORMAL (fpclassify x)))
|
||||||
|
|
||||||
|
(define (flatan x . o)
|
||||||
|
(if (pair? o)
|
||||||
|
(flatan2 x (car o))
|
||||||
|
(flatan1 x)))
|
||||||
|
|
||||||
|
(define (flinteger-fraction x)
|
||||||
|
(let ((ls (modf x))) (values (cadr ls) (car ls))))
|
||||||
|
|
||||||
|
(define (flnormalized-fraction-exponent x)
|
||||||
|
(apply values (frexp x)))
|
||||||
|
|
||||||
|
(define (flremquo x y)
|
||||||
|
(apply values (remquo x y)))
|
||||||
|
|
||||||
|
(define (flloggamma x)
|
||||||
|
(apply values (lgamma_r x)))
|
151
lib/srfi/144/math.stub
Normal file
151
lib/srfi/144/math.stub
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
|
||||||
|
(c-system-include "math.h")
|
||||||
|
|
||||||
|
(define-c-const double
|
||||||
|
(fl-e "M_E")
|
||||||
|
(fl-e-2 "logb(2.0)")
|
||||||
|
(fl-log2-e "M_LOG2E")
|
||||||
|
(fl-log10-e "M_LOG10E")
|
||||||
|
(fl-log-2 "M_LN2")
|
||||||
|
(fl-log-10 "M_LN10")
|
||||||
|
(fl-pi "M_PI")
|
||||||
|
(fl-1/pi "M_1_PI")
|
||||||
|
(fl-2/pi "M_2_PI")
|
||||||
|
(fl-pi/2 "M_PI/2")
|
||||||
|
(fl-pi/4 "M_PI/4")
|
||||||
|
(fl-sqrt-pi "sqrt(M_PI)")
|
||||||
|
(fl-2/sqrt-pi "M_2_SQRTPI")
|
||||||
|
(fl-sqrt-2 "M_SQRT2")
|
||||||
|
(fl-sqrt-3 "sqrt(3.0)")
|
||||||
|
(fl-sqrt-5 "sqrt(5.0)")
|
||||||
|
(fl-sqrt-10 "sqrt(10.0)")
|
||||||
|
(fl-1/sqrt-2 "M_SQRT1_2")
|
||||||
|
(fl-cbrt-2 "cbrt(2.0)")
|
||||||
|
(fl-cbrt-3 "cbrt(3.0)")
|
||||||
|
(fl-4thrt-2 "pow(2.0, 0.25)")
|
||||||
|
(fl-phi "(1.0+sqrt(5.0))/2.0")
|
||||||
|
(fl-log-phi "log((1.0+sqrt(5.0))/2.0)")
|
||||||
|
(fl-1/log-phi "1.0/log((1.0+sqrt(5.0))/2.0)")
|
||||||
|
(fl-euler "0.57721566490153286060651209008240243")
|
||||||
|
(fl-e-euler "exp(0.57721566490153286060651209008240243)")
|
||||||
|
(fl-sin-1 "sin(1.0)")
|
||||||
|
(fl-cos-1 "cos(1.0)")
|
||||||
|
(fl-greatest "DBL_MAX")
|
||||||
|
(fl-least "-DBL_MAX")
|
||||||
|
(fl-integer-exponent-zero "FP_ILOGB0")
|
||||||
|
(fl-integer-exponent-nan "FP_ILOGBNAN"))
|
||||||
|
|
||||||
|
(define-c-const int
|
||||||
|
FP_SUBNORMAL)
|
||||||
|
|
||||||
|
(c-declare
|
||||||
|
"#ifndef FP_FAST_FMA
|
||||||
|
#define FP_FAST_FMA 0
|
||||||
|
#endif")
|
||||||
|
|
||||||
|
(define-c-const boolean
|
||||||
|
(fl-fast-+* FP_FAST_FMA))
|
||||||
|
|
||||||
|
(define-c double (fl+* "fma") (double double double))
|
||||||
|
|
||||||
|
;; These aren't any faster than the builtin ops. It might be
|
||||||
|
;; interesting to provide these as a way to get flonum support when
|
||||||
|
;; Chibi is compiled without flonums, but we'd want for a little extra
|
||||||
|
;; support in this case in the FFI and extending the core read/write.
|
||||||
|
;;
|
||||||
|
;; (c-declare
|
||||||
|
;; "#define fladd(x, y) ((x)+(y))
|
||||||
|
;; #define flsub(x, y) ((x)-(y))
|
||||||
|
;; #define flmul(x, y) ((x)*(y))
|
||||||
|
;; #define fldiv(x, y) ((x)/(y))
|
||||||
|
;; #define flneg(x) (-(x))
|
||||||
|
;; #define flrecip(x) (1.0/(x))
|
||||||
|
;; #define fleq(x, y) ((x)==(y))
|
||||||
|
;; #define fllt(x, y) ((x)<(y))
|
||||||
|
;; #define flle(x, y) ((x)<=(y))
|
||||||
|
;; #define flgt(x, y) ((x)>(y))
|
||||||
|
;; #define flge(x, y) ((x)>=(y))
|
||||||
|
;; #define flmax(x, y) ((x)<(y)?(y):(x))
|
||||||
|
;; #define flmin(x, y) ((x)>(y)?(y):(x))
|
||||||
|
;; ")
|
||||||
|
;; (define-c double (fl+ "fladd") (double double))
|
||||||
|
;; (define-c double (fl- "flsub") (double double))
|
||||||
|
;; (define-c double (fl* "flmul") (double double))
|
||||||
|
;; (define-c double (fl/ "fldiv") (double double))
|
||||||
|
;; (define-c double flneg (double))
|
||||||
|
;; (define-c double flrecip (double))
|
||||||
|
;; (define-c boolean (fl= "fleq") (double double))
|
||||||
|
;; (define-c boolean (fl< "fllt") (double double))
|
||||||
|
;; (define-c boolean (fl<= "flle") (double double))
|
||||||
|
;; (define-c boolean (fl> "flgt") (double double))
|
||||||
|
;; (define-c boolean (fl>= "flge") (double double))
|
||||||
|
;; (define-c double flmax (double double))
|
||||||
|
;; (define-c double flmin (double double))
|
||||||
|
|
||||||
|
(define-c double (fladjacent "nextafter") (double double))
|
||||||
|
|
||||||
|
(define-c double (flcopysign "copysign") (double double))
|
||||||
|
|
||||||
|
(define-c double (make-flonum "ldexp") (double int))
|
||||||
|
|
||||||
|
(define-c double modf (double (result double)))
|
||||||
|
|
||||||
|
(define-c double (flexponent "logb") (double))
|
||||||
|
|
||||||
|
(define-c int (flinteger-exponent "ilogb") (double))
|
||||||
|
|
||||||
|
(define-c double frexp (double (result int)))
|
||||||
|
|
||||||
|
(define-c int (sign-bit "signbit") (double))
|
||||||
|
|
||||||
|
(define-c boolean (flfinite? "isfinite") (double))
|
||||||
|
(define-c boolean (flinfinite? "isinf") (double))
|
||||||
|
(define-c boolean (flnan? "isnan") (double))
|
||||||
|
(define-c boolean (flnormalized? "isnormal") (double))
|
||||||
|
|
||||||
|
(define-c int fpclassify (double))
|
||||||
|
|
||||||
|
(define-c double (flabs "fabs") (double))
|
||||||
|
(define-c double (flposdiff "fdim") (double double))
|
||||||
|
(define-c double (flfloor "floor") (double))
|
||||||
|
(define-c double (flceiling "ceil") (double))
|
||||||
|
(define-c double (flround "round") (double))
|
||||||
|
(define-c double (fltruncate "trunc") (double))
|
||||||
|
|
||||||
|
(define-c double (flexp "exp") (double))
|
||||||
|
(define-c double (flexp2 "exp2") (double))
|
||||||
|
(define-c double (flexp-1 "expm1") (double))
|
||||||
|
(define-c double (flsqrt "sqrt") (double))
|
||||||
|
(define-c double (flcbrt "cbrt") (double))
|
||||||
|
(define-c double (flhypot "hypot") (double double))
|
||||||
|
(define-c double (flexpt "pow") (double double))
|
||||||
|
(define-c double (fllog "log") (double))
|
||||||
|
(define-c double (fllog1+ "log1p") (double))
|
||||||
|
(define-c double (fllog2 "log2") (double))
|
||||||
|
(define-c double (fllog10 "log10") (double))
|
||||||
|
|
||||||
|
(define-c double (flsin "sin") (double))
|
||||||
|
(define-c double (flcos "cos") (double))
|
||||||
|
(define-c double (fltan "tan") (double))
|
||||||
|
(define-c double (flasin "asin") (double))
|
||||||
|
(define-c double (flacos "acos") (double))
|
||||||
|
(define-c double (flatan1 "atan") (double))
|
||||||
|
(define-c double (flatan2 "atan2") (double double))
|
||||||
|
|
||||||
|
(define-c double (flsinh "sinh") (double))
|
||||||
|
(define-c double (flcosh "cosh") (double))
|
||||||
|
(define-c double (fltanh "tanh") (double))
|
||||||
|
(define-c double (flasinh "asinh") (double))
|
||||||
|
(define-c double (flacosh "acosh") (double))
|
||||||
|
(define-c double (flatanh "atanh") (double))
|
||||||
|
|
||||||
|
(define-c double remquo (double double (result int)))
|
||||||
|
|
||||||
|
(define-c double (flgamma "tgamma") (double))
|
||||||
|
(define-c double lgamma_r (double (result int)))
|
||||||
|
|
||||||
|
(define-c double (flfirst-bessel "jn") (double int))
|
||||||
|
(define-c double (flsecond-bessel "yn") (double int))
|
||||||
|
|
||||||
|
(define-c double (flerf "erf") (double))
|
||||||
|
(define-c double (flerfc "erfc") (double))
|
97
lib/srfi/144/test.sld
Normal file
97
lib/srfi/144/test.sld
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
(define-library (srfi 144 test)
|
||||||
|
(import (scheme base) (chibi test) (srfi 144))
|
||||||
|
(export run-tests)
|
||||||
|
(begin
|
||||||
|
;; note default (current-test-epsilon) for (chibi test) test is 1e-5
|
||||||
|
(define (run-tests)
|
||||||
|
(test-begin "srfi-144: flonums")
|
||||||
|
(test 5. (fl+ 2. 3.))
|
||||||
|
(test -1. (fl- 2. 3.))
|
||||||
|
(test 6. (fl* 2. 3.))
|
||||||
|
(test 0.6666666666 (fl/ 2. 3.))
|
||||||
|
(test 10. (fl+* 2. 3. 4.))
|
||||||
|
(test 0. (fladjacent -0. 1.))
|
||||||
|
(test -0. (flcopysign 0. -1.))
|
||||||
|
(test 3. (make-flonum 3. 0))
|
||||||
|
(test 6. (make-flonum 3. 1))
|
||||||
|
(test 3072. (make-flonum 3. 10))
|
||||||
|
(call-with-values (lambda () (flinteger-fraction 12.345))
|
||||||
|
(lambda (int frac)
|
||||||
|
(test 12. int)
|
||||||
|
(test .345 frac)))
|
||||||
|
(test 0. (flexponent 1.))
|
||||||
|
(test 255. (flexponent 1e77))
|
||||||
|
(test 255 (flinteger-exponent 1e77))
|
||||||
|
(test 0 (sign-bit 0.))
|
||||||
|
(test 0 (sign-bit 1.))
|
||||||
|
(test 0 (sign-bit +inf.0))
|
||||||
|
(test 1 (sign-bit -0.))
|
||||||
|
(test 1 (sign-bit -1.))
|
||||||
|
(test 1 (sign-bit -inf.0))
|
||||||
|
(test-not (flunordered? 0. 1.))
|
||||||
|
(test-not (flunordered? 0. -inf.0))
|
||||||
|
(test-assert (flunordered? +nan.0 0.))
|
||||||
|
(test-assert (flunordered? 0. +nan.0))
|
||||||
|
(test-assert (flinteger? 42.))
|
||||||
|
(test-not (flinteger? 42.1))
|
||||||
|
(test-assert (flzero? -0.))
|
||||||
|
(test-assert (flzero? 0.))
|
||||||
|
(test-not (flzero? 0.1))
|
||||||
|
(test-not (flzero? +nan.0))
|
||||||
|
(test-assert (flpositive? 1.))
|
||||||
|
(test-assert (flpositive? +inf.0))
|
||||||
|
(test-not (flpositive? -1.))
|
||||||
|
(test-assert (flnegative? -1.))
|
||||||
|
(test-assert (flnegative? -inf.0))
|
||||||
|
(test-not (flnegative? 1.))
|
||||||
|
(test-assert (flodd? 1.))
|
||||||
|
(test-not (flodd? 2.))
|
||||||
|
(test-not (fleven? 3.))
|
||||||
|
(test-assert (fleven? 4.))
|
||||||
|
(test-assert (flfinite? 5.))
|
||||||
|
(test-assert (flinfinite? -inf.0))
|
||||||
|
(test-assert (flnan? +nan.0))
|
||||||
|
(test-assert (flnormalized? 1.))
|
||||||
|
(test-assert (fldenormalized? (fladjacent 0. +inf.0)))
|
||||||
|
(test 1. (flabsdiff 2. 3.))
|
||||||
|
(test 1. (flabsdiff 3. 2.))
|
||||||
|
(test 0. (flposdiff 2. 3.))
|
||||||
|
(test 1. (flsgn 0.))
|
||||||
|
(test -1. (flsgn -0.))
|
||||||
|
(test 1. (flexp 0.))
|
||||||
|
(test 2.718281828 (flexp 1.))
|
||||||
|
(test 8. (flexp2 3.))
|
||||||
|
(test 1.718281828 (flexp-1 1.))
|
||||||
|
(test 9. (flsquare 3.))
|
||||||
|
(test 1.414213562 (flsqrt 2.))
|
||||||
|
(test 1.259921050 (flcbrt 2.))
|
||||||
|
(test 5. (flhypot 3. 4.))
|
||||||
|
(test 81. (flexpt 3. 4.))
|
||||||
|
(test 1.098612289 (fllog 3.))
|
||||||
|
(test 0.693147186 (fllog1+ 1.))
|
||||||
|
(test 2.807354922 (fllog2 7.))
|
||||||
|
(test 10. (fllog2 1024.))
|
||||||
|
(test 3.010299957 (fllog10 1024.))
|
||||||
|
(test 0.841470985 (flsin 1.))
|
||||||
|
(test 0.540302306 (flcos -1.))
|
||||||
|
(test 1.557407725 (fltan 1.))
|
||||||
|
(test 1.570796327 (flasin 1.))
|
||||||
|
(test fl-pi (flacos -1.))
|
||||||
|
(test 0.785398163 (flatan 1.))
|
||||||
|
(test 0.463647609 (flatan 1. 2.))
|
||||||
|
(test 1.175201194 (flsinh 1.))
|
||||||
|
(test 1.543080635 (flcosh -1.))
|
||||||
|
(test 0.761594156 (fltanh 1.))
|
||||||
|
(test 0.881373587 (flasinh 1.))
|
||||||
|
(test 0. (flacosh 1.))
|
||||||
|
(test +inf.0 (flatanh 1.))
|
||||||
|
(test 24. (flgamma 5.))
|
||||||
|
(call-with-values (lambda () (flloggamma 0.1))
|
||||||
|
(lambda (res sign)
|
||||||
|
(test 64. res)
|
||||||
|
(test 1 sign)))
|
||||||
|
(test 0.440050586 (flfirst-bessel 1. 1))
|
||||||
|
(test -0.781212821 (flsecond-bessel 1. 1))
|
||||||
|
(test 0.842700793 (flerf 1.))
|
||||||
|
(test 0.157299207 (flerfc 1.))
|
||||||
|
(test-end))))
|
Loading…
Add table
Reference in a new issue