Deutsch Misc Library

This page is a listing of the entire contents of this library for IDL. This listing is the long version. Viewing the much more compact listing may be handier.

[Go Back to Main IDL Libraries Search Page]


Last modified: Thu Dec 21 21:14:35 2000.

List of Routines


Routine Descriptions

CHARLIST

[Next Routine] [List of Routines]
 NAME:
   CHARLIST
 PURPOSE:
   This program opens a file called 'charlist.dat' and then writes out lines
   0 through 255, where each line contains somthing like 'ascii  65 = "A"'.
   It is sometimes handy to have a file which contains every possible ascii
   character.
 CALLING SEQEUNCE:
   charlist

(See /host/bluemoon/usr2/idllib/deutsch/misc/charlist.pro)


CONV_MAIL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   CONV_MAIL
 PURPOSE:
   This procedure converts a VMS mail folder to a unix-compatible mail folder.
 CALLING SEQEUNCE:
   VMSMAIL> set folder mail 
   VMSMAIL> extract/all vms.mailfol 
   Call> conv_mail,searchspec'
   e.g.> conv_mail,'*.mailfol'"
 INPUT:
   SEARCHSPEC  Search specification for files to be converted.
 MODIFICATION HISTORY:
	01-AUG-95 Added properly handling on lines beginning with "From " in
		the message body.   E. Deutsch

(See /host/bluemoon/usr2/idllib/deutsch/misc/conv_mail.pro)


CRD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   CRD
 PURPOSE:
   This program reads and prints the x,y coordinates of the position of
   the mouse click in an IDL window.
 CALLING SEQEUNCE:
   crd
   crd,[/data,/normal,/device]
   crd,x,y,[/data,/normal,/device]

(See /host/bluemoon/usr2/idllib/deutsch/misc/crd.pro)


EXIST

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   EXIST
 PURPOSE:
   A very simple check to see if a file exists...
 CALLING SEQEUNCE:
   result=exist(filename)'
 INPUT:
   FILENAME  This is the filename or search spec. that should be checked.
 OUTPUT:
   RESULT    The returned result is the number of files which match the
               search spec, and 0 if no file exists.
 EXAMPLE:
   if exist('input.dat') then print,'Yes' else print,'No'
   if not exist('input.dat') then print,'Create'
   result=exist('*.hhh') & print,strn(count),' Header files available'
 NOTES:
   A search spec of multiple files uses `findfile()`.  A search for a
   a single file uses `openr` with an error trap because it is much faster.
   Unreadable files will in that case appear not to exist.
 HISTORY:
   1992-07-27 Header added to old routine  (E. W. Deutsch)
   1999-04-16 Rewritten to be faster and tidier  (E. W. Deutsch)

(See /host/bluemoon/usr2/idllib/deutsch/misc/exist.pro)


GAUSS2

[Previous Routine] [Next Routine] [List of Routines]
*NAME:  GAUSS2   
*CLASS:
    numerical function
*CATEGORY:

*PURPOSE:  TO CALCULATE A GAUSSIAN FUNCTION
 
*CALLING SEQUENCE: 
    GAUSS,X,X0,DX,YMAX,Y
 
*PARAMETERS:
    X     (REQ) (I) (0 1) (I L F D)
          required scalar or vector containing the independent variable(s)

    X0    (REQ) (I) (0)   (F D)
          required scalar giving the center of the Gaussian function
          This parameter must have the same units as X.

    DX    (REQ) (I) (0)   (F D)
          required scalar giving the one sigma width of the distribution
          This parameter must have the same units as X.

    YMAX  (REQ) (I) (0)   (F D)
          the Gaussian value at the peak of the distribution
 
    Y     (REQ) (O) (0 1) (F D)
          required output scalar or vector giving the calculated value
          of the gaussian from the expression:
          Y = YMAX * EXP (-0.5 * ((X-X0)/DX)^2)
 
*EXAMPLES:
    To calculate a gaussian with center at 1545 A, sigma of 2 A, using the
    wavelength scale derived from an IUE spectrum, with amplitude 1.0,
 
     GAUSS,WAVE,1545.,2.,1.0,Y

*SYSTEM VARIABLES USED:
     None

*INTERACTIVE INPUT:
     None

*SUBROUTINES CALLED:
     PARCHECK

*FILES USED:
     None

*SIDE EFFECTS:
     None

*RESTRICTIONS:
     None

*NOTES:
    Values for which (X-X0)/DX > 9 are set to zero.
    If DX = 0, the delta function is returned.
 
*PROCEDURE: 
    GAUSS is similiar to Bevingtons program PGAUSS (p.45)

*MODIFICATION HISTORY:
    Aug 19 1979  I. Ahmad  initial program
    Jul  7 1984  RWT GSFC  updated documentation
    Sep 25 1984  RWT GSFC  changed limit from 12 sigma to 9 sigma due to
                           problems in WFIT. Also compiles PCHECK.
    Apr 13 1987  RWT GSFC  add PARCHECK
    Aug 19 1987  RWT GSFC  add procedure call listing
    Mar  9 1988  CAG GSFC  add VAX RDAF-style prolog
    Nov 26 1990  JKF ACC   copied to GHRS DAF

(See /host/bluemoon/usr2/idllib/deutsch/misc/gauss2.pro)


GETDEFVAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   GETDEFVAL
 PURPOSE:
   This procedure returns the default value for the supplied keyword, first
   checking IDL_PRFDEF and then IDL_SYSDEF.
 CALLING SEQEUNCE:
   GetDefVal,value,keyword

(See /host/bluemoon/usr2/idllib/deutsch/misc/getdefval.pro)


GETSTRIP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   GETSTRIP
 PURPOSE:
   This procedure returns a profile through an image at any angle or position.
   First the theoretical line is calculated given the center, angle and length
   in pixels.  Then pixel in the profile is bilinearly interpolated from the
   pixels in the image.
 CALLING SEQEUNCE:
   result = GetStrip(img,xcent,ycent,angle,length,xvect,yvect)
 INPUT:
   IMG       This is the 2D image array from which the profile is to be taken.
   XCENT     This is the X coordinate of the center of the profile.  It does
               not need to be an exact integer.  nn.0 references the exact
               X center of a pixel.
   YCENT     This is the Y coordinate of the center of the profile.  It does
               not need to be an exact integer.  nn.0 references the exact
               Y center of a pixel.
   ANGLE     This is the angle of the profile in degrees counterclockwise
               from the positive X axis.
   LENGTH    This is the length in elements (and pixels) of the returned
               profile.  Therefore no matter what the angle is, the returned
               vector will have LENGTH elements and is a profile with a
               physical length of LENGTH image pixels.
 OUTPUT:
   result       The returned profile array.
 OPTIONAL OUTPUT:
   XVECT     This variable returns the array of positions of each profile
               pixel.  These returned values are floating.  This returned
               vector is especially useful for averaging along wide strips.
   YVECT     This variable returns the array of positions of each profile
               pixel.  These returned values are floating.
 EXAMPLE:    In a North Up and East Left image of size 512x512 and pixelsize
               of 1.5", the following call:
                 IDL> TMP=GetStrip(img,256,256,45,51)
               returns a 51 element vector where tmp(25)=img(256,256) and
               elements less than 25 are to the Southeast and elements greater
               than 25 increase toward the Northwest.  The pixel size of the
               strip TMP is 1.5" also.
                 IDL> tmp=GetStrip(img,256,256,0,51)
               is equivalent to...
                 IDL> tmp=img(256-25:256+25,256)
 HISTORY:
   27-JUL-92 Added header and spiffed up this procedure.   (E. Deutsch)
   12-NOV-92 Removed extra +.5's inside the interpolate().  (E. Deutsch)

(See /host/bluemoon/usr2/idllib/deutsch/misc/getstrip.pro)


HDRLOG

[Previous Routine] [Next Routine] [List of Routines]
 *****************************************************************************
 ******* PROCEDURE: HDRLOG
 *****************************************************************************
 *** DESCRIPTION:
 ***	  This procedure takes a group of files in the SDAS format and creates
 ***	a .LOG file of concatenated headers in the exact same format as the
 ***	FITSLOG program does with FITS tapes.
 *** INPUT:
 ***	SRCHPATH  The path specification and filter where to search for the
 ***		header files.  MUST include the .xxH extender!
 ***	LOGfile	  The output filename where the concatenated headers are put.
 *** OUTPUT:
 ***	A file of concatenated headers name LOGfile
 ***	All passed variables remain unchanged
 *** COMMON blocks:
 ***   None
 *** Other Procedures/Functions Called:
 ***   None
 *** NOTES:
 ***	None
 *** HISTORY:
 ***	08-AUG-90 Version 1 adapted from olde IDL version
 *********** IDL 2.0 ************ Eric W. Deutsch ********* 08-AUG-90 ********

(See /host/bluemoon/usr2/idllib/deutsch/misc/hdrlog.pro)


IMCOMBINE

[Previous Routine] [Next Routine] [List of Routines]
  result=call_external(CLIB,'imcombine',imgcube,fimg,sz,1L)

(See /host/bluemoon/usr2/idllib/deutsch/misc/imcombine.pro)


LEGEND

[Previous Routine] [Next Routine] [List of Routines]
 Name:
	legend
 Purpose:
	This procedure makes a legend for a plot.  The legend can contain
	a mixture of symbols, linestyles, and filled polygons (usersym).
 Examples:
	The call:
		legend,['diamond','asterisk','square'],psym=[4,2,6]
	produces:
		-----------------
		|		|
		|  <> diamond	|
		|  *  asterisk	|
		|  [] square	|
		|		|
		-----------------
	Each symbol is drawn with a plots command, so they look OK.
	Other examples are given in usage.
 Usage:
	legend,items,linestyle=linestyle	; vertical legend at upper left
	legend,items,psym=psym			; ditto except using symbols
	legend,items,psym=psym,/horizontal	; horizontal format
	legend,items,psym=psym,box=0		; sans border
	legend,items,psym=psym,delimiter='='	; embed an '=' betw psym & text
	legend,items,psym=psym,margin=2		; 2-character margin
	legend,items,psym=psym,position=pos	; position of legend
	legend,items,psym=psym,number=2		; plot two symbols, not one
	legend,items,/fill,psym=[8,8,8],colors=[10,20,30]; 3 filled squares
 Inputs:
	items = text for the items in the legend, a string array.
		You can omit items if you don't want any text labels.
 Optional Inputs:
	linestyle = array of linestyle numbers
	psym = array of plot symbol numbers.  If psym(i) is negative, then a
		line connects pts for ith item.  If psym(i) = 8, then the
		procedure usersym is called with vertices define in the 
		keyword usersym.
	N. B.: Choose either linestyle, psym, neither, or both.  If neither is
		present, only the text is output.  If both linestyle and
		psym parameters are present, they both have to have the
		same number of elements, and normal plot behaviour occurs.
		By default, if psym is positive, you get one point so there is
		no connecting line.  
 Optional Keywords:
	/help = flag to print header
	/horizontal = flag to make the legend horizontal
	/vertical = flag to make the legend vertical (D=vertical)
	box = flag to include/omit box around the legend (D=include)
	delimiter = embedded character(s) between symbol and text (D=none)
	colors = array of colors for plot symbols/lines (D=!color)
	textcolors = array of colors for text (D=!color)
	margin = margin around text measured in characters and lines
	spacing = line spacing (D=bit more than character height)
	pspacing = psym spacing (D=3 characters)
	charsize = just like !p.charsize for plot labels
	position = normalized coordinates of the upper left of the legend
	number = number of plot symbols to plot or length of line (D=1)
	usersym = 2-D array of vertices, cf. usersym in IDL manual. (D=square)
	/fill = flag to fill the usersym
 Outputs:
	legend to current plot device
 Optional Output Keywords:
	corners = 4-element array, like !p.position, of the normalized
		coords for the box (even if box=0): [llx,lly,urx,ury].
		Useful for multi-column or multi-line legends, for example,
		to make a 2-column legend, you might do the following:
		  c1_items = ['diamond','asterisk','square']
		  c1_psym = [4,2,6]
		  c2_items = ['solid','dashed','dotted']
		  c2_line = [0,2,1]
		  legend,c1_items,psym=c1_psym,corners=c1,box=0
		  legend,c2_items,line=c2_line,corners=c2,box=0,pos=[c1(2),c1(3)]
		  c = [c1(0)c2(2),c1(3)>c1(3)]
		  plots,[c(0),c(0),c(2),c(2),c(0)],[c(1),c(3),c(3),c(1),c(1)],/norm
 Common blocks:
	none
 Procedure:
	If keyword help is set, call doc_library to print header.
 Restrictions:
	Here are some things that aren't implemented.
	It would be nice to allow data and device coords as well.
	An orientation keyword would allow lines at angles in the legend.
	An array of usersyms would be nice---simple change.
	An order option to interchange symbols and text might be nice.
	Somebody might like double boxes, e.g., with box = 2.
	Another feature might be a continuous bar with ticks and text.
 Side Effects:
 Modification history:
	write, 24-25 Aug 92, F K Knight (knight@ll.mit.edu)
	allow omission of items or omission of both psym and linestyle, add 
	  corners keyword to facilitate multi-column legends, 26 Aug 92, FKK

(See /host/bluemoon/usr2/idllib/deutsch/misc/legend.pro)


LINEBAR

[Previous Routine] [Next Routine] [List of Routines]
91apr26-if tiny<0. then make linebar ticks go up (case of gal absorb)
	-if zflag is negative or zero hold the z-value printing
	   (on the right side of the plots)
if tiny then csize = 0.50 else csize = 0.65

(See /host/bluemoon/usr2/idllib/deutsch/misc/linebar.pro)


PRINTPATH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   PRINTPATH
 PURPOSE:
   This program prints out the current !PATH in a column on unix machines.
   (or other "colon-separated !PATH variables)
 CALLING SEQEUNCE:
   printpath

(See /host/bluemoon/usr2/idllib/deutsch/misc/printpath.pro)


PSCLOSE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   PSCLOSE

 PURPOSE:
   This procedure closes the POSTSCRIPT output mode and returns the mode to
   the device when SETPS was called.  The POSTSCRIPT output is sent to the 
   PostScript file and may also optionally be sent automatically to the printer.
   It is designed to be used in conjunction with SETPS.

 CALLING SEQEUNCE:
   PSCLOSE,[autoprint],[queue],[/silent,/autoprint,autoprint='']

 OPTIONAL INPUT:
   AUTOPRINT Specifies whether IDL.PS should automatically be sent to
               the printer queue (0=NO, 1=Last or Default Printer,
               2=Choose Printer from list)
   QUEUE     Specifies the queue to which the plot is automatically
               sent in AUTOPRINT=1   (Default from cluster info. file)

 OPTIONAL KEYWORDS:
   AUTOPRINT Specifies whether IDL.PS should automatically be sent to
               the printer determined by:
                 0=NO
                 1=Last Printer printed to (PSCLOSE) or the Default Printer
                 2=Choose Printer from list
                 string=assumed to be the Queue Name.
   SILENT    Indicates that none of the informational messages are printed.

 HISTORY:
   11-JUL-90 Version 1 written by Eric Deutsch
   26-MAY-92 Proper header and other minor modifications. EWD
   23-OCT-92 Modified to use list of printers and to work with UNIX.  EWD
   06-FEB-93 Added support for filenames other than idl.ps.  EK & EWD
   96-OCT-16 Get rid of FOS_POST, as it is gone. rcb

(See /host/bluemoon/usr2/idllib/deutsch/misc/psclose.pro)


PSLANDFIX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   PSLANDFIX

 PURPOSE:
   Fix the upside-down landscape that IDL generates.  Probably only works
   with the output of setps,/land

 CALLING SEQEUNCE:
   pro pslandfix,[filename]

 INPUT:
   FILENAME   Name the idl PostScript file to fix.  Default is 'idl.ps'

 OUTPUT:
   Fixed PostScript file
 NOTES:
   none
 HISTORY:
   10-AUG-95 Version 1 written    E. Deutsch

(See /host/bluemoon/usr2/idllib/deutsch/misc/pslandfix.pro)


PSOUT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   PSOUT
 PURPOSE:
   This procedure writes the specified image to a postscript file IDL.PS and
   automatically sends it to the printer is the flag is set.
 CALLING SEQEUNCE:
   pro psout,image,xsize,ysize,xoffset,yoffset,[/color,ctable=,
     autoprint=,/inverse]
 INPUT:
   IMAGE     2D array to be printed or IDL window number to read and print.
               It should be a BYTE array or only the least significant byte
               is used for display.
 OPTIONAL INPUT:
   XSIZE     Width of image in inches
   YSIZE     Height of image in inches
   XOFFSET   Lwr-lft corner of image starts XOFFSET inches from the
               left edge of paper.
   YOFFSET   Lwr-lft corner of image starts YOFFSET inches from the
               bottom edge of the paper.
 OPTIONAL KEYWORDS:
   AUTOPRINT Specifies whether IDL.PS should automatically be sent to
               the printer determined by:
                 0=NO
                 1=Last Printer printed to (PSCLOSE) or the Default Printer
                 2=Choose Printer from list
                 string=assumed to be the Queue Name.
   INVERSE   If set, TV,255-image is used which will yield a white sky for
               BYTE type images. (1=YES, 0=no)
   COLOR     Specifies whether the output is to be color Postscript or not.
               (1=YES, 0=no)
   BITS      Number of BitsPerPixel to use.  Default is 8.
   CTABLE    The optional keyword allows the user to specify a color table.
             If CTABLE is a BYTARR(3,256) this array is used as the table.
             If CTABLE is a scalar LOADCT is run with this parameter.
             If CTABLE is not specified, the current color table loaded in
               the COMMON block "colors" (CURRENT set) is used.  If no table
               has been previously loaded, LOADCT is run and the user must
               type in a color.
   DONTCLOSE If this keyword is set, then the PostScript channel is left open
               and the user must manually close it.  However, this allows
               the user to send more output over the image (e.g. annotation)
   FILENAME  This keyword allows the PostScript filename to be specified.
               The default is 'idl.ps'
 OUTPUT:
   IDL.PS    Postscript File
   All passed variables remain unchanged
 NOTES:
   none
 HISTORY:
   18-JUN-90 Version 1 written    E. Deutsch
   27-FEB-92 Added Color capability and automatic image sizing.  Parameters
               were changed to keywords.  EWD
   14-MAY-92 Added STScI specifiic /PARAM=LAYUP needed to override the default
               margins on the 3C Colormate PS printer.  Help from Greg
               McLesky to set up the override.  EWD
   27-MAY-92 Added IDL_SYSDEF support for keywords PSTSCRPT and CLRPSCPT. EWD
   07-FEB-92 Added /DONTCLOSE and FILENAME= keyword.  EWD

(See /host/bluemoon/usr2/idllib/deutsch/misc/psout.pro)


RDLINES

[Previous Routine] [Next Routine] [List of Routines]

 read line lists

(See /host/bluemoon/usr2/idllib/deutsch/misc/rdlines.pro)


SETPS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   SETPS

 PURPOSE:
   This procedure sets up the output channel for POSTSCRIPT output.
   Designed to be used in conjunction with PSCLOSE.

 CALLING SEQEUNCE:
   SETPS,[xsize,ysize],[xoffset,yoffset],[/landscape,/silent]

 OPTIONAL INPUT:
   XSIZE     Width of the output in inches
   YSIZE     Height of the output in inches
   XOFFSET   Lwr-lft corner of the output starts XOFFSET inches from the
               left edge of paper.
   YOFFSET   Lwr-lft corner of the output starts YOFFSET inches from the
               bottom edge of the paper.

 OPTIONAL KEYWORDS:
   LANDSCAPE Specifies that the output is to be in Landscape (sideways) mode.
   SILENT    Indicates that none of the informational messages are printed.
   TOP       This keyword generally is only used when no other parameters
               are specified.  It moves the portrait 7x7 inch plot to
               the top of the page instead of the default bottom.  This is
               especially useful for putting plots so that there is room
               for the caption at the bottom.
   FILENAME  This keyword specifies the name of the PostScript file.  The
               default value is 'idl.ps'

 HISTORY:
   11-JUL-90 Version 1 written by Eric Deutsch
   26-MAY-92 Proper header and other minor modifications. EWD
   12-NOV-92 Added /TOP keyword.  EWD
   06-FEB-92 Added FILENAME= keyword.  EK & EWD

(See /host/bluemoon/usr2/idllib/deutsch/misc/setps.pro)


SPLFIT

[Previous Routine] [Next Routine] [List of Routines]
			splfit

 driver routine for splinefit to compute least squares spline
 with equally spaced nodes.

 CALLING SEQUENCE:
	fit = splfit(x,y,nodes,xs,ys)

 INPUTS:
	x - x data vector
	y - y data vector
	nodes - number of spline nodes

 OUTPUT:
	the least square spline, evaluated at points x, is returned
	as the function value.

 OPTIONAL OUTPUTS:
	xs - x positions of the least squares spline
	ys - y positions of the least sqaures spline

 HISTORY:
	version 1  D. Lindler   May 1989
	version 2  DJL/ACC	1/22/92		Moved to IDL Version 2
	14-JUL-95 Deutsch renamed 'sfit' to 'splfit' since IDL now includes
		a routine called sfit (surface fitting)

(See /host/bluemoon/usr2/idllib/deutsch/misc/splfit.pro)


SPLIE2

[Previous Routine] [Next Routine] [List of Routines]
			splie2

 Given an M by N tabulated function YA, and tabulated independent variables
 X1A (M values) and X2A (N values), this routine constructs one-dimensional
 natural cubic splines of the rows of YA and returns the second derivatives
 in the array Y2A.

 SOURCE:
	Numerical Recipes, 1986. (page 100)
 
 CALLING SEQUENCE:
	splie2,x1a,x2a,ya,m,n,y2a

 INPUTS:
	x1a - independent variable vector (first dimension)
	x2a - independent variable vector (second dimension)
	ya  - dependent variable array
	m   - length of first dimension
	n   - length of second dimension

 OUTPUTS:
	y2a- second derivative array

 HISTORY:
	converted to IDL, D. Neill, October, 1991

(See /host/bluemoon/usr2/idllib/deutsch/misc/splie2.pro)


SPLIN2

[Previous Routine] [Next Routine] [List of Routines]
			splin2

 Given X1A, X2A, YA, M, N as described in SPLIE2.PRO and Y2A as produced by
 that routine, and given a desired interpolating point X1, X2, this routine
 returns an interpolated function value Y by bicubic spline interpolation.

 SOURCE:
	Numerical Recipes, 1986. (page 101)
 
 CALLING SEQUENCE:
	splin2,x1a,x2a,ya,y2a,m,n,x1,x2,y

 INPUTS:
	x1a - independent variable vector (first dimension)
	x2a - independent variable vector (second dimension)
	ya  - dependent variable array
	y2a - second derivative array (as produced by SPLIE2.PRO)
	m   - length of first dimension
	n   - length of second dimension
	x1  - first coordinate of interpolating point
	x2  - second coordinate of interpolating point

 OUTPUTS:
	y   - bicubic spline interpolated function value

 HISTORY:
	converted to IDL, D. Neill, October, 1991

(See /host/bluemoon/usr2/idllib/deutsch/misc/splin2.pro)


SPLINEFIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
	SPLINEFIT
 PURPOSE:
	Non-linear least squares fit to a cubic spline function of an
	arbitrary number of nodes.
 CATEGORY:
	E2 - Curve and Surface Fitting
 CALLING SEQUENCE:
	YFIT = SPINEFIT(X,Y,W,XS,YS,SIGYS,DELY)
 INPUTS:
	X = Row vector of independent variables.
	Y = Row vector of dependent variable, same length as x.
	W = Row vector of weights, same length as x and y.
		For no weighting
		w(i) = 1., instrumental weighting w(i) =
		1./y(i), etc.
	XS = Vector containing the x-positions of the spline nodes
	YS = Vector containing the intial y-position for the spline
		at each node (same length as XS)
 OPTIONAL INPUTS:
	DELY = distance to use in computing numerical derivatives
		with respect to YS values.  The distance is DELY*YS(i)
		(Default= 0.001)

 OUTPUTS:
	YS = Vector of parameters containing fit.
	Function result = YFIT = Vector of calculated
		values. YFIT=CSPLINE(XS,YS,X)
 OPTIONAL OUTPUT PARAMETERS:
	Sigys = Vector of standard deviations for parameters
		ys.
	
 COMMON BLOCKS:
	NONE.
 RESTRICTIONS:
	NONE.
 PROCEDURE:
	Copied from "CURFIT", least squares fit to a non-linear
	function, pages 237-239, Bevington, Data Reduction and Error
	Analysis for the Physical Sciences.

	"This method is the Gradient-expansion algorithm which
	compines the best features of the gradient search with
	the method of linearizing the fitting function."

	Iterations are perform until the chi square changes by
	only 0.1% or until 20 iterations have been performed.

	The initial guess of the parameter values should be
	as close to the actual values as possible or the solution
	may not converge.

 MODIFICATION HISTORY:
	Modified (D. Lindler, Feb. 87) version of IDL routine CURVEFIT
	written by DMS, RSI, September, 1982.

(See /host/bluemoon/usr2/idllib/deutsch/misc/splinefit.pro)


SPLINF

[Previous Routine] [Next Routine] [List of Routines]
			splinf

 Given arrays X and Y of length N containing a tabulated function, i.e.
 Yi = f(Xi), with X1 < X2 < ... < Xn, and given values YP1 and YPN for the
 first derivative of the interpolating function at points 1 and N,
 respectively, this routine returns and array Y2 of length N which contains
 the second derivatives of the interpolating function at the tabulated points
 Xi.  If YP1 and/or YPN are equal to 1.E30 or larger, the routine is signalled
 to set the corresponding boundary condition for a natural spline, with zero
 second derivative on that boundary.

 SOURCE:
	Numerical Recipes, 1986. (page 88)
 
 CALLING SEQUENCE:
	splinf,x,y,n,yp1,ypn,y2

 INPUTS:
	x - independent variable vector
	y - dependent variable vector
	n - dimension of x and y vectors
	yp1 - first derivative at x(0)
	ypn - first derivative at x(n-1)

 OUTPUTS:
	y2 - second derivatives at all x, of length n

 HISTORY:
	converted to IDL, D. Neill, October, 1991

(See /host/bluemoon/usr2/idllib/deutsch/misc/splinf.pro)


SPLINT

[Previous Routine] [Next Routine] [List of Routines]
			splint

 Given arrays XA and YA of length N, which tabulate a function (with the
 XA's in order), and given the array Y2A, which is the output from SPLINE.PRO,
 and given a value of X this routine returns a cubic-spline interpolated
 value Y.

 SOURCE:
	Numerical Recipes, 1986. (page 89)
 
 CALLING SEQUENCE:
	splint,xa,ya,y2a,n,x,y

 INPUTS:
	xa - independent variable vector
	ya - dependent variable vector
	y2a- second derivative vector from SPLINF.PRO
	n  - length of above vectors
	x  - x value of interest

 OUTPUTS:
	y  - cubic-spline interpolated value at x

 HISTORY:
	converted to IDL, D. Neill, October, 1991

(See /host/bluemoon/usr2/idllib/deutsch/misc/splint.pro)


STAREO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   STAREO
 PURPOSE:
   STAREO is a main program which dabbles in 3D pattern pictures.
 CALLING SEQEUNCE:
   .run stareo
 INSTRUCTIONS:
   Align you eyes to inifinity.  The two dots will now we discrernable as
   four dots.  Slowly bring your eyes together until there are only three
   dots (i.e. the two center ones merge.)  If you carefully 'notice' the
   rest of the image, you will eventually be able to see a rectangle that
   appears to float a bit above the rest of the noise.  It works okay but
   not wonderfully...  once you got it, try setting objtype to 1 and 2 for
   different images.
         -E. Deutsch 2/16/93

(See /host/bluemoon/usr2/idllib/deutsch/misc/stareo.pro)


STDEV

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
	STDEV

 PURPOSE:
	Compute the standard deviation and, optionally, the
	mean of any array.

 CATEGORY:
	G1- Simple calculations on statistical data.

 CALLING SEQUENCE:
	Result = STDEV(Array [, Mean])

 INPUTS:
	Array:	The data array.  Array may be any type except string.

 OUTPUTS:
	STDEV returns the standard deviation (sample variance
	because the divisor is N-1) of Array.
		
 OPTIONAL OUTPUT PARAMETERS:
	Mean:	Upon return, this parameter contains the mean of the values
		in the data array.

 COMMON BLOCKS:
	None.

 SIDE EFFECTS:
	None.

 RESTRICTIONS:
	None.

 PROCEDURE:
	Mean = TOTAL(Array)/N_ELEMENTS(Array)
	Stdev = SQRT(TOTAL((Array-Mean)^2/(N-1)))

 MODIFICATION HISTORY:
	DMS, RSI, Sept. 1983.
	[7/17/95] E. Deutsch writes: RSI has done away with this function in
		IDL 4.0 in favor of a function called moment().  I keep this
		old routine around for backwards-compatibility and convenience
		sake.  [ stdev(var) is clearer than sqrt((moment(var)(0)) ]

(See /host/bluemoon/usr2/idllib/deutsch/misc/stdev.pro)


STRDEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
   StrDel
 PURPOSE:
   This function removes the piece specified from a string.  For example,
     IDL> str='   3,234.99'
     IDL> print,float(strdel(str,strpos(str,','),1))
   yields 3234.99
 CALLING SEQEUNCE:
   tmp = StrDel(string,pos,len)
 INPUT:
   STRING    This is the string variable from which the subtring it to be
               removed.
   POS       First character to remove where the first character is 0.
   LEN       Number of characters to remove.
 HISTORY:
   30-AUG-1990 Version 1 written.
   27-JUL-1992 Proper Header added.

(See /host/bluemoon/usr2/idllib/deutsch/misc/strdel.pro)


WHICH

[Previous Routine] [List of Routines]
 NAME:
	WHICH

 PURPOSE:
	Determine in which library/directory the procedure or function
	specified is located in the !PATH.  This is useful for finding
	out which library a certain procedure comes from, particularly
	when there are duplicates.  This is similar to the unix
	'which' command.

 CALLING SEQUENCE:
    WHICH, [ proc_name ]          ;Find PROC_NAME in !PATH and display

 OPTIONAL INPUT:
	proc_name - Character string giving the name of the IDL procedure or 
		function.  Do not give an extension.   If omitted, 
		the program will prompt for PROC_NAME.

 OUTPUTS:
	None.

 SIDE EFFECTS
	None.

 PROCEDURE:
	The system variable !PATH is parsed into individual libraries or 
	directories.   Each library or directory is then searched for the
	procedure name.  If not found in !PATH,
	then the ROUTINES.HELP file is checked to see if it is an intrinsic
	IDL procedure.

 EXAMPLE:
	Find out where the procedure CURVEFIT lives.

	IDL> which, 'curvefit'

 RESTRICTIONS:
	None.

 REVISION HISTORY:
	29-MAY-94  Modified from getpro.pro by E. Deutsch
	14-JUL-95  Fixed for IDL 4.0

(See /host/bluemoon/usr2/idllib/deutsch/misc/which.pro)