(**************************************************
*
*       Add this to your library. Ray Penley wrote
*  this when the furnished program had a bug but it
*  is still nice to have.
*
*  donated Sept,1980
***************************************************)

PROGRAM COSINE_DUMMY;
(*$I+*)
FUNCTION COSINE(X:REAL):REAL;
{+++   COSINE ROUTINE, ANGLE "X" MUST BE IN RADIANS   +++}
CONST   PI = 3.1415926536;
       J = 2;
VAR     M,N : INTEGER;
       R,S,T,U,V : REAL;
(*
       NAME COSINE
       ENTRY COSINE
*)
       FUNCTION FIX(Y,P: REAL): REAL;
       VAR     SGN : -1..1;
       BEGIN
         IF Y>0.0 THEN
           SGN := 1
         ELSE IF Y=0.0 THEN
           SGN := 0
         ELSE
           SGN := -1;
         FIX := SGN * TRUNC(ABS(Y)/P);
       END;
(*
COSINE:
*)
BEGIN
 R := 0.0;
 IF ABS(X)>PI THEN R := FIX(X,PI);
 X := X - R * PI;
 M := -1;
 N := 0;
 S := 1.0;
 T := 1.0;
 U := -X * X;
 REPEAT
   V := S;
   M := M + J; N := N + J;
   T := T*U/(M*N) ;
   S := S + T;
 UNTIL (S = V);
 IF (TRUNC(R) MOD J<>0) THEN S := -S;
 COSINE := S;
END;
(*$I-*)
begin end.