NAG Library Function Document
nag_polygamma_deriv (s14adc)
1 Purpose
nag_polygamma_deriv (s14adc) returns a sequence of values of scaled derivatives of the psi function (also known as the digamma function).
2 Specification
#include <nag.h> |
#include <nags.h> |
void |
nag_polygamma_deriv (double x,
Integer n,
Integer m,
double ans[],
NagError *fail) |
|
3 Description
nag_polygamma_deriv (s14adc) computes
values of the function
for
,
,
, where
is the psi function
and
denotes the
th derivative of
.
The function is derived from the function PSIFN in
Amos (1983). The basic method of evaluation of
is the asymptotic series
for large
greater than a machine-dependent value
, followed by backward recurrence using
for smaller values of
, where
when
,
when
, and
,
, are the Bernoulli numbers.
When
is large, the above procedure may be inefficient, and the expansion
which converges rapidly for large
, is used instead.
4 References
Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications
Amos D E (1983) Algorithm 610: A portable FORTRAN subroutine for derivatives of the psi function ACM Trans. Math. Software 9 494–502
5 Arguments
- 1:
x – doubleInput
On entry: the argument of the function.
Constraint:
.
- 2:
n – IntegerInput
On entry: the index of the first member of the sequence of functions.
Constraint:
.
- 3:
m – IntegerInput
On entry: the number of members required in the sequence
, for .
Constraint:
.
- 4:
ans[m] – doubleOutput
On exit: the first
elements of
ans contain the required values
, for
.
- 5:
fail – NagError *Input/Output
-
The NAG error argument (see
Section 3.6 in the Essential Introduction).
6 Error Indicators and Warnings
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
- NE_BAD_PARAM
-
On entry, argument had an illegal value.
- NE_INT
-
On entry, .
Constraint: .
On entry, .
Constraint: .
- 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.
- NE_INTERNAL_WORKSPACE
-
There is not enough internal workspace to continue computation.
m is probably too large.
- NE_OVERFLOW_LIKELY
-
Computation abandoned due to the likelihood of overflow.
- NE_REAL
-
On entry, .
Constraint: .
- NE_UNDERFLOW_LIKELY
-
Computation abandoned due to the likelihood of underflow.
7 Accuracy
All constants in nag_polygamma_deriv (s14adc) are given to approximately digits of precision. Calling the number of digits of precision in the floating-point arithmetic being used , then clearly the maximum number of correct digits in the results obtained is limited by . Empirical tests of nag_polygamma_deriv (s14adc), taking values of in the range , and in the range , have shown that the maximum relative error is a loss of approximately two decimal places of precision. Tests with , i.e., testing the function , have shown somewhat better accuracy, except at points close to the zero of , , where only absolute accuracy can be obtained.
8 Parallelism and Performance
Not applicable.
The time taken for a call of nag_polygamma_deriv (s14adc) is approximately proportional to , plus a constant. In general, it is much cheaper to call nag_polygamma_deriv (s14adc) with greater than to evaluate the function , for , rather than to make separate calls of nag_polygamma_deriv (s14adc).
10 Example
This example reads values of the argument from a file, evaluates the function at each value of and prints the results.
10.1 Program Text
Program Text (s14adce.c)
10.2 Program Data
Program Data (s14adce.d)
10.3 Program Results
Program Results (s14adce.r)