x04 Chapter Contents
x04 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_pack_real_mat_print (x04ccc)

## 1  Purpose

nag_pack_real_mat_print (x04ccc) is an easy-to-use function to print a double triangular matrix stored in a packed one-dimensional array.

## 2  Specification

 #include #include
 void nag_pack_real_mat_print (Nag_OrderType order, Nag_UploType uplo, Nag_DiagType diag, Integer n, const double a[], const char *title, const char *outfile, NagError *fail)

## 3  Description

nag_pack_real_mat_print (x04ccc) prints a double triangular matrix stored in packed form. It is an easy-to-use driver for nag_pack_real_mat_print_comp (x04cdc). The function uses default values for the format in which numbers are printed, for labelling the rows and columns, and for output record length.
nag_pack_real_mat_print (x04ccc) will choose a format code such that numbers will be printed with a $%8.4\mathrm{f}$, a $%11.4\mathrm{f}$ or a $%13.4\mathrm{e}$ format. The $%8.4\mathrm{f}$ code is chosen if the sizes of all the matrix elements to be printed lie between $0.001$ and $1.0$. The $%11.4\mathrm{f}$ code is chosen if the sizes of all the matrix elements to be printed lie between $0.001$ and $9999.9999$. Otherwise the $%13.4\mathrm{e}$ code is chosen.
The matrix is printed with integer row and column labels, and with a maximum record length of $80$.
The matrix is output to the file specified by outfile or, by default, to standard output.

None.

## 5  Arguments

1:     orderNag_OrderTypeInput
On entry: the order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by ${\mathbf{order}}=\mathrm{Nag_RowMajor}$. See Section 3.2.1.3 in the Essential Introduction for a more detailed explanation of the use of this argument.
Constraint: ${\mathbf{order}}=\mathrm{Nag_RowMajor}$ or Nag_ColMajor.
2:     uploNag_UploTypeInput
On entry: indicates the type of the matrix to be printed
${\mathbf{uplo}}=\mathrm{Nag_Lower}$
The matrix is lower triangular
${\mathbf{uplo}}=\mathrm{Nag_Upper}$
The matrix is upper triangular
Constraint: ${\mathbf{uplo}}=\mathrm{Nag_Lower}$ or $\mathrm{Nag_Upper}$.
3:     diagNag_DiagTypeInput
On entry: indicates whether the diagonal elements of the matrix are to be printed.
${\mathbf{diag}}=\mathrm{Nag_NonRefDiag}$
The diagonal elements of the matrix are not referenced and not printed.
${\mathbf{diag}}=\mathrm{Nag_UnitDiag}$
The diagonal elements of the matrix are not referenced, but are assumed all to be unity, and are printed as such.
${\mathbf{diag}}=\mathrm{Nag_NonUnitDiag}$
The diagonal elements of the matrix are referenced and printed.
Constraint: ${\mathbf{diag}}=\mathrm{Nag_NonRefDiag}$, $\mathrm{Nag_UnitDiag}$ or $\mathrm{Nag_NonUnitDiag}$.
4:     nIntegerInput
On entry: the order of the matrix to be printed.
If n is less than $1$, nag_pack_real_mat_print (x04ccc) will exit immediately after printing title; no row or column labels are printed.
5:     a[$\mathit{dim}$]const doubleInput
Note: the dimension, dim, of the array a must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{n}}×\left({\mathbf{n}}+1\right)/2\right)$.
On entry: the matrix to be printed. Note that a must have space for the diagonal elements of the matrix, even if these are not stored.
The storage of elements ${A}_{ij}$ depends on the order and uplo arguments as follows:
• if ${\mathbf{order}}=\mathrm{Nag_ColMajor}$ and ${\mathbf{uplo}}=\mathrm{Nag_Upper}$,
${A}_{ij}$ is stored in ${\mathbf{a}}\left[\left(j-1\right)×j/2+i-1\right]$, for $i\le j$;
• if ${\mathbf{order}}=\mathrm{Nag_ColMajor}$ and ${\mathbf{uplo}}=\mathrm{Nag_Lower}$,
${A}_{ij}$ is stored in ${\mathbf{a}}\left[\left(2n-j\right)×\left(j-1\right)/2+i-1\right]$, for $i\ge j$;
• if ${\mathbf{order}}=\mathrm{Nag_RowMajor}$ and ${\mathbf{uplo}}=\mathrm{Nag_Upper}$,
${A}_{ij}$ is stored in ${\mathbf{a}}\left[\left(2n-i\right)×\left(i-1\right)/2+j-1\right]$, for $i\le j$;
• if ${\mathbf{order}}=\mathrm{Nag_RowMajor}$ and ${\mathbf{uplo}}=\mathrm{Nag_Lower}$,
${A}_{ij}$ is stored in ${\mathbf{a}}\left[\left(i-1\right)×i/2+j-1\right]$, for $i\ge j$.
If ${\mathbf{diag}}=\mathrm{Nag_UnitDiag}$, the diagonal elements of $A$ are assumed to be $1$, and are not referenced; the same storage scheme is used whether ${\mathbf{diag}}=\mathrm{Nag_NonUnitDiag}$ or ${\mathbf{diag}}=\mathrm{Nag_UnitDiag}$.
6:     titleconst char *Input
On entry: a title to be printed above the matrix.
If ${\mathbf{title}}=\mathbf{NULL}$, no title (and no blank line) will be printed.
If title contains more than $80$ characters, the contents of title will be wrapped onto more than one line, with the break after $80$ characters.
Any trailing blank characters in title are ignored.
7:     outfileconst char *Input
On entry: the name of a file to which output will be directed. If outfile is NULL the output will be directed to standard output.
8:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_ALLOC_FAIL
Memory allocation failed.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
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_NOT_APPEND_FILE
Cannot open file $"〈\mathit{\text{value}}〉"$ for appending.
NE_NOT_CLOSE_FILE
Cannot close file $"〈\mathit{\text{value}}〉"$.
NE_NOT_WRITE_FILE
Cannot open file $"〈\mathit{\text{value}}〉"$ for writing .

## 7  Accuracy

Not applicable.

A call to nag_pack_real_mat_print (x04ccc) is equivalent to a call to nag_pack_real_mat_print_comp (x04cdc) with the following argument values:
```
ncols = 80
indent = 0
labrow = Nag_IntegerLabels
labcol = Nag_IntegerLabels
form = 0

```

## 9  Example

See Section 9 in nag_sum_sqs_update (g02btc).