home *** CD-ROM | disk | FTP | other *** search
- (**************************************************
- *
- * 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.
-