# NAG CL Interfaces22aac (legendre_​p)

Settings help

CL Name Style:

## 1Purpose

s22aac returns a sequence of values for either the unnormalized or normalized Legendre functions of the first kind ${P}_{n}^{m}\left(x\right)$ or $\overline{{P}_{n}^{m}}\left(x\right)$ for real $x$ of a given order $m$ and degree $n=0,1,\dots ,N$.

## 2Specification

 #include
 void s22aac (Integer mode, double x, Integer m, Integer nl, double p[], NagError *fail)
The function may be called by the names: s22aac, nag_specfun_legendre_p or nag_legendre_p.

## 3Description

s22aac evaluates a sequence of values for either the unnormalized or normalized Legendre ($m=0$) or associated Legendre ($m\ne 0$) functions of the first kind ${P}_{n}^{m}\left(x\right)$ or $\overline{{P}_{n}^{m}}\left(x\right)$, where $x$ is real with $-1\le x\le 1$, of order $m$ and degree $n=0,1,\dots ,N$ defined by
 $Pnm(x) = (1-x2)m/2 dmdxm Pn(x) if ​m≥0, Pnm(x) = (n+m)! (n-m)! Pn-m(x) if ​m<0 and Pnm¯(x) = (2n+1) 2 (n-m)! (n+m)! Pnm(x)$
respectively; ${P}_{n}\left(x\right)$ is the (unassociated) Legendre polynomial of degree $n$ given by
 $Pn(x)≡Pn0(x)=12nn! dndxn (x2-1)n$
(the Rodrigues formula). Note that some authors (e.g., Abramowitz and Stegun (1972)) include an additional factor of ${\left(-1\right)}^{m}$ (the Condon–Shortley Phase) in the definitions of ${P}_{n}^{m}\left(x\right)$ and $\overline{{P}_{n}^{m}}\left(x\right)$. They use the notation ${P}_{mn}\left(x\right)\equiv {\left(-1\right)}^{m}{P}_{n}^{m}\left(x\right)$ in order to distinguish between the two cases.
s22aac 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 Section 5) to zero whenever the required function is not defined for certain values of $m$ and $n$ (e.g., $m=-5$ and $n=3$).

## 4References

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

## 5Arguments

1: $\mathbf{mode}$Integer Input
On entry: indicates whether the sequence of function values is to be returned unnormalized or normalized.
${\mathbf{mode}}=1$
The sequence of function values is returned unnormalized.
${\mathbf{mode}}=2$
The sequence of function values is returned normalized.
Constraint: ${\mathbf{mode}}=1$ or $2$.
2: $\mathbf{x}$double Input
On entry: the argument $x$ of the function.
Constraint: $\mathrm{abs}\left({\mathbf{x}}\right)\le 1.0$.
3: $\mathbf{m}$Integer Input
On entry: the order $m$ of the function.
Constraint: $\mathrm{abs}\left({\mathbf{m}}\right)\le 27$.
4: $\mathbf{nl}$Integer Input
On entry: the degree $N$ of the last function required in the sequence.
Constraints:
• ${\mathbf{nl}}\ge 0$;
• if ${\mathbf{m}}=0$, ${\mathbf{nl}}\le 100$;
• if ${\mathbf{m}}\ne 0$, ${\mathbf{nl}}\le 55-\mathrm{abs}\left({\mathbf{m}}\right)$.
5: $\mathbf{p}\left[{\mathbf{nl}}+1\right]$double Output
On exit: the required sequence of function values as follows:
• if ${\mathbf{mode}}=1$, ${\mathbf{p}}\left[n\right]$ contains ${P}_{n}^{m}\left(x\right)$, for $\mathit{n}=0,1,\dots ,N$;
• if ${\mathbf{mode}}=2$, ${\mathbf{p}}\left[n\right]$ contains $\overline{{P}_{n}^{m}}\left(x\right)$, for $\mathit{n}=0,1,\dots ,N$.
6: $\mathbf{fail}$NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

## 6Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
NE_INT
On entry, $|{\mathbf{m}}|=⟨\mathit{\text{value}}⟩$.
Constraint: $|{\mathbf{m}}|\le 27$.
On entry, ${\mathbf{mode}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{mode}}\le 2$.
On entry, ${\mathbf{mode}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{mode}}\ge 1$.
On entry, ${\mathbf{nl}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nl}}\ge 0$.
NE_INT_2
On entry, ${\mathbf{nl}}=⟨\mathit{\text{value}}⟩$ and $|{\mathbf{m}}|=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nl}}+|{\mathbf{m}}|\le 55$.
On entry, ${\mathbf{nl}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nl}}\le 100$ when ${\mathbf{m}}=0$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library CL Interface for further information.
NE_REAL
On entry, $|{\mathbf{x}}|=⟨\mathit{\text{value}}⟩$.
Constraint: $|{\mathbf{x}}|\le 1.0$.

## 7Accuracy

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.

## 8Parallelism and Performance

s22aac is not threaded in any implementation.

None.

## 10Example

This example reads the values of the arguments $x$, $m$ and $N$ from a file, calculates the sequence of unnormalized associated Legendre function values ${P}_{n}^{m}\left(x\right),{P}_{n+1}^{m}\left(x\right),\dots ,{P}_{n+N}^{m}\left(x\right)$, and prints the results.

### 10.1Program Text

Program Text (s22aace.c)

### 10.2Program Data

Program Data (s22aace.d)

### 10.3Program Results

Program Results (s22aace.r)