ZEAL: a mathematical software package for computing zeros of analytic functions. P. Kravanja, M. Van Barel, O. Ragos, M.N. Vrahatis, F.A. Zafiropoulos.

Title of program: ZEAL
Catalogue identifier: ADKW
Ref. in CPC: 124(2000)212
Distribution format: tar gzip file
Operating system: UNIX (HPUX 11.0,AIX 3.2.5,SunOS 5.5.1,IRIX64 6.4
High speed store required: 500K words
Number of bits in a word: 32
Number of lines in distributed program, including test data, etc: 17024
Programming language used: Fortran
Computer: HP 9000 B160L

Nature of physical problem:
ZEAL is a general purpose package for computing zeros of analytic functions. It can be used in various physical applications. More precisely, given a rectangular region W in the complex plane and an analytic function f : W -> C, such that no zero of f lies on the boundary of W, ZEAL calculates all the zeros of f that lie inside W, together with their respective multiplicities.

Method of solution
The package ZEAL uses an integral formula to compute the total number of zeros (counting multiplicities) of f that lie inside W. Then, by using the same procedure, the region W is subdivided into subregions that contain at most M zeros (again counting multiplicities), where the value of M is specified by the user. Approximations for these zeros are calculated via an algorithm that is based on numerical integration along the boundaries of the subregions and generalized eigenvalue problems. The multiplicities of the zeros are calculated by solving a Vandermonde system. The approximations for the zeros are refined via the modified Newton's method, which takes into account the multiplicity of a zero and converges quadratically.

Restrictions on the complexity of the problem
The function f has to be analytic in the rectangular region W. Both f and its derivative f' are needed. The edges of W have to be parallel to the coordinate axes. The boundary of W is not allowed to contain zeros of f. Since, in the sequel, W is repeatedly subdivided, the boundaries of the obtained subregions should not contain zeros of f. The possibility of such a situation can be minimized if W is not symmetric with respect to the axes. ZEAL is not specifically designed to handle clusters of zeros. However, if f has one or more clusters of zeros and the input parameter EPS_STOP is given a proper (problem-dependent) value, then ZEAL will compute approximations for the centres of the clusters. The "multiplicity" of a centre is equal to the total number of zeros that belong to the corresponding cluster.

Typical running time
The following table gives the running times (in seconds) for the test runs of Section 4:

       System library   Code included in ZEAL          
    Test run #1    0.13 (0.13)         0.18 (0.14)               
    Test run #2    1.82 (1.04)         1.65 (1.14)               
    Test run #3    1.55 (1.14)         1.60 (1.42)               
    Test run #4    1.52 (1.15)         1.62 (1.35)               
    Test run #5    0.65 (0.41)         1.62 (0.37)               
    Test run #6    1.56 (0.56)         1.54 (0.53)               
The calculations have been done on a SUN SPARC Ultra-2 m1170. We have used the subroutine ETIME. The parenthesized running times correspond to optimized compiling. ZEAL uses a number of routines from the BLAS and LAPACK libraries. These Fortran 77 routines are distributed together with ZEAL to enable the user to compile them in case the BLAS and LAPACK libraries are not available on his/her computer system. The column labelled "System library" gives the running times in case ZEAL uses the BLAS and LAPACK libraries that are installed on our SUN computer. The column labelled "Code included in ZEAL" gives the running times in case the Fortran 77 routines distributed with ZEAL are used.