Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

Chapter Contents
Chapter Introduction
NAG Toolbox

# NAG Toolbox: nag_specfun_psi_deriv_real (s14ae)

## Purpose

nag_specfun_psi_deriv_real (s14ae) returns the value of the $k$th derivative of the psi function $\psi \left(x\right)$ for real $x$ and $k=0,1,\dots ,6$, via the function name.

## Syntax

[result, ifail] = s14ae(x, k)
[result, ifail] = nag_specfun_psi_deriv_real(x, k)

## Description

nag_specfun_psi_deriv_real (s14ae) evaluates an approximation to the $k$th derivative of the psi function $\psi \left(x\right)$ given by
 $ψ k x=dkdxk ψx=dkdxk ddx loge⁡Γx ,$
where $x$ is real with $x\ne 0,-1,-2,\dots \text{}$ and $k=0,1,\dots ,6$. For negative noninteger values of $x$, the recurrence relationship
 $ψ k x+1=ψ k x+dkdxk 1x$
is used. The value of $\frac{{\left(-1\right)}^{k+1}{\psi }^{\left(k\right)}\left(x\right)}{k!}$ is obtained by a call to nag_specfun_polygamma_deriv (s14ad), which is based on the function PSIFN in Amos (1983).
Note that ${\psi }^{\left(k\right)}\left(x\right)$ is also known as the polygamma function. Specifically, ${\psi }^{\left(0\right)}\left(x\right)$ is often referred to as the digamma function and ${\psi }^{\left(1\right)}\left(x\right)$ as the trigamma function in the literature. Further details can be found in Abramowitz and Stegun (1972).

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

## Parameters

### Compulsory Input Parameters

1:     $\mathrm{x}$ – double scalar
The argument $x$ of the function.
Constraint: ${\mathbf{x}}$ must not be ‘too close’ (see Error Indicators and Warnings) to a non-positive integer.
2:     $\mathrm{k}$int64int32nag_int scalar
The function ${\psi }^{\left(k\right)}\left(x\right)$ to be evaluated.
Constraint: $0\le {\mathbf{k}}\le 6$.

None.

### Output Parameters

1:     $\mathrm{result}$ – double scalar
The result of the function.
2:     $\mathrm{ifail}$int64int32nag_int scalar
${\mathbf{ifail}}={\mathbf{0}}$ unless the function detects an error (see Error Indicators and Warnings).

## Error Indicators and Warnings

Errors or warnings detected by the function:
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{k}}<0$, or ${\mathbf{k}}>6$, or x is ‘too close’ to a non-positive integer. That is, .
${\mathbf{ifail}}=2$
The evaluation has been abandoned due to the likelihood of underflow. The result is returned as zero.
${\mathbf{ifail}}=3$
The evaluation has been abandoned due to the likelihood of overflow. The result is returned as zero.
${\mathbf{ifail}}=-99$
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.

## Accuracy

All constants in nag_specfun_polygamma_deriv (s14ad) are given to approximately $18$ digits of precision. If $t$ denotes the number of digits of precision in the floating-point arithmetic being used, then clearly the maximum number in the results obtained is limited by $p=\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left(t,18\right)$. Empirical tests by Amos (1983) have shown that the maximum relative error is a loss of approximately two decimal places of precision. Further tests with the function $-{\psi }^{\left(0\right)}\left(x\right)$ have shown somewhat improved accuracy, except at points near the positive zero of ${\psi }^{\left(0\right)}\left(x\right)$ at $x=1.46\dots \text{}$, where only absolute accuracy can be obtained.

None.

## Example

This example evaluates ${\psi }^{\left(2\right)}\left(x\right)$ at $x=2.5$, and prints the results.
```function s14ae_example

fprintf('s14ae example results\n\n');

x = 2.5;
k = int64(2);
[result, ifail] = s14ae(x, k);

disp('    x     k   (d^K/dx^K)psi(x)');
fprintf('%6.1f%5d    %12.4e\n',x,k,result);

```
```s14ae example results

x     k   (d^K/dx^K)psi(x)
2.5    2     -2.3620e-01
```