MLtonIntInf - MLton Standard ML Compiler (SML Compiler)

MLton MLTONWIKIVERSION | MLtonIntInf |
Home Index

    signature MLTON_INT_INF =
       sig
          type t = IntInf.int

          val areSmall: t * t -> bool
          val gcd: t * t -> t
          val isSmall: t -> bool

          structure BigWord : WORD
          structure SmallInt : INTEGER
          datatype rep =
             Big of BigWord.word vector
           | Small of SmallInt.int
          val rep: t -> rep
          val fromRep : rep -> t
       end

MLton represents an arbitrary precision integer either as an unboxed word with the bottom bit set to 1 and the top bits representing a small signed integer, or as a pointer to a vector of words, where the first word indicates the sign and the rest are the limbs of a GnuMP big integer.

- `type t`
  the same as type `IntInf.int`.

- `areSmall (a, b)`
  returns true iff both `a` and `b` are small.

- `gcd (a, b)`
  uses the GnuMP's fast gcd implementation.

- `isSmall a`
  returns true iff `a` is small.

- `BigWord : WORD`
  representation of a big `IntInf.int` as a vector of words; on 32-bit platforms, `BigWord` is likely to be equivalent to `Word32`, and on 64-bit platforms, `BigWord` is likely to be equivalent to `Word64`.

- `SmallInt : INTEGER`
  representation of a small `IntInf.int` as a signed integer; on 32-bit platforms, `SmallInt` is likely to be equivalent to `Int32`, and on 64-bit platforms, `SmallInt` is likely to be equivalent to `Int64`.

- `datatype rep`
  the underlying representation of an `IntInf.int`.

- `rep i`
  returns the underlying representation of `i`.

- `fromRep r`
  converts from the underlying representation back to `i`. If the input is not identical to the result of `rep`, the result is undefined.

Last edited on 2009-09-11 15:13:38 by WesleyTerpstra.