(* ----------------------------------------------------------------------------
* $Id: MASELEM.mi,v 1.3 1992/10/15 16:24:57 kredel Exp $
* ----------------------------------------------------------------------------
* This file is part of MAS.
* ----------------------------------------------------------------------------
* Copyright (c) 1989 - 1992 Universitaet Passau
* ----------------------------------------------------------------------------
* $Log: MASELEM.mi,v $
* Revision 1.3 1992/10/15 16:24:57 kredel
* Changed rcsid variable
*
* Revision 1.2 1992/02/12 17:31:54 pesch
* Moved CONST definition to the right place
*
* Revision 1.1 1992/01/22 15:10:34 kredel
* Initial revision
*
* ----------------------------------------------------------------------------
*)
IMPLEMENTATION MODULE MASELEM;
(* MAS Elementary Function Implementation Module. *)
CONST rcsidi = "$Id: MASELEM.mi,v 1.3 1992/10/15 16:24:57 kredel Exp $";
CONST copyrighti = "Copyright (c) 1989 - 1992 Universitaet Passau";
PROCEDURE MASABS(a: GAMMAINT): GAMMAINT;
(*Absolute value. a is a gamma-integer. Returns the absolute value
of a. *)
VAR b: GAMMAINT;
BEGIN
(*1*) IF a >= 0 THEN b:=a; ELSE b:=-a; END;
RETURN(b);
(*4*) END MASABS;
PROCEDURE MASEVEN(a: GAMMAINT): BOOLEAN;
(*Even. a is a gamma-integer. Returns TRUE if a is even and
FALSE otherwise. *)
VAR t: BOOLEAN;
BEGIN
(*1*) t:=TRUE;
IF (a MOD 2) <> 0 THEN t:=FALSE END;
RETURN(t);
(*4*) END MASEVEN;
PROCEDURE MASEXP(a,b: GAMMAINT): GAMMAINT;
(*Exponential function. a and b are gamma-integers, b non-negative.
Returns $a^b$, with $0^0=1$. *)
VAR CL, IL: GAMMAINT;
BEGIN
(*1*) CL:=1;
FOR IL:=1 TO b DO CL:=a*CL; END;
RETURN(CL);
(*4*) END MASEXP;
PROCEDURE MASMAX(a,b: GAMMAINT): GAMMAINT;
(*Maximum. a and b are gamma-integers. Returns the maximum of
a and b. *)
VAR c: GAMMAINT;
BEGIN
(*1*) IF a >= b THEN c:=a; ELSE c:=b; END;
RETURN(c);
(*4*) END MASMAX;
PROCEDURE MASMIN(a,b: GAMMAINT): GAMMAINT;
(*Minimum. a and b are gamma-integers. Returns the minimum
of a and b. *)
VAR c: GAMMAINT;
BEGIN
(*1*) IF a <= b THEN c:=a; ELSE c:=b; END;
RETURN(c);
(*4*) END MASMIN;
PROCEDURE MASODD(a: GAMMAINT): BOOLEAN;
(*Odd. a is a gamma-integer. Returns TRUE if a is odd and
FALSE otherwise. *)
VAR t: BOOLEAN;
BEGIN
(*1*) t:=FALSE;
IF (a MOD 2) <> 0 THEN t:=TRUE END;
RETURN(t);
(*4*) END MASODD;
PROCEDURE MASQREM(a,b: GAMMAINT; VAR q,r: GAMMAINT);
(*Quotient and remainder. a and b are gamma-integers, b non-zero.
$q=integer(a/b)$ and $r=a-b*q$. *)
BEGIN
(*1*) q:=a DIV b; r:=a-b*q; RETURN;
(*4*) END MASQREM;
PROCEDURE MASREM(a,b: GAMMAINT): GAMMAINT;
(*Remainder. a and b are gamma-integers, b non-zero.
Returns $a-b*integer(a/b)$. *)
VAR q, r: GAMMAINT;
BEGIN
(*1*) q:=a DIV b; r:=a-b*q; RETURN(r);
(*4*) END MASREM;
PROCEDURE MASSIGN(a: GAMMAINT): GAMMAINT;
(*Sign. a is a gamma-integer. Returns the sign of a. *)
VAR s: GAMMAINT;
BEGIN
(*1*) IF a > 0 THEN s:=1; ELSE
IF a < 0 THEN s:=-1; ELSE s:=0; END;
END;
RETURN(s);
(*4*) END MASSIGN;
END MASELEM.
(* -EOF- *)