C+ C NAME: C CosdLookup C PURPOSE: C Calculates cos(x) using lookup table C CATEGORY: C Math C CALLING SEQUENCE: function CosdLookup(X) C INPUTS: C X real X-coordinate C OUTPUTS: C F real cos(x) from table lookup C CALLS: C FLINT, cosd C SEE ALSO: C SinLookup, GaussLookup C MODIFICATION HISTORY: C SEP-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu) C- real X parameter (N =9000) parameter (dA=90.0/N) real F(0:N) logical bInit /.TRUE./ save bInit, F if (bInit) then ! Set up lookup table do I=0,N F(I) = cosd(dA*I) end do bInit = .FALSE. end if A = mod(mod(X,360.0)+360.0,360.0) ! Scale to [0,360] I = 1 if (A .gt. 180.0) A = 360.0-A ! cos(-x) = cos(x) if (A .gt. 90.0) then ! cos(180-x) = -cos(x) A = 180.0-A I = -1 end if ! A now is in [0,90] CosdLookup = I*FLINT(1,N+1,F,1.0+A/dA,0.0) return end