(************************************** ** NUMBER_THEORY.sml ** sml ** ** Aleksandar Nanevski ** ** Various useful functions over ** infinite integers **************************************) signature NUMBER_THEORY = sig type int val zero : int val one : int (* should not depend on the current rounding mode *) val intervalApprox : int -> {lo : real, hi : real} (* returns positive value no matter the *) (* signs of the operands *) val gcd : int * int -> int (* return {odd=0,exp=0} on 0 *) val toOddExp : int -> {odd : int, exp : Int.int} (* raise Overflow on posInf and negInf *) (* raise Domain on NaN *) (* returns {odd=0, exp=0} on 0.0 *) val fromReal : real -> {odd : int, exp : Int.int} val approx : IEEEReal.rounding_mode -> int -> real end