Changes between Version 27 and Version 28 of NumericTower
 Timestamp:
 11/03/13 14:46:57 (4 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

NumericTower
v27 v28 3 3 This is an analysis of the R5RS provision that the full numeric tower may be subsetted. Four boolean feature settings characterize different kinds of numeric towers: `exactnesspreserving`, `ratios`, `inexact`, and `complex`. These refer respectively to the closure of exact numbers under rational operations (except `/`), exact noninteger values, inexact rationals, and nonreal numbers. 4 4 5 There are therefore 16 possible numeric towers. 8of them are known to have implementations, as shown below. I write `+` if a feature is present and `` if it is absent, and give a general description of the resulting tower and some Scheme implementations that provide it.5 There are therefore 16 possible numeric towers. 9 of them are known to have implementations, as shown below. I write `+` if a feature is present and `` if it is absent, and give a general description of the resulting tower and some Scheme implementations that provide it. 6 6 7 7 `exactnesspreserving``ratios``inexact``complex`DescriptionImplementations 8 8 A "toy" tower with bounded exact integers only (possibly appropriate where no numerical work will be done)!SigScheme* 9 +Fixnums and flonums (all arithmetic runs in essentially constant time)Plain Chicken, Shoe*, !TinyScheme*, RScheme, BDC*, XLisp*, Schemik*, VX, SXM*, Inlab, Sixx, Sizzle, Stalin (also Elisp*, C*) 9 +Fixnums and flonums (all arithmetic runs in essentially constant time)Plain Chicken, Shoe*, !TinyScheme*, RScheme, JScheme*, BDC*, XLisp*, Schemik*, VX, SXM*, Inlab, Llava, Sixx, Sizzle, Dfsch*, Stalin (also Elisp*, C*) 10 ++1Limitedrange exact and inexact real numbersNexJ (also Java) 10 11 +++Limitedrange exact and inexact numbersS7, Wraith 11 ++Exact integers and inexact real numbers (a good allround compromise)Bigloo, Scheme 9, Elk (also ISLisp)12 ++Exact integers and inexact real numbersBigloo, Scheme 9, Elk (also ISLisp) 12 13 +++Exact integers, inexact real numbers, and inexact complex numbersSCM 13 14 ++Exact rational numbers only (reasonable for some purposes, but will often run very slowly without inexact support, so unsuitable for scientifictype work)Dream, Oaklisp, Owl Lisp 14 +++Real numbers onlyPsyche, Ikarus, Rep (also Clojure)15 +++Real numbers onlyPsyche, Ikarus, Rep, Dfsch (also Clojure) 15 16 ++++Full numeric towerRacket, Gauche, MIT, Gambit, Chicken with the `numbers` egg, Scheme48/scsh, Kawa, SISC, Chibi, Guile, Chez, Vicare, Larceny, Ypsilon, Mosh, !IronScheme, STklos, KSi, UMB, Spark (also R6RS, Common Lisp, Pure) 16 17 17 18 *These systems are technically exactnesspreserving, but silently return the wrong answers when their arithmetic operations overflow. 19 20 In my opinion, the reasonable generalpurpose towers are + (fixnums and flonums), ++ (fixnums, bignums, and flonums), and ++++ (full). 18 21 19 22 See NumericTowerManisComments for Vincent Manis's comments on an earlier version of this page.