A multi-precision Hari-Zimmermann complex GSVD.
A part of the supplementary material for the paper doi:10.1137/19M1277813 (arXiv:1907.08560 [math.NA]).
A recent 64-bit Linux (e.g., CentOS 7.9 with devtoolset-8) or macOS (e.g., Big Sur) is needed.
Then, clone and build JACSD in a directory parallel to this one.
Run make help
to see the options:
cd src
make help
Intel C/C++ and Fortran compilers (version 19.1+/2020+) are recommended.
GNU Fortran 9 and newer are not supported!
Please take a look here for the explanation regarding the MAX and MIN intrinsics.
Currently, only GNU Fortran 8 is fully supported with COMPILER=gnu
.
On RHEL/CentOS 7 it is provided by, e.g., devtoolset-8.
To run the executable, say, e.g.
OMP_NUM_THREADS=T OMP_PLACES=C /path/to/hzl1sa.exe FN M N JSTRAT NSWP
where T
is the number of threads, C
is the thread placement (e.g., CORES
), FN
is the file name prefix (without an extension) containing the input data, M
and N
are the number of rows and columns, respectively, JSTRAT
is a parallel Jacobi strategy to employ (e.g., 4
for mmstep
), and NSWP
is the maximal number of sweeps allowed (30
should suffice in many cases).
Data should be contained in FN.Y
, FN.W
, and FN.J
binary files.
The first two are Fortran-array-order files of KIND_FILE
element kind, where the first one stores the matrix F
and the second one the matrix G
, and both matrices are complex and expected to have M
rows and N
columns.
The third file contains the diagonal of the matrix J
as a vector of 8-byte integers.
The output comprises FN.YU
, FN.WV
, FN.Z
, for the complex matrices U
, V
(both M x N
), and Z
(N x N
); FN.SY
, FN.SW
, FN.SS
, for the real vectors \Sigma_F
, \Sigma_G
, and \Sigma
; and FN.EY
, FN.EW
, FN.E
, for the real vectors \Lambda_F
, \Lambda_G
, and \Lambda
, respectively, where all vectors are of length N
.
This work has been supported in part by Croatian Science Foundation under the project IP-2014-09-3670 (MFBDA).