c09 Chapter Contents
c09 Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_idwt_2d (c09ebc)

## 1  Purpose

nag_idwt_2d (c09ebc) computes the inverse two-dimensional discrete wavelet transform (DWT) at a single level. The initialization function nag_wfilt_2d (c09abc) must be called first to set up the DWT options.

## 2  Specification

 #include #include
 void nag_idwt_2d (Integer m, Integer n, const double ca[], Integer ldca, const double ch[], Integer ldch, const double cv[], Integer ldcv, const double cd[], Integer ldcd, double b[], Integer ldb, const Integer icomm[], NagError *fail)

## 3  Description

nag_idwt_2d (c09ebc) performs the inverse operation of function nag_dwt_2d (c09eac). That is, given sets of approximation, horizontal, vertical and diagonal coefficients computed by function nag_dwt_2d (c09eac) using a DWT as set up by the initialization function nag_wfilt_2d (c09abc), on a real matrix, $B$, nag_idwt_2d (c09ebc) will reconstruct $B$.

None.

## 5  Arguments

1:     mIntegerInput
On entry: number of rows, $m$, of data matrix $B$.
Constraint: this must be the same as the value m passed to the initialization function nag_wfilt_2d (c09abc).
2:     nIntegerInput
On entry: number of columns, $n$, of data matrix $B$.
Constraint: this must be the same as the value n passed to the initialization function nag_wfilt_2d (c09abc).
3:     ca[$\mathit{dim}$]const doubleInput
Note: the dimension, dim, of the array ca must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{ldca}}×{n}_{\mathrm{cn}}\right)$ where ${n}_{\mathrm{cn}}$ is the argument nwcn returned by function nag_wfilt_2d (c09abc).
The $\left(i,j\right)$th element of the matrix is stored in ${\mathbf{ca}}\left[\left(j-1\right)×{\mathbf{ldca}}+i-1\right]$.
On entry: contains the ${n}_{\mathrm{cm}}$ by ${n}_{\mathrm{cn}}$ matrix of approximation coefficients, ${C}_{a}$. This array will normally be the result of some transformation on the coefficients computed by function nag_dwt_2d (c09eac).
4:     ldcaIntegerInput
On entry: the stride separating matrix row elements in the array ca.
Constraint: ${\mathbf{ldca}}\ge {n}_{\mathrm{cm}}$, where ${n}_{\mathrm{cm}}={n}_{\mathrm{ct}}/\left(4{n}_{\mathrm{cn}}\right)$ and ${n}_{\mathrm{cn}}$, ${n}_{\mathrm{ct}}$ are returned by the initialization function nag_wfilt_2d (c09abc).
5:     ch[$\mathit{dim}$]const doubleInput
Note: the dimension, dim, of the array ch must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{ldch}}×{n}_{\mathrm{cn}}\right)$ where ${n}_{\mathrm{cn}}$ is the argument nwcn returned by function nag_wfilt_2d (c09abc).
The $\left(i,j\right)$th element of the matrix is stored in ${\mathbf{ch}}\left[\left(j-1\right)×{\mathbf{ldch}}+i-1\right]$.
On entry: contains the ${n}_{\mathrm{cm}}$ by ${n}_{\mathrm{cn}}$ matrix of horizontal coefficients, ${C}_{h}$. This array will normally be the result of some transformation on the coefficients computed by function nag_dwt_2d (c09eac).
6:     ldchIntegerInput
On entry: the stride separating matrix row elements in the array ch.
Constraint: ${\mathbf{ldch}}\ge {n}_{\mathrm{cm}}$, where ${n}_{\mathrm{cm}}={n}_{\mathrm{ct}}/\left(4{n}_{\mathrm{cn}}\right)$ and ${n}_{\mathrm{cn}}$, ${n}_{\mathrm{ct}}$ are returned by the initialization function nag_wfilt_2d (c09abc).
7:     cv[$\mathit{dim}$]const doubleInput
Note: the dimension, dim, of the array cv must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{ldcv}}×{n}_{\mathrm{cn}}\right)$ where ${n}_{\mathrm{cn}}$ is the argument nwcn returned by function nag_wfilt_2d (c09abc).
The $\left(i,j\right)$th element of the matrix is stored in ${\mathbf{cv}}\left[\left(j-1\right)×{\mathbf{ldcv}}+i-1\right]$.
On entry: contains the ${n}_{\mathrm{cm}}$ by ${n}_{\mathrm{cn}}$ matrix of vertical coefficients, ${C}_{v}$. This array will normally be the result of some transformation on the coefficients computed by function nag_dwt_2d (c09eac).
8:     ldcvIntegerInput
On entry: the stride separating matrix row elements in the array cv.
Constraint: ${\mathbf{ldcv}}\ge {n}_{\mathrm{cm}}$, where ${n}_{\mathrm{cm}}={n}_{\mathrm{ct}}/\left(4{n}_{\mathrm{cn}}\right)$ and ${n}_{\mathrm{cn}}$, ${n}_{\mathrm{ct}}$ are returned by the initialization function nag_wfilt_2d (c09abc).
9:     cd[$\mathit{dim}$]const doubleInput
Note: the dimension, dim, of the array cd must be at least $\mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,{\mathbf{ldcd}}×{n}_{\mathrm{cn}}\right)$ where ${n}_{\mathrm{cn}}$ is the argument nwcn returned by function nag_wfilt_2d (c09abc).
The $\left(i,j\right)$th element of the matrix is stored in ${\mathbf{cd}}\left[\left(j-1\right)×{\mathbf{ldcd}}+i-1\right]$.
On entry: contains the ${n}_{\mathrm{cm}}$ by ${n}_{\mathrm{cn}}$ matrix of diagonal coefficients, ${C}_{d}$. This array will normally be the result of some transformation on the coefficients computed by function nag_dwt_2d (c09eac).
10:   ldcdIntegerInput
On entry: the stride separating matrix row elements in the array cd.
Constraint: ${\mathbf{ldcd}}\ge {n}_{\mathrm{cm}}$, where ${n}_{\mathrm{cm}}={n}_{\mathrm{ct}}/\left(4{n}_{\mathrm{cn}}\right)$ and ${n}_{\mathrm{cn}}$, ${n}_{\mathrm{ct}}$ are returned by the initialization function nag_wfilt_2d (c09abc).
11:   b[${\mathbf{ldb}}×{\mathbf{n}}$]doubleOutput
Note: the $\left(i,j\right)$th element of the matrix $B$ is stored in ${\mathbf{b}}\left[\left(j-1\right)×{\mathbf{ldb}}+i-1\right]$.
On exit: the $m$ by $n$ reconstructed matrix, $B$, based on the input approximation, horizontal, vertical and diagonal coefficients and the transform options supplied to the initialization function nag_wfilt_2d (c09abc).
12:   ldbIntegerInput
On entry: the stride separating matrix row elements in the array b.
Constraint: ${\mathbf{ldb}}\ge {\mathbf{m}}$.
13:   icomm[$180$]const IntegerCommunication Array
On entry: contains details of the discrete wavelet transform and the problem dimension as setup in the call to the initialization function nag_wfilt_2d (c09abc).
14:   failNagError *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.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INITIALIZATION
Either the initialization function has not been called first or icomm has been corrupted.
Either the initialization function was called with ${\mathbf{wtrans}}=\mathrm{Nag_MultiLevel}$ or icomm has been corrupted.
NE_INT
On entry, ${\mathbf{ldca}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldca}}\ge 〈\mathit{\text{value}}〉$, the number of wavelet coefficients in the first dimension.
On entry, ${\mathbf{ldcd}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldcd}}\ge 〈\mathit{\text{value}}〉$, the number of wavelet coefficients in the first dimension.
On entry, ${\mathbf{ldch}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldch}}\ge 〈\mathit{\text{value}}〉$, the number of wavelet coefficients in the first dimension.
On entry, ${\mathbf{ldcv}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldcv}}\ge 〈\mathit{\text{value}}〉$, the number of wavelet coefficients in the first dimension.
On entry, ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{m}}=〈\mathit{\text{value}}〉$, the value of m on initialization (see nag_wfilt_2d (c09abc)).
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}=〈\mathit{\text{value}}〉$, the value of n on initialization (see nag_wfilt_2d (c09abc)).
NE_INT_2
On entry, ${\mathbf{ldb}}=〈\mathit{\text{value}}〉$ and ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{ldb}}\ge {\mathbf{m}}$.
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.

## 7  Accuracy

The accuracy of the wavelet transform depends only on the floating point operations used in the convolution and downsampling and should thus be close to machine precision.