DAPPLY_DIAG_ALL (p, x, y, n)
p real*8 On entry, a one-dimensional array of length at least n containing information for use by the polynomial preconditioner. On exit, p 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 inverse(Q) * x, where Q is the diagonal preconditioner. The elements of Y are accessed with unit increment. n integer*4 On entry, the order of the matrix A. On exit, n is unchanged.
DAPPLY_DIAG_ALL applies the diagonal preconditioner for a sparse matrix stored using any one of the three storage schemes --- symmetric diagonal, unsymmetric diagonal, or general storage by rows. The input vector, p, contains information for use by the routine. This vector is generated by a call to one of the routines DCREATE_DIAG_SDIA, DCREATE_DIAG_UDIA or DCREATE_DIAG_GENR prior to a call to one of the iterative solvers with diagonal preconditioning. DAPPLY_DIAG_ALL applies the diagonal preconditioner, Q, using information stored in the vector p, to the vector x and returns the result in vector y: y = inverse(Q) * x 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.