Viewing contents of file '../idllib/contrib/buie/gauss2d.pro'
;+
; NAME: 
;  gauss2d
; PURPOSE: 
;  Compute a two dimensional gaussian within an array.
; DESCRIPTION:
; CATEGORY:
;  Mathematical
; CALLING SEQUENCE:
;  pro gauss2d,nx,ny,x,y,fwhm,array
; INPUTS:
;  nx   - X size of output array
;  ny   - Y size of output array
;  x    - X location of gaussian in array
;  y    - Y location of gaussian in array
;  fwhm - Full width at half-maximum of gaussian.
; OPTIONAL INPUT PARAMETERS:
; KEYWORD INPUT PARAMETERS:
; OUTPUTS:
;  array - Result array with gaussian inserted.
; KEYWORD OUTPUT PARAMETERS:
; COMMON BLOCKS:
; SIDE EFFECTS:
; RESTRICTIONS:
; PROCEDURE:
; MODIFICATION HISTORY:
;  94/04/07, Written by Marc W. Buie, Lowell Observatory
;-
pro gauss2d,nx,ny,x,y,fwhm,array

   if badpar(nx,  [1,2,3,4,5],0,CALLER='gauss2d (nx)') then return
   if badpar(ny,  [1,2,3,4,5],0,CALLER='gauss2d (ny)') then return
   if badpar(x,   [1,2,3,4,5],0,CALLER='gauss2d (x)') then return
   if badpar(y,   [1,2,3,4,5],0,CALLER='gauss2d (y)') then return
   if badpar(fwhm,[1,2,3,4,5],0,CALLER='gauss2d (fwhm)') then return

   ehwd = fwhm/2.0/sqrt(alog(2.0))

   ix = findgen(nx)
   iy = findgen(ny)
   onex = replicate(1.0,nx)
   oney = replicate(1.0,ny)

   xarr = ((ix-x)/ehwd)^2 # oney
   yarr = onex # ((iy-y)/ehwd)^2

   rsq = xarr + yarr
   array = fltarr(nx,ny)

; Protection against underflow in exp call.
   big = where(rsq le 87.3, count)
   if count ne 0 then array[big] = exp(-rsq[big])

end