c09 Chapter Contents
c09 Chapter Introduction
NAG Library Manual

# NAG Library Function Documentnag_imldwt (c09cdc)

## 1  Purpose

nag_imldwt (c09cdc) computes the inverse one-dimensional multi-level discrete wavelet transform (DWT). This function reconstructs data from (possibly filtered or otherwise manipulated) wavelet transform coefficients calculated by nag_mldwt (c09ccc) from an original set of data. The initialization function nag_wfilt (c09aac) must be called first to set up the DWT options.

## 2  Specification

 #include #include
 void nag_imldwt (Integer nwlinv, Integer lenc, const double c[], Integer n, double y[], const Integer icomm[], NagError *fail)

## 3  Description

nag_imldwt (c09cdc) performs the inverse operation of nag_mldwt (c09ccc). That is, given a set of wavelet coefficients, computed up to level ${n}_{\mathrm{fwd}}$ by nag_mldwt (c09ccc) using a DWT as set up by the initialization function nag_wfilt (c09aac), on a real data array of length $n$, nag_imldwt (c09cdc) will reconstruct the data array ${y}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$, from which the coefficients were derived. If the original input dataset is level $0$, then it is possible to terminate reconstruction at a higher level by specifying fewer than the number of levels used in the call to nag_mldwt (c09ccc). This results in a partial reconstruction.

None.

## 5  Arguments

1:     nwlinvIntegerInput
On entry: the number of levels to be used in the inverse multi-level transform. The number of levels must be less than or equal to ${n}_{\mathrm{fwd}}$, which has the value of argument nwl as used in the computation of the wavelet coefficients using nag_mldwt (c09ccc). The data will be reconstructed to level $\left({\mathbf{nwl}}-{\mathbf{nwlinv}}\right)$, where level $0$ is the original input dataset provided to nag_mldwt (c09ccc).
Constraint: $1\le {\mathbf{nwlinv}}\le {n}_{\mathrm{fwd}}$, where ${n}_{\mathrm{fwd}}$ is the value used in a preceding call to nag_mldwt (c09ccc).
2:     lencIntegerInput
On entry: the dimension of the array c.
Constraint: ${\mathbf{lenc}}\ge {n}_{c}$, where ${n}_{c}$ is the total number of coefficients that correspond to a transform with nwlinv levels and is unchanged from the preceding call to nag_mldwt (c09ccc).
3:     c[lenc]const doubleInput
On entry: the coefficients of a multi-level wavelet transform of the dataset.
Let $q\left(\mathit{i}\right)$ be the number of coefficients (of each type) at level $\mathit{i}$, for $\mathit{i}={n}_{\mathrm{fwd}},{n}_{\mathrm{fwd}}-1,\dots ,1$. Then, setting ${k}_{1}=q\left({n}_{\mathrm{fwd}}\right)$ and ${k}_{\mathit{j}+1}={k}_{\mathit{j}}+q\left({n}_{\mathrm{fwd}}-\mathit{j}+1\right)$, for $\mathit{j}=1,2,\dots ,{n}_{\mathrm{fwd}}$, the coefficients are stored in c as follows:
${\mathbf{c}}\left[\mathit{i}-1\right]$, for $\mathit{i}=1,2,\dots ,{k}_{1}$
Contains the level ${n}_{\mathrm{fwd}}$ approximation coefficients, ${a}_{{n}_{\mathrm{fwd}}}$.
${\mathbf{c}}\left[\mathit{i}-1\right]$, for $\mathit{i}={k}_{1}+1,\dots ,{k}_{2}$
Contains the level ${n}_{\mathrm{fwd}}$ detail coefficients ${d}_{{n}_{\mathrm{fwd}}}$.
${\mathbf{c}}\left[\mathit{i}-1\right]$, for $\mathit{i}={k}_{j}+1,\dots ,{k}_{j+1}$
Contains the level ${n}_{\mathrm{fwd}}-\mathit{j}+1$ detail coefficients, for $\mathit{j}=2,3,\dots ,{n}_{\mathrm{fwd}}$.
The values $q\left(\mathit{i}\right)$, for $\mathit{i}={n}_{\mathrm{fwd}},{n}_{\mathrm{fwd}}-1,\dots ,1$, are contained in dwtlev which is produced as output by a preceding call to nag_mldwt (c09ccc). See nag_mldwt (c09ccc) for details.
4:     nIntegerInput
On entry: $n$, the length of the data array, $y$, to be reconstructed. For a full reconstruction of nwl levels, where nwl is as supplied to nag_mldwt (c09ccc), this must be the same as argument n used in the call to nag_mldwt (c09ccc). For a partial reconstruction of ${\mathbf{nwlinv}}<{\mathbf{nwl}}$, this must be equal to ${\mathbf{dwtlev}}\left[{\mathbf{nwlinv}}+1\right]$, as returned from nag_mldwt (c09ccc).
5:     y[n]doubleOutput
On exit: the dataset reconstructed from the multi-level wavelet transform coefficients and the transformation options supplied to the initialization function nag_wfilt (c09aac).
6:     icomm[$100$]const IntegerCommunication Array
On entry: contains details of the discrete wavelet transform and the problem dimension for the forward transform previously computed by nag_mldwt (c09ccc).
7:     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.
NE_ARRAY_DIM_LEN
On entry, lenc is set too small: ${\mathbf{lenc}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{lenc}}\ge ⟨\mathit{\text{value}}⟩$.
On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
NE_INITIALIZATION
Either the initialization function has not been called first or array icomm has been corrupted.
Either the initialization function was called with ${\mathbf{wtrans}}=\mathrm{Nag_SingleLevel}$ or array icomm has been corrupted.
On entry, n is inconsistent with the value passed to the initialization function: ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$, n should be $⟨\mathit{\text{value}}⟩$.
NE_INT_2
On entry, ${\mathbf{nwlinv}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nwlinv}}\ge 1$.
On entry, nwlinv is larger than the number of levels computed by the preceding call to nag_mldwt (c09ccc): ${\mathbf{nwlinv}}=⟨\mathit{\text{value}}⟩$, expected $\text{}=⟨\mathit{\text{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.

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

Not applicable.