s22aa returns a sequence of values for either the unnormalized or normalized Legendre functions of the first kind Pnmx or Pnm¯x for real x of a given order m and degree n=0,1,,N.

Syntax

C#
public static void s22aa(
	int mode,
	double x,
	int m,
	int nl,
	double[] p,
	out int ifail
)
Visual Basic
Public Shared Sub s22aa ( _
	mode As Integer, _
	x As Double, _
	m As Integer, _
	nl As Integer, _
	p As Double(), _
	<OutAttribute> ByRef ifail As Integer _
)
Visual C++
public:
static void s22aa(
	int mode, 
	double x, 
	int m, 
	int nl, 
	array<double>^ p, 
	[OutAttribute] int% ifail
)
F#
static member s22aa : 
        mode : int * 
        x : float * 
        m : int * 
        nl : int * 
        p : float[] * 
        ifail : int byref -> unit 

Parameters

mode
Type: System..::..Int32
On entry: indicates whether the sequence of function values is to be returned unnormalized or normalized.
mode=1
The sequence of function values is returned unnormalized.
mode=2
The sequence of function values is returned normalized.
Constraint: mode=1 or 2.
x
Type: System..::..Double
On entry: the argument x of the function.
Constraint: absx1.0.
m
Type: System..::..Int32
On entry: the order m of the function.
Constraint: absm27.
nl
Type: System..::..Int32
On entry: the degree N of the last function required in the sequence.
Constraints:
  • nl0;
  • if m=0, nl100;
  • if m0, nl55-absm.
p
Type: array<System..::..Double>[]()[][]
An array of size [0:nl]
On exit: the required sequence of function values as follows:
  • if mode=1, p[n] contains Pnmx, for n=0,1,,N;
  • if mode=2, p[n] contains Pnm¯x, for n=0,1,,N.
ifail
Type: System..::..Int32%
On exit: ifail=0 unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

Description

s22aa evaluates a sequence of values for either the unnormalized or normalized Legendre (m=0) or associated Legendre (m0) functions of the first kind Pnmx or Pnm¯x, where x is real with -1x1, of order m and degree n=0,1,,N defined by
Pnmx=1-x2m/2dmdxmPnx  if ​m0,Pnmx=n+m!n-m!Pn-mx  if ​m<0  andPnm¯x=2n+12n-m!n+m!Pnmx
respectively; Pnx is the (unassociated) Legendre polynomial of degree n given by
PnxPn0x=12nn!dndxnx2-1n
(the Rodrigues formula). Note that some authors (e.g., Abramowitz and Stegun (1972)) include an additional factor of -1m (the Condon–Shortley Phase) in the definitions of Pnmx and Pnm¯x. They use the notation Pmnx-1mPnmx in order to distinguish between the two cases.
s22aa is based on a standard recurrence relation described in Section 8.5.3 of Abramowitz and Stegun (1972). Constraints are placed on the values of m and n in order to avoid the possibility of machine overflow. It also sets the appropriate elements of the array p (see [Parameters]) to zero whenever the required function is not defined for certain values of m and n (e.g., m=-5 and n=3).

References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications

Error Indicators and Warnings

Errors or warnings detected by the method:
ifail=1
On entry,absx>1.0,
ormode1 or 2,
ornl<0,
ornl>100 when m=0,
orabsm>27,
ornl+absm>55 when m0.
ifail=-9000
An error occured, see message report.
ifail=-8000
Negative dimension for array value
ifail=-6000
Invalid Parameters value

Accuracy

The computed function values should be accurate to within a small multiple of the machine precision except when underflow (or overflow) occurs, in which case the true function values are within a small multiple of the underflow (or overflow) threshold of the machine.

Parallelism and Performance

None.

Further Comments

None.

Example

This example reads the values of the arguments x, m and N from a file, calculates the sequence of unnormalized associated Legendre function values Pnmx,Pn+1mx,,Pn+Nmx, and prints the results.

Example program (C#): s22aae.cs

Example program data: s22aae.d

Example program results: s22aae.r

See Also