Next: , Previous: , Up: Top   [Contents]


54 rational

%--------------------------------------------------%
% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
%--------------------------------------------------%
% Copyright (C) 1997-1998, 2003-2006 The University of Melbourne.
% This file may only be copied under the terms of the GNU Library General
% Public License - see the file COPYING.LIB in the Mercury distribution.
%--------------------------------------------------%
% 
% File: rational.m.
% Authors: aet Apr 1998. (with plagiarism from rat.m)
% Stability: high.
% 
% Implements a rational number type and a set of basic operations on
% rational numbers.
% 
%--------------------------------------------------%
%--------------------------------------------------%

:- module rational.
:- interface.

:- import_module integer.

%--------------------------------------------------%

:- type rational.

:- pred '<'(rational::in, rational::in) is semidet.

:- pred '>'(rational::in, rational::in) is semidet.

:- pred '=<'(rational::in, rational::in) is semidet.

:- pred '>='(rational::in, rational::in) is semidet.

:- func rational.rational(int) = rational.

:- func rational.rational(int, int) = rational.

:- func rational.from_integer(integer) = rational.

:- func rational.from_integers(integer, integer) = rational.

% :- func float(rational) = float.

:- func '+'(rational) = rational.

:- func '-'(rational) = rational.

:- func rational + rational = rational.

:- func rational - rational = rational.

:- func rational * rational = rational.

:- func rational / rational = rational.

:- func rational.numer(rational) = integer.

:- func rational.denom(rational) = integer.

:- func rational.abs(rational) = rational.

:- func rational.reciprocal(rational) = rational.

:- func rational.one = rational.

:- func rational.zero = rational.

%--------------------------------------------------%
%--------------------------------------------------%