PROCEDURE FirstPosition(READONLY x : T) : CARDINAL; (* Returns the initial position where is the number "x" excluding its signal *) PROCEDURE GetSign(READONLY x : T) : Sign; (* Returns the sign of the number "x", that is, -1 if x < 0; 0 if x = 0; +1 if x > 0. *) PROCEDURE IsZero(READONLY x : T) : BOOLEAN; (* Returns TRUE iff x=0. *) PROCEDURE NumDigits(READONLY x : T) : SizeT; (* Returns the number of the digits used by x, not considering leading zeros. If x=0 then returns 1. *) PROCEDURE Sub(VAR z: T; READONLY x,y : T); (* Computes "z=x - y"; Requires |x| >= |y| *) PROCEDURE Div(VAR z : T; READONLY x,y : T; ); (* Computes "z = x DIV y", where DIV is the integer numbers division. if y=0 then returns NIL; if y>0 then returns FLOOR(x/y) if y<0 then returns CEIL(x/y). *) PROCEDURE Mod(VAR z : T; READONLY x,y : T; ); (* Computes "z = x MOD y" *) PROCEDURE FromInteger(VAR z: T; i : INTEGER); (* Writes on "z" the number whose value is given by the integer number i. *) PROCEDURE ToInteger(READONLY x : T) : INTEGER; (* Returns the integer number corresponding to the value of the first digit in the number "x". Note: This is the unique integer congruent to z mod 2^(31) *)