Changes between Version 27 and Version 28 of NumericTower


Ignore:
Timestamp:
11/03/13 14:46:57 (4 years ago)
Author:
cowan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NumericTower

    v27 v28  
    33This 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: `exactness-preserving`, `ratios`, `inexact`, and `complex`.  These refer respectively to the closure of exact numbers under rational operations (except `/`), exact non-integer values, inexact rationals, and non-real numbers. 
    44 
    5 There are therefore 16 possible numeric towers.  8 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. 
     5There 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. 
    66 
    77||`exactness-preserving`||`ratios`||`inexact`||`complex`||Description||Implementations 
    88||-||-||-||-||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||-||+||+||1||Limited-range exact and inexact real numbers||NexJ (also Java)|| 
    1011||-||+||+||+||Limited-range exact and inexact numbers||S7, Wraith|| 
    11 ||+||-||+||-||Exact integers and inexact real numbers (a good all-round compromise)||Bigloo, Scheme 9, Elk (also ISLisp)|| 
     12||+||-||+||-||Exact integers and inexact real numbers||Bigloo, Scheme 9, Elk (also ISLisp)|| 
    1213||+||-||+||+||Exact integers, inexact real numbers, and inexact complex numbers||SCM|| 
    1314||+||+||-||-||Exact rational numbers only (reasonable for some purposes, but will often run very slowly without inexact support, so unsuitable for scientific-type work)||Dream, Oaklisp, Owl Lisp|| 
    14 ||+||+||+||-||Real numbers only||Psyche, Ikarus, Rep (also Clojure)|| 
     15||+||+||+||-||Real numbers only||Psyche, Ikarus, Rep, Dfsch (also Clojure)|| 
    1516||+||+||+||+||Full numeric tower||Racket, 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)|| 
    1617 
    1718*These systems are technically exactness-preserving, but silently return the wrong answers when their arithmetic operations overflow. 
     19 
     20In my opinion, the reasonable general-purpose towers are --+- (fixnums and flonums), +-+- (fixnums, bignums, and flonums), and ++++ (full). 
    1821 
    1922See NumericTowerManisComments for Vincent Manis's comments on an earlier version of this page.