;$Id: //depot/Release/ENVI50_IDL82/idl/idldir/lib/igamma.pro#1 $ ; ; Copyright (c) 1994-2012, Exelis Visual Information Solutions, Inc. All ; rights reserved. Unauthorized reproduction is prohibited. ;+ ; NAME: ; IGAMMA ; ; PURPOSE: ; This function computes the incomplete gamma function, Px(a). ; ; CATEGORY: ; Special Functions. ; ; CALLING SEQUENCE: ; Result = Igamma(a, x) ; ; INPUTS: ; A: A scalar or array of any basic type that ; specifies the parametric exponent of the integrand. ; A may be complex. ; ; X: A scalar or array of any basic type that ; specifies the upper limit of integration. ; X may be complex. ; Note: For X < 0 you should convert X to complex first, ; otherwise the Result will be 0. ; ; KEYWORD PARAMETERS: ; ; DOUBLE = Set this keyword to return a double-precision result. ; ; EPS = relative accuracy, or tolerance. The default tolerance ; is 3.0d-12. ; ; ITER = Set this keyword equal to a named variable that will contain ; the actual number of iterations performed. ; ; ITMAX = Set this keyword to specify the maximum number of iterations. ; The default value is 100000. ; ; METHOD: Use this keyword to specify a named variable which returns ; the method used to compute the incomplete gamma function. ; A value of 0 indicates that a power series representation ; was used. A value of 1 indicates that a continued fractions ; method was used. ; This keyword is obsolete and will return 0. ; ; EXAMPLE: ; Compute the incomplete gamma function for the corresponding elements ; of A and X. ; Define the parametric exponents. ; A = [0.10, 0.50, 1.00, 1.10, 6.00, 26.00] ; Define the the upper limits of integration. ; X = [0.0316228, 0.0707107, 5.00000, 1.04881, 2.44949, 25.4951] ; Compute the incomplete gamma functions. ; result = Igamma(A, X) ; The result should be: ; [0.742026, 0.293128, 0.993262, 0.607646, 0.0387318, 0.486387] ; ; PROCEDURE: ; IGAMMA computes the incomplete gamma function, Px(a), using either ; a power series representation or a continued fractions method. If X ; is less than or equal to A+1, the power series representation is used. ; If X is greater than A+1, the continued fractions method is used. ; ; REFERENCE: ; Numerical Recipes, The Art of Scientific Computing (Second Edition) ; Cambridge University Press ; ISBN 0-521-43108-5 ; ; MODIFICATION HISTORY: ; Written by: GGS, RSI, September 1994 ; IGAMMA is based on the routines: gser.c, gcf.c, and ; gammln.c described in section 6.2 of Numerical Recipes, ; The Art of Scientific Computing (Second Edition), and is ; used by permission. ; Modified: GGS, RSI, January 1996 ; Corrected the case of IGAMMA(a, 0) for a > 0. ; DMS, Sept, 1999, Added arrays, and more accurate ; results for double. ; CT, RSI, March 2000, added DOUBLE, ITER keywords. ; CT, RSI, Dec 2001: Convert to internal C code, added complex support. ; Remove restriction on A>0. ; Made METHOD keyword obsolete. ;- FUNCTION igamma, a, x, _REF_EXTRA=_extra, $ METHOD = method ; Obsolete keyword. ON_ERROR, 2 ; Note: IDL_IGAMMA is an undocumented internal routine, and is subject ; to change in the future. The function is based on the routines ; gser.c and gcf.c described in Numerical Recipes in C (2nd ed, sec 6.2). result = IDL_IGAMMA(a, x, _STRICT_EXTRA=_extra) ; Check obsolete keyword. if ARG_PRESENT(method) then $ method = REPLICATE(0, N_ELEMENTS(result)) return, result end