NAG C Library Function Document

nag_legendre_p (s22aac)

1
Purpose

nag_legendre_p (s22aac) 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.

2
Specification

#include <nag.h>
#include <nags.h>
void  nag_legendre_p (Integer mode, double x, Integer m, Integer nl, double p[], NagError *fail)

3
Description

nag_legendre_p (s22aac) 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/2 dmdxm Pnx   if ​m0, Pnmx = n+m! n-m! Pn-mx   if ​m<0  and Pnm¯x = 2n+1 2 n-m! n+m! Pnmx  
respectively; Pnx is the (unassociated) Legendre polynomial of degree n given by
PnxPn0x=12nn! dndxn x2-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.
nag_legendre_p (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).

4
References

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

5
Arguments

1:     mode IntegerInput
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.
2:     x doubleInput
On entry: the argument x of the function.
Constraint: absx1.0.
3:     m IntegerInput
On entry: the order m of the function.
Constraint: absm 27 .
4:     nl IntegerInput
On entry: the degree N of the last function required in the sequence.
Constraints:
  • nl0;
  • if m=0, nl100;
  • if m0, nl 55 - absm .
5:     p[nl+1] doubleOutput
On exit: the required sequence of function values as follows:
  • if mode=1, p[n] contains Pnm x , for n=0,1,,N;
  • if mode=2, p[n] contains Pnm ¯ x , for n=0,1,,N.
6:     fail NagError *Input/Output
The NAG error argument (see Section 3.7 in How to Use the NAG Library and its Documentation).

6
Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 2.3.1.2 in How to Use the NAG Library and its Documentation for further information.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INT
On entry, m=value.
Constraint: m27.
On entry, mode=value.
Constraint: mode2.
On entry, mode=value.
Constraint: mode1.
On entry, nl=value.
Constraint: nl0.
NE_INT_2
On entry, nl=value and m=value.
Constraint: nl+m55.
On entry, nl=value.
Constraint: nl100 when 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 2.7.6 in How to Use the NAG Library and its Documentation for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 2.7.5 in How to Use the NAG Library and its Documentation for further information.
NE_REAL
On entry, x=value.
Constraint: x1.0.

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

8
Parallelism and Performance

nag_legendre_p (s22aac) is not threaded in any implementation.

9
Further Comments

None.

10
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.

10.1
Program Text

Program Text (s22aace.c)

10.2
Program Data

Program Data (s22aace.d)

10.3
Program Results

Program Results (s22aace.r)