function sinc,x ;+ ; This idl function calculates the function sinc(x) = sin(x)/x. ; ( Beware: some authors define sinc(x) = sin(Pi x)/(Pi x) ) ; sinc(0)=1, but you cannot calculate this directly as sin(0)/0. ; This routine uses the power series ; sin(x) / x = 1-(x^2)/3! + (x^4)/5! - (x^6)/7! for small values of x ; This function only works for scalars at the moment ; INPUT, x OUTPUT: s ; Written by: Hugh Pumphrey, Edinburgh ;- if abs(x) gt 0.1 then begin s=sin(x)/x ; Use obvious formula if |x| > 0.1 endif else begin j=0 s=x*0+1.0 ;make s double if x is double term=s ;term same type as s ;; Calculate power series - stop after 20 terms or if term gets ;; very small while j lt 20 and abs(term) gt 1.e-12 do begin j=j+2 term=-1.0*term*x*x/(j*(j+1)) s=s+term endwhile endelse return,s end
IDL> .run sincwill inform you that it has compiled the function successfully.
IDL> print,sinc(0.05) 0.999583