C+ C NAME: C GaussLookup C PURPOSE: C Calculates exp(-x*x-y*y) using lookup table C CATEGORY: C Math C CALLING SEQUENCE: function GaussLookup(X,Y) C INPUTS: C X real X-coordinate C Y real Y-coordinate C OUTPUTS: C F real fnc value C CALLS: C FLINT C SEE ALSO: C CosLookup, SinLookup C MODIFICATION HISTORY: C SEP-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu) C- real X real Y parameter (N = 1000) parameter (dA = 10.0/N) real F(0:N,0:N) integer ND(2) real PP(2) logical bInit /.TRUE./ save bInit, ND, F if (bInit) then ! Set up lookup table ND(1) = N+1 ND(2) = N+1 A = dA*dA do J=0,N J2 = J*J do I=0,N I2 = I*I F(I,J) = exp(-A*(I2+J2)) end do end do bInit = .FALSE. end if AX = abs(X)/dA AY = abs(Y)/dA if (AX .le. N .and. AY .le. N) then PP(1) = 1+AX PP(2) = 1+AY GaussLookup = FLINT(2,ND,F,PP,0.0) else GaussLookup = 0.0 end if return end