# NAG C Library Function Document

## 1Purpose

nag_ddisna (f08flc) computes the reciprocal condition numbers for the eigenvectors of a real symmetric or complex Hermitian $m$ by $m$ matrix $A$, or for the left or right singular vectors of a general $m$ by $n$ matrix $A$.

## 2Specification

 #include #include
 void nag_ddisna (Nag_JobType job, Integer m, Integer n, const double d[], double sep[], NagError *fail)

## 3Description

The bound on the error, measured by the angle in radians, for the $i$th computed vector is given by $\epsilon {‖A‖}_{2}/{\mathrm{sep}}_{i}$, where $\epsilon$ is the machine precision and ${\mathrm{sep}}_{i}$ is the reciprocal condition number for the vectors, returned in the array element ${\mathbf{sep}}\left[i-1\right]$. ${\mathbf{sep}}\left[i-1\right]$ is restricted to be at least $\epsilon {‖A‖}_{2}$ in order to limit the size of the error bound.

## 4References

Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore

## 5Arguments

1:    $\mathbf{job}$Nag_JobTypeInput
On entry: specifies for which problem the reciprocal condition number should be computed.
${\mathbf{job}}=\mathrm{Nag_EigVecs}$
The eigenvectors of a symmetric or Hermitian matrix.
${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$
The left singular vectors of a general matrix.
${\mathbf{job}}=\mathrm{Nag_RightSingVecs}$
The right singular vectors of a general matrix.
Constraint: ${\mathbf{job}}=\mathrm{Nag_EigVecs}$, $\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$.
2:    $\mathbf{m}$IntegerInput
On entry: $m$, the number of rows of the matrix $A$.
Constraint: ${\mathbf{m}}\ge 0$.
3:    $\mathbf{n}$IntegerInput
On entry: $n$, the number of columns of the matrix when ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$.
If ${\mathbf{job}}=\mathrm{Nag_EigVecs}$, n is not referenced.
Constraint: if ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$, ${\mathbf{n}}\ge 0$.
4:    $\mathbf{d}\left[\mathit{dim}\right]$const doubleInput
Note: the dimension, dim, of the array d must be at least
• $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{m}}\right)$ when ${\mathbf{job}}=\mathrm{Nag_EigVecs}$;
• $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{m}},{\mathbf{n}}\right)\right)$ when ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$.
On entry: the eigenvalues if ${\mathbf{job}}=\mathrm{Nag_EigVecs}$, or singular values if ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$ of the matrix $A$.
Constraints:
• the elements of the array d must be in either increasing or decreasing order;
• if ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$ the elements of d must be non-negative.
5:    $\mathbf{sep}\left[\mathit{dim}\right]$doubleOutput
Note: the dimension, dim, of the array sep must be at least
• $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{m}}\right)$ when ${\mathbf{job}}=\mathrm{Nag_EigVecs}$;
• $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left({\mathbf{m}},{\mathbf{n}}\right)\right)$ when ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$.
On exit: the reciprocal condition numbers of the vectors.
6:    $\mathbf{fail}$NagError *Input/Output
The NAG error argument (see Section 3.7 in How to Use the NAG Library and its Documentation).

## 6Error 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.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_ENUM_INT
On entry, ${\mathbf{job}}=〈\mathit{\text{value}}〉$ and ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: if ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$, ${\mathbf{n}}\ge 0$.
NE_INT
On entry, ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{m}}\ge 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_NOT_MONOTONIC
Constraint: the elements of the array d must be in either increasing or decreasing order.
if ${\mathbf{job}}=\mathrm{Nag_LeftSingVecs}$ or $\mathrm{Nag_RightSingVecs}$ the elements of d must be non-negative.

## 7Accuracy

The reciprocal condition numbers are computed to machine precision relative to the size of the eigenvalues, or singular values.

## 8Parallelism and Performance

nag_ddisna (f08flc) is not threaded in any implementation.