**CXML **
##
dapply_poly_sdia

Apply polynomial preconditioner for symmetric diagonal
storage (Serial and Parallel Versions)

#### FORMAT

**DAPPLY_POLY_SDIA**
(*job*, *p*, *a*, *ia*, *ndim*, *nz*, *x*, *y*, *ndeg*, *n*)

#### Arguments

**job** integer*4
On entry, defines the operation to be performed:
*job* = 0 : y = inverse(Q) * x
*job* = 1 : y = inverse(transp(Q)) * x
where Q is the polynomial preconditioner.
On exit, *job* is unchanged.
**p** real*8
On entry, a one-dimensional array of length at least
3*n that contains information for use by the polynomial
preconditioner and workspace.
On exit, the part of array P that contains the
information related to the polynomial preconditioner is
unchanged. The part used as workspace is overwritten.
**a** real*8
On entry, a two-dimensional array with dimensions ndim
by nz containing the nonzero elements of the matrix A.
On exit, *a* is unchanged.
**ia** integer*4
On entry, a one-dimensional array of length at least
nz, containing the distances of the diagonals from the
main diagonal.
On exit, *ia* is unchanged.
**ndim** integer*4
On entry, the leading dimension of array A, as declared
in the calling subprogram; ndim >= n.
On exit, *ndim* is unchanged.
**nz** integer*4
On entry, the number of diagonals stored in array A.
On exit, *nz* is unchanged.
**x** real*8
On entry, a one-dimensional array of length at least n,
containing the elements of vector x, accessed with unit
increment.
On exit, *x* is unchanged.
**y** real*8
On entry, a one-dimensional array of length at least n.
On exit, array Y is overwritten by the output vector y.
The elements of array Y are accessed with unit
increment.
**ndeg** integer*4
On entry, the degree of the polynomial in the
polynomial preconditioner.
On exit, *ndeg* is unchanged.
**n** integer*4
On entry, the order of the matrix A.
On exit, *n* is unchanged.

#### Description

DAPPLY_POLY_SDIA applies the polynomial preconditioner for a sparse matrix
stored using the symmetric diagonal storage scheme. The input vector, p,
contains information for use by the routine. This vector is generated by a
call to the routine DCREATE_POLY_SDIA prior to a call to one of the
iterative solvers with polynomial preconditioning. Depending on the value
of the input parameter *job*, DAPPLY_POLY_SDIA operates on either the
preconditioning matrix or its transpose.
This routine is available in both serial and parallel versions. The routine
names and parameter list are identical for both versions. For information
about linking to the serial or to the parallel library, refer to the CXML
Reference Manual.

** CXML Home Page ****Index of CXML Routines **