This section describes the solution of eigenvalue problems in complex
arithmetic.
The reverse communication interface subroutine for the double precision
complex eigenvalue problem is `znaupd` . This routine is to be used
for both Hermitian and non-Hermitian problems.
The routine is called as shown in Figure 3.8.
It should be noted that the calling sequences for `znaupd` and
`zneupd` differ slightly from those of `dnaupd` and `dneupd`.
The main difference is that an additional work array
`rwork` is required by `znaupd` that is not required by
`dnaupd`.

Occasionally, when using `znaupd` on a complex Hermitian problem,
eigenvalues will be returned with small but non-zero imaginary part due to
unavoidable round-off errors. These should be ignored unless they are
significant with respect to the eigenvalues of largest magnitude that
have been computed. There is little computational penalty for
using the non-Hermitian routines in this case. The only
additional cost is to compute eigenvalues of a Hessenberg rather than
a tridiagonal matrix. For the problem configurations this software is designed
to solve, the size of these matrices are small enough that the
differences in computational cost are negligible compared to the
major work that is required.

call znaupd ( ido, bmat, n, which, nev, tol, resid, ncv, v, & ldv, iparam, ipntr, workd, workl, lworkl, rwork,info ) |

The integer `ido` is the reverse communication flag
that specifies a requested action on return from `dnaupd`.
The `character*1` parameter `bmat` specifies if this is
a standard `bmat = 'I'` or a generalized `bmat = 'G'`
problem. The integer `n` specifies the dimension of the problem.
The `character*2` parameter `which` may take the same
possible values listed for subroutine `dnaupd` in Table 3.4.

There are three shift-invert modes for complex problems. These
modes are specified by setting the parameter
entry `iparam(7) = mode` where `mode = 1,2, or 3`.

In the following list, the specification of `OP` and are given
for the various modes. Also, the `iparam(7)` and `bmat`
settings are listed along with the name of the sample driver
for the given mode. Sample drivers for the following modes may be
found in the `EXAMPLES/COMPLEX` subdirectory.

- 1.
- Regular mode (
`iparam(7) = 1, bmat = 'I'`). Use driver`zndrv1`.- (a)
- Solve in regular mode.
- (b)
- and

- 2.
- Shift-invert mode (
`iparam(7) = 3, bmat = 'I'`). Use driver`zndrv2`.- (a)
- Solve in shift-invert mode.
- (b)
- and

- 3.
- Regular inverse mode (
`iparam(7) = 2, bmat = 'G'`). Use driver`zndrv3`.- (a)
- Solve in regular inverse mode.
- (b)
- and

- 4.
- Shift-invert mode (
`iparam(7) = 3, bmat = 'G'`). Use driver`zndrv4`.- (a)
- Solve in shift-invert mode.
- (b)
- and