OAA_LIB-ao_lib Library Help

This page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? mk_html_help

at the IDL command line prompt.

Last modified: Tue May 15 16:15:49 2007.


List of Routines


Routine Descriptions

CHOLESKY

[Next Routine] [List of Routines]
 NAME:
       CHOLESKY

 PURPOSE:
       This procedure makes the cholesky decomposition of
       a positive defined simetric matrix.


 CATEGORY:
       Linear Algebra.

 CALLING SEQUENCE:

       CHOLESKY, L

 INPUTS:
       L:      squared matrix. Matrix to decompose. It is supposed simmetric
               (transpose(L) = L), so only diagonal and upper triangle is
				accessed as input.
               See input of CHOLDC procedure.

 KEYWORDS:
       DOUBLE: if set forces the computation in double precision

 OUTPUTS:
       Matrix. This procedure overwrite on L the lower triangular Cholesky
		factor of the input matrix, so that L ## TRANSPOSE(L) is the original
		simmetric matrix.

 EXAMPLE:
       Cholesky decompsition of a 2 dimensional simmetric matrix:

       C = [[1.2, 0.3], [0.3, -2.3]]
       L = CHOLESKY(C)
       PRINT, C - (L ## TRANSPOSE(L))

 MODIFICATION HISTORY:
       Written by:     A. Riccardi; April, 1995

(See ao_lib\cholesky.pro)


CN2

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

    Result = CN2(Z)

    return structure constant value (in m^(-2/3)) at height z (in m) from
    the pupil of imaging system.

(See ao_lib\cn2.pro)


CN2_MOMENTUM

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

    Result = CN2_MOMENTUM(Z)

    return CN2(Z)*Z^(Order)

    where Order is set by COMMON BLOCK:
        common cn2_momentum, order

(See ao_lib\cn2_momentum.pro)


CN2_SETTING

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

    CN2_SETTING, Which_profile

        Which_profile: string, scalar. String containing the funcion
                       name returning the Cn^2 profile. Three functions
                       are pre-defined:
                       "hv27" - Hufnagel-Valley 27 from Sandler et al., JOSAA,11,925(1994)
                       "hvbl" - adapted from Beckers, ARAA,31,13(1993)
                       "mhv"  - Modified Hufnagel-Valley from Parenti and Sasiela,
                                JOSA,11,288(1994)
                       See below for definition of a user-defined function

    KEYWORDS:

        ALTITUDE:      float, scalar. Site height above sea-level.
                       If not defined, it is set to 0.0.

        ELEVATION:     float, scalar. Height above ground-level of
                       pupil of imaging system. Only for turbulence
                       profiles with surface layers. If not defined,
                       it is set to 0.0.

        R0:            float, scalar. If defined, the profile is
                       rescaled to give R0 as Fried Prameter at
                       wavelength specified by WAVELENGTH keyword.

        WAVELENGTH:    float, scalar. Wavelegth in meters (see R0).
                       If undefined it is set to 0.55e-6m (V band).

        NORMALIZE:     if set rescale turbulence profile to give a
                       normalized turbulence profile (integral=1).

        VERBOSE:       if set print turbulence profile infos.

 USER-DEFINED Cn^2 PROFILE FUNCTION

 function FUNC, z, cn2_settings
                        ; zsl: height from the sea-level
    zsl = z+cn2_settings.altitude+cn2_settings.elevation
                        ; zg: height from the ground
    zg = z+cn2_settings.elevation
    cn2=....            ; usually a function of zsl (free atmosphere),
                        ; zg (boundary layer) and z (dome seeing)
    return, cn2_settings.scale_f*cn2 ; multiply to scale_f to allow r0 scaling
 end

 where z is a vector of height values from the pupil of the optical system in [m]
 and cn2 contains the the structure constant Cn^2 in [m^(-2/3)] at the corresponding
 heights. The structure cn2_settings is defined as follows:
   cn2_settings.name:       string containing the name of the function of the active Cn^2 profile
   cn2_settings.scale_f:    float. Scaling factor to match the requested r0
   cn2_settings.altitude:   float. Height of the ground with respect to the sea level
   cn2_settings.elevation:  float. Elevation of the pupil with respect to the ground level.
                            It is useful when a boundary layer is defined.
   cn2_settings.max_height: float. Maximum height from the sea level of the profile. Above it
                            the Cn^2 profile is considered to be 0.
 Those fields are to be considered as read-only. The user cannot modified the cn2_setting structure
 inside the function. The structure is initialized by the cn2_setting function.

(See ao_lib\cn2_setting.pro)


D0_PAR

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

   This function computes the d0 parameter for a laser
   focused at height h [m] at the wavelength wl [m].
   The formula used for d0 is from Tyler.
   Use cn2_setting procedure before use this function
   to set the cn2 profile.

 d0 = d0_par(h, wl, EPS=epsm, MIN_ALT=min_alt, MAX_ALT=max_alt)

 HISTORY

 Written by A. Riccardi (AR)
 Osservatorio Astrofisico di Arcetri, ITALY
 riccardi@arcetri.astro.it
 Please, send me a message if you modify this code.

 14 Mar 2002, AR
  *QROMO is used instead of QROMB for the numerical
   integration giving d0.
  *The max height of the cn2 profile definition is
   now read from the cn2_block common structure.

(See ao_lib\d0_par.pro)


FRIED_PAR

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

    Result = FRIED_PARAM(Wl)

    returns Fried Parameter r_O (in m) at wavelength Wl (in m).
    It uses CN2(Z) turbulence profile.

(See ao_lib\fried_par.pro)


ISO_ANGLE

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

    Return = ISO_ANGLE(Wl)

    return isoplanatic angle (in rad) for turbulence profile CN2 at
    wavelenth Wl (in m).

(See ao_lib\iso_angle.pro)


JACOBI_POL

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

 PURPOSE:
       JACOBI_POL returns the value of the Jacobi Polynomial
		P_N(A,B,X) of degree N and parameters A and B in a vector X
		of points. The Jacobi polynomials are
		orthogonal over the interval (-1,+1) with the weight
		function w(x)=(1-x)^a * (1+x)^b.
		The computation of the polynomial P_N(A,B,X) use the
		recurrence relation:

			P_0(A,B,X) = 1
			P_1(A,B,X) = (a+b+2)/2*X+(A-B)/2

			for N >= 2:
			C0 = 2*N*(A+B+N)*(A+B+2*N-2)
			C1 = (2*N+A+B-2)*(2*N+A+B-1)*(2*N+A+B)*X+
				 +(A^2-B^2)*(2*N+A+B-1)
			C2 = 2*(N+A-1)*(2*N+A+B)*(N+B-1)

			C0*P_N(A,B,X) = C1*P_(N-1)(A,B,X)-C2*P_(N-2)(A,B,X)

 CALLING SEQUENCE:
       Result = JACOBI_POL(N, A, B, X [, JPol1, JPol2])

 INPUTS:
       N:      scalar of type integer or long. N >= 0.
       A:		scalar of type float or double. A > -1. 
       B:      scalar of type float or double. B > -1.
       X:      n-element vector of type float or double.

 OPTIONAL INPUTS:
       JPol1:  n-element vector of type float or double.
				Jacobi polinomial P_(N-1)(A,B,X).
               Not used as input if N <= 1.
       JPol2:  n-element vector of type float or double.
				Jacobi polinomial P_(N-2)(A,B,X).
               Not used as input if N <= 1.

       If JPol1 and JPol2 are given the calculation is faster
		for N >= 2.

 OPTIONAL OUTPUT:
       JPol1:  n-element vector of type float or double.
				Jacobi polinomial P_N(A,B,X).
       JPol2:  n-element vector of type float or double.
				Jacobi polinomial P_(N-1)(A,B,X).
               Not used as output if N = 0.
 REFERENCES:
		Magnus, Oberhettinger, Soni "Formulas and Theorems
			for the Special Function of Mathematical Physics", 1966,
			Sec. 5.2.

 EXAMPLE:

 MODIFICATION HISTORY:
       Written by:     A. Riccardi; October, 1997.

(See ao_lib\jacobi_pol.pro)


KOLM_COVAR

[Previous Routine] [Next Routine] [List of Routines]
 NAME: 
       KOLM_COVAR 
 
 PURPOSE: 
       This function computes the covariance of Zernike polynomial
		coefficients of the wavefront perturbations due to 
		Kolmogorov turbulence.
 
 
 CALLING SEQUENCE: 
 
       Result = KOLM_COVAR(J1, J2) 
 
 INPUTS: 
       J1:     integer scalar. Inedex of Zernike polynomial. J1 >= 2 
       J2:     integer scalar. Inedex of Zernike polynomial. J2 >= 2 
 
 KEYWORD PARAMETERS: 
       DOUBLE: if set, double precision covariance is returned.
				Otherwise, single precision (float).
 
 OUTPUTS: 
       This function returns OPD covariance  where a(J1) and
       a(J2) are J1-th and J2-th Zernike components of wave front 
       perturbations due to Kolmogoroffian turbolence. Covariance is
       in (wavelength)^2*(D/r0)^(5/3) units, where D is the pupil
       diameter and r0 the Fried parameter.
       To have covariance of phase perurbations, use:

           4*pi^2*KOLM_COVAR(J1, J2) = <2*pi*a(J1) * 2*pi*aj(J2)>,

       it is in (D/r0)^(5/3) units.
 
 RESTRICTIONS: 
       J1, J2 >= 2, because piston variance (J1=J2=1) diverges. 
 
 BIBLIOGRAFY: 
           Noll 1976, JOSA, 66, 207.
           Roddier 1990, Opt. Eng., 29, 1174. 
 
 EXAMPLE: 
       Computes the average spatial variance of phase perturbation on a 
       circular pupil of diameter 1.5m due to first 15 Zernike polynomials.
       Suppose r0 = 15cm.

       scale = (150./15.)^(5./3.)
       var = 0.
       FOR i=2,15 DO var = var + KOLM_COVAR(i,i)
       var = (2 * !PI)^2 * scale * var

 MODIFICATION HISTORY: 
       Written by:     A. Riccardi; April, 1995. 
						A. Riccardi; June, 1997. Recursive calculation
							for the Gamma(n+alpha) (n int and alpha
							floating point) to avoid overflow
							in the Gamma Function for large n+alpha.

(See ao_lib\kolm_covar.pro)


KOLM_MCOVAR

[Previous Routine] [Next Routine] [List of Routines]
 NAME: 
       KOLM_MCOVAR 
 
 PURPOSE: 
       This function computes OPD covariance matrix of Zernike components of
       wavefront perturbations due to Kolmogorov turbulence. 
 
 CALLING SEQUENCE: 
       Result = KOLM_MCOVAR(Max_index) 
 
 INPUTS: 
       Max_index:  integer saclar. Maximum index of Zernike polynomial used.
                   Max_index >= 2.
 
 KEYWORD PARAMETERS: 
       DOUBLE: if set, the result is double type. Float otherwise.
 
 OUTPUTS: 
       Squared symmetric matrix with Max_index-1 elements per dimension.
       It is the covariance matrix for componets of Zernike polynomial with
       index from 2 to Max_index (see KOLM_COVAR).

           Result(i-2,j-2) =      where 2<=i,j<=Max_index

       OPD covariance matrix is in (wavelength)^2*(D/r0)^(5/3) units,
       where D is the pupil diameter and r0 the Fried parameter.
		Return 0 if an error occurred.
 
 RESTRICTIONS: 
       Covariances with Zernike index i=1 or j=1 is not computed
       because piston (j=i=1) Kolmogoroffian variance diverges.
       That's why Max_index >= 2.
 
 PROCEDURE: 
       See: KOLM_COVAR
 
 EXAMPLE: 
       Computes Covariance matrix for first 15 Zernike inexes and print
       variance due to Zernike sferical aberration:

       C = KOLM_MCOVAR(15)
       PRINT, C(11-2, 11-2)
 
 MODIFICATION HISTORY: 
       Written by:     A. Riccardi; April, 1995. 

(See ao_lib\kolm_mcovar.pro)


LLLCCD_OUT

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

 prob = lllccd_out(input_phe, r, m[, SEED=seed])

 input_phe: integer matrix: detected photo-electrons before amplification
 g        : float scalar: amplification gain. g=m^r where r is the number of
            amplification registers and m is the multiplication factor per
            register (m>=1, tipically m=1.01)

 SEED:  seed to be used in randomn call. On output it contains the seed returned
        by the randomn call.

 MODIFICATION HISTORY:
 21 March 2003. Written by A. Riccardi, INAF-OAA, Italy
                riccardi@arcetri.astro.it
 22 March 2003. by AR: output converted to long and offset=input added
                It takes into account the detected

(See ao_lib\lllccd_out.pro)


LLLCCD_PROB

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

 prob = lllccd_prob(x, n, g)

 probability function to obtain x extra-electrons in the avalange when
 n photo-electrons are detected, with gain g. g=m^r where r is the
 number of amplification registers and m is the multiplication factor of
 each register (m>=1.0, m=1.01 tipically).

 n must be integer. if n>170 or (n-1)*log(x/g)

 EXAMPLE:

 probability P(0<=x<1) with n=1 and g=1.01^519

 P=lllccd_prob(0.5, 1, 1.01^519)

 MODIFICATION HISTORY:

 22 March 2003: written by A. Riccardi, INAF-OAA, Italy
                riccardi@arcetri.astro.it

(See ao_lib\lllccd_prob.pro)


MAKE_ORTO_MODES

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

 PURPOSE:
       This function returns a orthogonal base matrix from the input matrix.   


 CATEGORY:
       Linear Algebra.

 CALLING SEQUENCE:

       RESULT = MAKE_ORTO_MODES(INP_MATR)

 INPUTS:
       INP_MATR: the influence  matrix,M,used to compute the new base orthogonal, B, matrix through
                 the transformation B=M##Q, and  imposed the orthogonal property transpose(B)##B=I.


 OUTPUTS:
       The orthogonal base matrix, B.

 EXAMPLE:
 MODIFICATION HISTORY:
       Written by:     S. Esposito.
       9 March 2006, modified by D.Zanotti(DZ)
       Deleted the automatic transposition of the matrix when an error of input occurred.
       Updated some line codes.

(See ao_lib\make_orto_modes.pro)


RANDOMN_COVAR

[Previous Routine] [Next Routine] [List of Routines]
 NAME: 
       RANDOMN_COVAR
 
 PURPOSE: 
       This function returns a sample of zero mean jointly
       gaussian random variables by the Cholesky decomposition
       of their covariance matrix.

 
 CATEGORY: 
       Statistics. 
 
 CALLING SEQUENCE: 

       Result = RANDOMN_COVAR(L,R) 
 
 INPUTS: 
       L:      squared matrix. Cholesky factor of covariance
               matrix from CHOLESKY function. The covariance
               matrix C is:
                   C = transpose(L)#L

 OPTIONAL INPUTS:
       R:      integer or long scalar. Number of realizations.
               If not defined one realization is returned.
 
 KEYWORD PARAMETERS: 
       SEED:   long type variable. Random generation seed.
               See RANDOMU function.
 
 OUTPUTS: 
       Vector. This function returns a sample of zero mean jointly
       gaussian random variables with statistics from L.
       If L is double type matrix, double vector is
       returned. Otherwise float.

               Return = L ## RANDOMN(seed,r,n)

       where n is the dimension of L.
 
 OPTIONAL OUTPUTS: 
       If SEED variable is specified, it is updated. See RANDOMU function.
 
 TROUBLES: 
       Even if double type L is used, RANDOMN returns
       a float type vector that is converted to double type one. 
 
 EXAMPLE: 
       Create a plot of probability density function of the sum
       of two jointly gaussian variables with M mean and C covariance.

       C = [[1.2, 0.3], [0.3, 2.3]]
       M = [12.1, 25.7]
       L = CHOLESKY(C)
       seed = 1L
       A = fltarr(500, /NOZERO)
       FOR i=0,499 DO A(i) = TOTAL(RANDOMN_COVAR(L, SEED=seed) + M)
       HISTOGRAM(A)
 
 MODIFICATION HISTORY: 
       Written by:     A. Riccardi; April, 1995

(See ao_lib\randomn_covar.pro)


VON_COVAR

[Previous Routine] [Next Routine] [List of Routines]
 NAME: 
       VON_COVAR 
 
 PURPOSE: 
       This function computes covariance of zernike components of
       wave front perturbations due to Von-Karmann turbolence.
 
 CATEGORY: 
       Optics. 
 
 CALLING SEQUENCE: 
 
       Result = VON_COVAR(J1, J2, L0) 
 
 INPUTS: 
       J1:     integer scalar. Inedex of Zernike polynomial. J1 >= 1
       J2:     integer scalar. Inedex of Zernike polynomial. J2 >= 1
		L0:		float or double. Outer-scale value in pupil diameter
				units.
 
 KEYWORD PARAMETERS: 
       DOUBLE: if set, forces double type covariance. Float therwise.
		EPS:	float or double scalar. relative precision of computation.
				If undefined EPS=1.e-7.
 
 OUTPUTS: 
       This function returns covariance  where a(J1) and
       a(J2) are J1-th and J2-th Zernike components of wave front 
       perturbations due to Von-Karman turbolence. Covariance is
       in (wave-length)^2*(D/r0)^(5/3) units, where D is the pupil
       diameter and r0 the Fried parameter (r0 for Kolmogoroffian
		turbolence).
       To have covariance of phase perurbations, use:

           4*pi^2*VON_COVAR(J1, J2) = <2*pi*a(J1) * 2*pi*aj(J2)>,

       it is in (D/r0)^(5/3) units.
 
 PROCEDURE: 
       See:
           Winker D. M., 1991, JOSA, 8, 1569.
           Takato N. and Yamaguchi I., 1995, JOSA, 12, 958
 
 EXAMPLE: 
       Computes the average spatial variance of phase perturbation on a 
       circular pupil of diameter 1.5m dues to first 15 Zernike aberrations.
       Suppose r0 = 15cm, L0=40m

       scale = (150./15.)^(5./3.)
		L0norm= (40./1.5)
       var = 0.
       FOR i=2,15 DO var = var + VON_COVAR(i,i,L0norm)
       var = 4 * !PI * var * scale
       Strhel_Ratio = EXP(-var)

 MODIFICATION HISTORY: 
       Written by:     A. Riccardi; July, 1995. 

(See ao_lib\von_covar.pro)


ZERN

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

 PURPOSE:
       The ZERN function returns the value of J-th Zernike polynomial
       in the points of coordinates X,Y. The output is of the same type
		as the X and Y vectors. The function convert X,Y
		coordinates in polar coordinates and call ZERN_JPOLAR function.

 CALLING SEQUENCE:
       Result = ZERN(J, X, Y)

 INPUTS:
       J:      scalar of type integer or long. Index of the polynomial,
				J >= 1.
       X:      n-element vector of type float or double. X coordinates.
       Y:		n-element vector of type float or double. Y coordinates.

 MODIFICATION HISTORY:
       Written by:    A. Riccardi; March, 1995.

(See ao_lib\zern.pro)


ZERN_DEGREE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:           
       ZERN_DEGREE           
           
 PURPOSE:          
       ZERN_DEGREE calculates the radial degree n and azimuthal  
       frequency m of Zernike polynomial of index j.   
           
 CATEGORY:           
       Optics.          
           
 CALLING SEQUENCE:           
            
       ZERN_DEGREE, J, N, M           
           
 MODIFICATION HISTORY:           
       Written by:     A. Riccardi; March, 1995.           

(See ao_lib\zern_degree.pro)


ZERN_FT

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

 PURPOSE:
       ZERN_FT returns the value of j-th Zernike polynomial
       fourier transform in a point of frequency fx,fy.
       (We use Noll formulation of Zernike polynomials)

 CATEGORY:
       Special polynomial

 CALLING SEQUENCE:

       Result = ZERN_FT(J, Fx, Fy)

 INPUTS:
       J:      index of the polynomial, integer J >= 1
       Fx:     frequency to evaluate
       Fy:

 OUTPUTS:
       ZERN_FT returns the value of j-th Zernike polynomial
       fourier transform in the point of requency Fx,Fy.
       On error return 0.

 EXAMPLE:
       Evaluate Zernike x coma fourier transform in fx,fy. Enter:

           Result = ZERN_FT(8, fx, fy)

 MODIFICATION HISTORY:
       Written by:     A. Riccardi; March, 1995.

(See ao_lib\zern_ft.pro)


ZERN_FT_POLAR

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

 PURPOSE:
       ZERN_FT_POLAR returns the value of j-th Zernike polynomial
       fourier transform in a frequency of polar coordinates k,phi.
       (We use Noll formulation of Zernike polynomials)

 CATEGORY:
       Special polynomial

 CALLING SEQUENCE:

       Result = ZERN_FT_POLAR(J, K, Phi)

 INPUTS:
       J:      index of the polynomial, integer J >= 1
       K:      frequency to evaluate (polar coord.)
       Phi:

 OUTPUTS:
       ZERN_FT_POLAR returns the value of j-th Zernike polynomial
       fourier tranform in the frequency of polar coordinates k, phi.
       On error return 0.

 EXAMPLE:
       Evaluate Zernike x coma fourier transform in kappa, phi. Enter:

            Result = ZERN_FT_POLAR(8, kappa, phi)

 MODIFICATION HISTORY:
       Written by:     A. Riccardi; March, 1995.

(See ao_lib\zern_ft_polar.pro)


ZERN_INDEX

[Previous Routine] [Next Routine] [List of Routines]
 NAME: 
       ZERN_INDEX 
 
 PURPOSE: 
       ZERN_INDEX calculates the index of a zernike polynomial
       from radial degree N and azimuthal frequency M. If M is not
       zero there are two possible index value, even and odd, with
       index_1=j and index_2=j+1. In this case (M is not 0)
       Zernike_index returns the minor value (j).
 
 CATEGORY: 
       Special polynomial. 
 
 CALLING SEQUENCE: 

       Result = ZERN_INDEX(N, M) 
 
 INPUTS: 
       N:  radial degree. Integer, N>=0.
       M:  azimuthal frequency. Integer, 0<=M<=N and N-M even 
 
 MODIFICATION HISTORY: 
       Written by:     A. Riccardi; April, 1995.

(See ao_lib\zern_index.pro)


ZERN_JPOLAR

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

 PURPOSE:
       ZERN_JPOLAR returns the value of j-th Zernike polynomial
       in a point of polar coordinates r,theta.
       (We use Noll formulation of Zernike polynomials)

 CATEGORY:
       Special polynomial

 CALLING SEQUENCE:

       Result = ZERN_JPOLAR(J, R, Theta)

 INPUTS:
       J:      index of the polynomial, integer J >= 1
       R:      point to evaluate (polar coord.)
       Theta:

 OUTPUTS:
       ZERN_POLAR returns the value of j-th Zernike polynomial
       in the point of polar coordinates r, theta.
       If r>1 then return 0. On error return 0.

 EXAMPLE:
       Evaluate Zernike x coma in rho, theta. Enter:

            Result = ZERN_JPOLAR(8, rho, theta)

 MODIFICATION HISTORY:
       Written by:     A. Riccardi; March, 1995.

(See ao_lib\zern_jpolar.pro)


ZERN_JRADIAL

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

 PURPOSE:
       ZERN_JRADIAL returns the value of the radial portion R(N,M,Rho)
		of the Zernike polynomial of radial degree N and azimuthal
		frequency M in a vector R of radial points.
		The radial Zernike polynomial is defined in the range (0,1)
		and is computed as:

			R(N,M,Rho) = Rho^M * P_[(N-M)/2](0,M,2*Rho^2-1)

		where P_k(a,b,x) is the Jacobi Polynomial of degree k (see
		JACOBI_POL)

 CALLING SEQUENCE:
       Result = ZERNKE_JRADIAL(N, M, Rho [, Jpol1, JPol2])

 INPUTS:
       N:      scalar of type integer or long. N >= 0.
       M:      scalar of type integer or long. 0 <= M <= N and M-N even.
       Rho:    n_elements vector of type float or double.

 OPTIONAL INPUTS:
		JPol1:	n_elements vector of type float or double.
				Jacobi polinomial P_[(N-M)/2-1](0,M,2*Rho^2-1).
				Not used as input if (N-M)/2 <= 1.
		JPol2:	n_elements vector of type float or double.
				Jacobi polinomial P_[(N-M)/2-2](0,M,2*Rho^2-1).
				with k=(N-M)/2-2. Not used if (N-M)/2-2 <= 1.
				Not used as input if (N-M)/2 <= 1.

		If JPol1 and JPol2 are given the calculation is faster
		for (N-M)/2 >= 2.

 OPTIONAL OUTPUTS:
		JPol1:  n-element vector of type float or double.
				Jacobi polinomial P_[(N-M)/2](0,M,2*Rho^2-1).
				Not used as input if N <= 1.
		JPol2:  n-element vector of type float or double.
				Jacobi polinomial P_[(N-M)/2-1](0,M,2*Rho^2-1).
               Not used as output if N = 0.

 REFERENCES:
       Magnus, Oberhettinger, Soni "Formulas and Theorems
           for the Special Function of Mathematical Physics", 1966,
           Sec. 5.2.
		Born, Wolf, "Optics"
		Noll 1976, JOSA, 66, 207.

 MODIFICATION HISTORY:
       Written by:     A. Riccardi; October, 1997.

(See ao_lib\zern_jradial.pro)


ZERN_ORDER

[Previous Routine] [List of Routines]
   Result = ZERN_ORDER(Nmax)

   returns a vector of Zernike polynomial indexes from 2 to
   ZERNIKE_INXDEX(Nmax,Nmax) ordered by azimuthal frequency
   (see Roddier 90, Opt. Eng., 29, 1174). Nmax must be >=1

(See ao_lib\zern_order.pro)