racket/collects/math/flonum.rkt
Neil Toronto e55a31480e Precise flonum tests (error usually must be <= 0.5 ulp), and prerequisite
additions/changes

* More accurate `flulp-error'

* Added `flonum->fields', `fields->flonum', `flonum->sig+exp',
  `sig+exp->flonum' (currently undocumented)

* Correctly rounded, robust `bigfloat->fl2' and `fl2'

* Correctly rounded, robust `fl+/error', `fl-/error', `fl*/error',
  `flsqr/error', `fl//error'

* Much faster but slightly less accurate fl2 ops (shamelessly stolen from
  crlibm, which is LGPL)

* Added `fl2ulp', `fl2ulp-error', `fl2?' (which detects overlap),
  `+max-fl2-subnormal.0' (which was tricky), `fl2abs'

* Added deterministic and randomized flonum op tests (against MPFR)

* Added deterministic and randomized flonum/error op tests (against MPFR)

* Added deterministic and randomized fl2 op tests (against MPFR)

* Exposed FPU tests in `math/utils' (currently undocumented)
2012-12-27 17:30:04 -07:00

41 lines
1.6 KiB
Racket

#lang racket/base
(require (for-syntax racket/base)
"private/flonum/flonum-bits.rkt"
"private/flonum/flonum-constants.rkt"
"private/flonum/flonum-functions.rkt"
"private/flonum/flonum-search.rkt"
"private/flonum/flonum-exp.rkt"
"private/flonum/flonum-log.rkt"
"private/flonum/flonum-more-functions.rkt"
"private/flonum/flonum-factorial.rkt"
"private/flonum/flonum-log1pmx.rkt"
"private/flonum/flonum-polyfun.rkt"
"private/flonum/flonum-error.rkt"
"private/flonum/expansion/expansion-base.rkt"
"private/flonum/expansion/expansion-exp.rkt"
"private/flonum/expansion/expansion-log.rkt"
"private/flonum/flvector.rkt")
(provide (all-from-out
"private/flonum/flonum-bits.rkt"
"private/flonum/flonum-constants.rkt"
"private/flonum/flonum-functions.rkt"
"private/flonum/flonum-search.rkt"
"private/flonum/flonum-exp.rkt"
"private/flonum/flonum-log.rkt"
"private/flonum/flonum-more-functions.rkt"
"private/flonum/flonum-factorial.rkt"
"private/flonum/flonum-log1pmx.rkt"
"private/flonum/flonum-polyfun.rkt"
"private/flonum/flonum-error.rkt"
"private/flonum/expansion/expansion-base.rkt"
"private/flonum/expansion/expansion-exp.rkt"
"private/flonum/expansion/expansion-log.rkt"
"private/flonum/flvector.rkt")
lg* lg/ lgprod)
(define-syntax lg* (make-rename-transformer #'fl+))
(define-syntax lg/ (make-rename-transformer #'fl-))
(define-syntax lgprod (make-rename-transformer #'flsum))