# NAG Library Routine Document

## 1Purpose

s22aaf 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

Fortran Interface
 Subroutine s22aaf ( mode, x, m, nl, p,
 Integer, Intent (In) :: mode, m, nl Integer, Intent (Inout) :: ifail Real (Kind=nag_wp), Intent (In) :: x Real (Kind=nag_wp), Intent (Out) :: p(0:nl)
#include <nagmk26.h>
 void s22aaf_ (const Integer *mode, const double *x, const Integer *m, const Integer *nl, double p[], Integer *ifail)

## 3Description

s22aaf 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
 $Pnmx = 1-x2m/2 dmdxm Pnx if ​m≥0, Pnmx = n+m! n-m! Pn-mx if ​m<0 and Pnm¯x = 2n+1 2 n-m! n+m! Pnmx$
respectively; ${P}_{n}\left(x\right)$ is the (unassociated) Legendre polynomial of degree $n$ given by
 $Pnx≡Pn0x=12nn! dndxn x2-1n$
(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.
s22aaf 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}$ – IntegerInput
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}$ – Real (Kind=nag_wp)Input
On entry: the argument $x$ of the function.
Constraint: $\mathrm{abs}\left({\mathbf{x}}\right)\le 1.0$.
3:     $\mathbf{m}$ – IntegerInput
On entry: the order $m$ of the function.
Constraint: $\mathrm{abs}\left({\mathbf{m}}\right)\le 27$.
4:     $\mathbf{nl}$ – IntegerInput
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(0:{\mathbf{nl}}\right)$ – Real (Kind=nag_wp) arrayOutput
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{ifail}$ – IntegerInput/Output
On entry: ifail must be set to $0$, . If you are unfamiliar with this argument you should refer to Section 3.4 in How to Use the NAG Library and its Documentation for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value  is recommended. If the output of error messages is undesirable, then the value $1$ is recommended. Otherwise, if you are not familiar with this argument, the recommended value is $0$. When the value  is used it is essential to test the value of ifail on exit.
On exit: ${\mathbf{ifail}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see Section 6).

## 6Error Indicators and Warnings

If on entry ${\mathbf{ifail}}=0$ or $-1$, explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
${\mathbf{ifail}}=1$
On entry, $\left|{\mathbf{m}}\right|=〈\mathit{\text{value}}〉$.
Constraint: $\left|{\mathbf{m}}\right|\le 27$.
On entry, $\left|{\mathbf{x}}\right|=〈\mathit{\text{value}}〉$.
Constraint: $\left|{\mathbf{x}}\right|\le 1.0$.
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}}\le 100$ when ${\mathbf{m}}=0$.
On entry, ${\mathbf{nl}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{nl}}\ge 0$.
On entry, ${\mathbf{nl}}=〈\mathit{\text{value}}〉$.
Constraint: when $\left|{\mathbf{m}}\right|\ne 0$, ${\mathbf{nl}}\ge 0$.
On entry, ${\mathbf{nl}}=〈\mathit{\text{value}}〉$ and $\left|{\mathbf{m}}\right|=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{nl}}+\left|{\mathbf{m}}\right|\le 55$.
${\mathbf{ifail}}=-99$
See Section 3.9 in How to Use the NAG Library and its Documentation for further information.
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
See Section 3.8 in How to Use the NAG Library and its Documentation for further information.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.
See Section 3.7 in How to Use the NAG Library and its Documentation for further information.

## 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

s22aaf 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 (s22aafe.f90)

### 10.2Program Data

Program Data (s22aafe.d)

### 10.3Program Results

Program Results (s22aafe.r)