F04ZCF (PDF version)
F04 Chapter Contents
F04 Chapter Introduction
NAG Library Manual

NAG Library Routine Document

F04ZCF

Note:  before using this routine, please read the Users' Note for your implementation to check the interpretation of bold italicised terms and other implementation-dependent details.

 Contents

    1  Purpose
    7  Accuracy

1  Purpose

F04ZCF estimates the 1-norm of a complex matrix without accessing the matrix explicitly. It uses reverse communication for evaluating matrix-vector products. The routine may be used for estimating matrix condition numbers.

2  Specification

SUBROUTINE F04ZCF ( ICASE, N, X, ESTNRM, WORK, IFAIL)
INTEGER  ICASE, N, IFAIL
REAL (KIND=nag_wp)  ESTNRM
COMPLEX (KIND=nag_wp)  X(N), WORK(N)

3  Description

F04ZCF computes an estimate (a lower bound) for the 1-norm
A1 = max 1jn i=1 n aij (1)
of an n by n complex matrix A=aij. The routine regards the matrix A as being defined by a user-supplied ‘Black Box’ which, given an input vector x, can return either of the matrix-vector products Ax or AHx, where AH is the complex conjugate transpose. A reverse communication interface is used; thus control is returned to the calling program whenever a matrix-vector product is required.
Note:  this routine is not recommended for use when the elements of A are known explicitly; it is then more efficient to compute the 1-norm directly from the formula (1) above.
The main use of the routine is for estimating B-11, and hence the condition number κ1B=B1B-11, without forming B-1 explicitly (A=B-1 above).
If, for example, an LU factorization of B is available, the matrix-vector products B-1x and B-Hx required by F04ZCF may be computed by back- and forward-substitutions, without computing B-1.
The routine can also be used to estimate 1-norms of matrix products such as A-1B and ABC, without forming the products explicitly. Further applications are described in Higham (1988).
Since A=AH1, F04ZCF can be used to estimate the -norm of A by working with AH instead of A.
The algorithm used is based on a method given in Hager (1984) and is described in Higham (1988). A comparison of several techniques for condition number estimation is given in Higham (1987).
Note: F04ZDF can also be used to estimate the norm of a real matrix. F04ZDF uses a more recent algorithm than F04ZCF and it is recommended that F04ZDF be used in place of F04ZCF.

4  References

Hager W W (1984) Condition estimates SIAM J. Sci. Statist. Comput. 5 311–316
Higham N J (1987) A survey of condition number estimation for triangular matrices SIAM Rev. 29 575–596
Higham N J (1988) FORTRAN codes for estimating the one-norm of a real or complex matrix, with applications to condition estimation ACM Trans. Math. Software 14 381–396

5  Parameters

Note:  this routine uses reverse communication. Its use involves an initial entry, intermediate exits and re-entries, and a final exit, as indicated by the parameter ICASE. Between intermediate exits and re-entries, all parameters other than X must remain unchanged.
1:     ICASE – INTEGERInput/Output
On initial entry: must be set to 0.
On intermediate exit: ICASE=1 or 2, and Xi, for i=1,2,,n, contain the elements of a vector x. The calling program must
(a) evaluate Ax (if ICASE=1) or AHx (if ICASE=2), where AH is the complex conjugate transpose;
(b) place the result in X; and,
(c) call F04ZCF once again, with all the other parameters unchanged.
On final exit: ICASE=0.
2:     N – INTEGERInput
On initial entry: n, the order of the matrix A.
Constraint: N1.
3:     XN – COMPLEX (KIND=nag_wp) arrayInput/Output
On initial entry: need not be set.
On intermediate exit: contains the current vector x.
On intermediate re-entry: must contain Ax (if ICASE=1) or AHx (if ICASE=2).
On final exit: the array is undefined.
4:     ESTNRM – REAL (KIND=nag_wp)Input/Output
On initial entry: need not be set.
On intermediate exit: should not be changed.
On final exit: an estimate (a lower bound) for A1.
5:     WORKN – COMPLEX (KIND=nag_wp) arrayInput/Output
On initial entry: need not be set.
On final exit: contains a vector v such that v=Aw where ESTNRM=v1/w1 (w is not returned). If A=B-1 and ESTNRM is large, then v is an approximate null vector for B.
6:     IFAIL – INTEGERInput/Output
On entry: IFAIL must be set to 0, -1​ or ​1. If you are unfamiliar with this parameter you should refer to Section 3.3 in the Essential Introduction for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value -1​ or ​1 is recommended. If the output of error messages is undesirable, then the value 1 is recommended. Otherwise, if you are not familiar with this parameter, the recommended value is 0. When the value -1​ or ​1 is used it is essential to test the value of IFAIL on exit.
On exit: IFAIL=0 unless the routine detects an error or a warning has been flagged (see Section 6).

6  Error Indicators and Warnings

If on entry IFAIL=0 or -1, explanatory error messages are output on the current error message unit (as defined by X04AAF).
Errors or warnings detected by the routine:
IFAIL=1
On entry,N<1.
IFAIL=-99
An unexpected error has been triggered by this routine. Please contact NAG.
See Section 3.8 in the Essential Introduction for further information.
IFAIL=-399
Your licence key may have expired or may not have been installed correctly.
See Section 3.7 in the Essential Introduction for further information.
IFAIL=-999
Dynamic memory allocation failed.
See Section 3.6 in the Essential Introduction for further information.

7  Accuracy

In extensive tests on random matrices of size up to n=100 the estimate ESTNRM has been found always to be within a factor eleven of A1; often the estimate has many correct figures. However, matrices exist for which the estimate is smaller than A1 by an arbitrary factor; such matrices are very unlikely to arise in practice. See Higham (1988) for further details.

8  Parallelism and Performance

F04ZCF is not threaded by NAG in any implementation.
F04ZCF makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this routine. Please also consult the Users' Note for your implementation for any additional implementation-specific information.

9  Further Comments

9.1  Timing

The total time taken by F04ZCF is proportional to n. For most problems the time taken during calls to F04ZCF will be negligible compared with the time spent evaluating matrix-vector products between calls to F04ZCF.
The number of matrix-vector products required varies from 5 to 11 (or is 1 if n=1). In most cases 5 products are required; it is rare for more than 7 to be needed.

9.2  Overflow

It is your responsibility to guard against potential overflows during evaluation of the matrix-vector products. In particular, when estimating B-11 using a triangular factorization of B, F04ZCF should not be called if one of the factors is exactly singular – otherwise division by zero may occur in the substitutions.

9.3  Use in Conjunction with NAG Library Routines

To estimate the 1-norm of the inverse of a matrix A, the following skeleton code can normally be used:
      ...  code to factorize A ...
      IF (A is not singular) THEN
         ICASE = 0
10       CALL F04ZCF (ICASE,N,X,ESTNRM,WORK,IFAIL)
         IF (ICASE.NE.0) THEN
            IF (ICASE.EQ.1) THEN
               ...  code to compute A(-1)x ...
            ELSE
               ...  code to compute (A(-1)(H)) x ...
            END IF
            GO TO 10
         END IF
      END IF
To compute A-1x or A-Hx, solve the equation Ay=x or AHy=x for y, overwriting y on x. The code will vary, depending on the type of the matrix A, and the NAG routine used to factorize A.
Note that if A is any type of Hermitian matrix, then A=AH, and the code following the call of F04ZCF can be reduced to:
IF (ICASE.NE.0) THEN
   ...  code to compute A(-1)x ...
   GO TO 10
END IF
The example program in Section 10 illustrates how F04ZCF can be used in conjunction with NAG Library routines for complex band matrices (factorized by F07BRF (ZGBTRF)).
It is also straightforward to use F04ZCF for Hermitian positive definite matrices, using F06TFF, F07FRF (ZPOTRF) and F07FSF (ZPOTRS) for factorization and solution.
For upper or lower triangular matrices, no factorization routine is needed: A-1x and A-Hx may be computed by calls to F06SJF (ZTRSV) (or F06SKF (ZTBSV) if the matrix is banded, or F06SLF (ZTPSV) if the matrix is stored in packed form).

10  Example

This example estimates the condition number A1A-11 of the order 5 matrix
A = 1+0i 2+0i 1+2i 0i+0 0i+0 2i 3+5i 1+3i 2+0i 0i+0 0i+0 -2+6i 5+7i 6i 1-0i 0i+0 0i+0 3+9i 4i 4-3i 0i+0 0i+0 0i+0 -1+8i 10-3i  
where A is a band matrix stored in the packed format required by F07BRF (ZGBTRF) and F07BSF (ZGBTRS).
Further examples of the technique for condition number estimation in the case of real matrices can be seen in the example program section of F04YCF.

10.1  Program Text

Program Text (f04zcfe.f90)

10.2  Program Data

Program Data (f04zcfe.d)

10.3  Program Results

Program Results (f04zcfe.r)


F04ZCF (PDF version)
F04 Chapter Contents
F04 Chapter Introduction
NAG Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2015