HELP RATIO Robert Duncan, July 1990
Rational numbers.
CONTENTS - (Use g to access required sections)
-- The Ratio Module
-- The Ratio Type
-- Functions on Ratios
-- The Ratio Module ---------------------------------------------------
signature Ratio
structure Ratio : Ratio
The structure -Ratio- is an autoloadable library module defining the
type of rational numbers. It is described by the following
signature:
signature Ratio = sig
eqtype ratio
exception Ratio
val ratio : int * int -> ratio
val unratio : ratio -> int * int
val numerator : ratio -> int
val denominator : ratio -> int
val zero : ratio
val one : ratio
val floor : ratio -> int
val round : ratio -> int
val intof : ratio -> int
val fracof : ratio -> ratio
val real : ratio -> real
val ~ : ratio -> ratio
val + : ratio * ratio -> ratio
val - : ratio * ratio -> ratio
val * : ratio * ratio -> ratio
val / : ratio * ratio -> ratio
val abs : ratio -> ratio
val sign : ratio -> ratio
val < : ratio * ratio -> bool
val <= : ratio * ratio -> bool
val > : ratio * ratio -> bool
val >= : ratio * ratio -> bool
val max : ratio -> ratio -> ratio
val min : ratio -> ratio -> ratio
end
-- The Ratio Type -----------------------------------------------------
eqtype ratio
The type of rational numbers. Conceptually, a rational number is a
pair of integers: the numerator and denominator. In fact, the ratio
construction function -ratio- normalises the representation by
dividing through the numerator and denominator by their greatest
common divisor. Thus there is a unique representation for any ratio
value. Furthermore, whenever the denominator of a ratio reduces to
1, the number is mapped onto its integer equivalent, so there is no
storage overhead involved in manipulating integer values as ratios.
There is no limit on the size of a ratio, but a ratio with a
denominator of 0 is invalid.
-- Functions on Ratios ------------------------------------------------
Many of the variable names in this module shadow the names of the
standard numeric operations, so you should be careful of opening the
structure at top level.
exception Ratio
val ratio (n : int, m : int) : ratio
val unratio (r : ratio) : int * int
Convert between ratios and integer pairs. The function -ratio-
returns a rational number with numerator -n- and denominator -m-;
the exception -Ratio- is raised if -m- is zero. The function
-unratio- decomposes a ratio into its numerator and denominator
parts.
The function
ratio o unratio
is the identity function on ratios, but
unratio o ratio
is not an identity function because of the normalisation performed
by the -ratio- constructor (see above).
val numerator (r : ratio) : int
val denominator (r : ratio) : int
Return the numerator and denominator parts of the ratio -r-.
val zero : ratio
val one : ratio
Useful constants:
val zero = ratio(0, 1)
val one = ratio(1, 1)
val floor (r : ratio) : int
Returns the largest integer not greater than the ratio -r-.
val round (r : ratio) : int
Rounds the ratio -r- to an integer.
val intof (r : ratio) : int
Truncates the ratio -r- to an integer.
val fracof (r : ratio) : ratio
Returns the fractional part of the ratio -r-.
val real (r : ratio) : real
Returns the real value equal to the ratio -r-. The exception
-Overflow- is raised if the result is out of range.
val ~ (r : ratio) : ratio
val (r1 : ratio) + (r2 : ratio) : ratio
val (r1 : ratio) - (r2 : ratio) : ratio
val (r1 : ratio) * (r2 : ratio) : ratio
val (r1 : ratio) / (r2 : ratio) : ratio
Standard arithmetic operators on rational numbers. As there is no
limit to the size of a ratio these operations cannot overflow, but
the exception -Div- will be raised on an attempt to divide by zero.
val abs (r : ratio) : ratio
Returns the absolute value of the ratio -r-.
val sign (r : ratio) : ratio
Returns the sign of the ratio -r-: 1 for positive, 0 for zero and ~1
for negative.
val (r1 : ratio) < (r2 : ratio) : bool
val (r1 : ratio) <= (r2 : ratio) : bool
val (r1 : ratio) > (r2 : ratio) : bool
val (r1 : ratio) >= (r2 : ratio) : bool
Standard ordering relations on rational numbers.
val max (r1 : ratio) (r2 : ratio) : ratio
Returns the greater of the ratios -r1- and -r2-.
val min (r1 : ratio) (r2 : ratio) : ratio
Returns the lesser of the ratios -r1- and -r2-.
--- C.all/pml/help/ratio
--- Copyright University of Sussex 1991. All rights reserved. ----------