Changes between Version 91 and Version 92 of IR


Ignore:
Timestamp:
11/29/15 20:24:30 (10 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IR

    v91 v92  
    112112* `HerbrandInt` : Herbrand integers.  Values are unsimplified symbolic expressions.
    113113* `Real` : the mathematical real numbers
    114 * `Float[e,f]`, `e`, `f` are concrete integers, each at least 1.
    115  * IEEE754 floating point numbers
     114* `Float[e,f]`, `e`, `f` are concrete integers, each at least 1. 
     115 * IEEE754 floating point numbers.  This type includes NaNs, negative 0s, infinities, etc.
    116116* `HerbrandReal` : Herbrand real numbers.  Values are unsimplified symbolic expressions.
    117117* `Tuple[<T0, T1, ...>]`: a tuple type, the Cartesian product of `T0`, `T1`, ...
     
    193193* `neg(e)` : negative.  Argument may have any numeric type; result has same type.
    194194* `lt(e1,e2)`, `lte(e1,e2)`: less than/less than or equal to.  Arguments must have same numeric type.
    195 * `round(e)`: given a real or floating number, returns the nearest `Integer`.  The argument may be any real or floating type.  n+1/2 is rounded to ?.  (Could add a rounding mode.)
    196 * `floor(e)`: given a real or floating number, returns the greatest `Integer` less that or equal to it.
    197 * `ceil(e)`
     195* `round(e,t)`: returns value in numerical type `t` that is "closest" to the given value `e`
     196 * add argument for rounding mode?
     197 * exception if out of range?
     198* `floor(e)` : given a real or floating number, returns the greatest `Integer` less than or equal to it.
     199* `ceil(e)` : given a real or floating number, returns the least `Integer` greater than or equal to it.
    198200* `abs(e)`: given any numeric expression e, returns the absolute value; result is same type as `e`.
    199201* `pow(e,n)`: given any numeric expression e and expression `n` of any integral type, returns e to the n-th power.  `n` must evaluate to a nonnegative integer.
    200202* `herbrand(e)`: given a Real or Float value, returns the value as a `HerbrandReal`.  Given an `Integer` or `Int` value, returns the value as a `HerbrandInt`.
    201 * functions for conversation floats to reals and back.
     203* `real(e)`: given any numerical value e, returns it as a real number
     204* functions for converting floats to reals and back.
    202205* functions for converting between Ints and Integers -- or is there a subtype relation?  If so, it must respect all operations.
    203206
     
    217220* `seq_append(a1,a2)` : array obtained by concatenating two arrays.  Original array not modified.
    218221* `seq_remove(a,i)` : array obtained by removing element at position i from a.  Original array a not modified.
     222* `seq_insert(a,i,x)` : array obtained by inserting an element x at position i in a.
     223* `seq_length(a)` : returns length of array a (an `Integer`)
    219224* `bit_and(e1, e2)`, `bit_or(e1, e2)`, `bit_xor(e1, e2)`, `bit_comp(e1)` : bit-wise operations: arguments are arrays of booleans of equal length.
    220225