Added (S,D,C,Z) (SY,HE) routines, drivers for new rook code
authorJulie <julie@cs.utk.edu>
Wed, 16 Nov 2016 04:39:35 +0000 (20:39 -0800)
committerJulie <julie@cs.utk.edu>
Wed, 16 Nov 2016 04:39:35 +0000 (20:39 -0800)
commitead2c73f1a6dad1342bf32987c0b2f2eaf61f18a
treeb82e9ad49e12960ad410a418d03d68adc7e2e653
parent39698bc46ca55081ebd94c81c5c95771c9f125cd
Added (S,D,C,Z) (SY,HE) routines, drivers for new rook code

Close #82

Added routines for new factorization code for symmetric indefinite
( or Hermitian indefinite ) matrices with bounded Bunch-Kaufman
( rook ) pivoting algorithm.

New more efficient storage format for factors U ( or L ),
block-diagonal matrix D, and pivoting information stored in IPIV:

factor L is stored explicitly in lower triangle of A;
diagonal of D is stored on the diagonal of A;
subdiagonal elements of D are stored in array E;
IPIV format is the same as in *_ROOK routines, but differs
from SY Bunch-Kaufman routines (e.g. *SYTRF).
The factorization output of these new rook _RK routines is not
compatible
with the existing _ROOK routines and vice versa. This new factorization
format is designed in such a way, that there is a possibility in the
future
to write new Bunch-Kaufman routines that conform to this new
factorization format.
Then the future Bunch-Kaufman routines could share solver
*TRS_3,inversion *TRI_3
and condition estimator *CON_3.

To convert between the factorization formats in both ways the following
routines
are developed:

CONVERSION ROUTINES BETWEEN FACTORIZATION FORMATS

DOUBLE PRECISION (symmetric indefinite matrices):

new file:   SRC/dsyconvf.f
new file:   SRC/dsyconvf_rook.f
REAL (symmetric indefinite matrices):

new file:   SRC/csyconvf.f
new file:   SRC/csyconvf_rook.f
COMPLEX*16 (symmetric indefinite and Hermitian indefinite matrices):

new file:   SRC/zsyconvf.f
new file:   SRC/zsyconvf_rook.f
COMPLEX (symmetric indefinite and Hermitian indefinite matrices):

new file:   SRC/ssyconvf.f
new file:   SRC/ssyconvf_rook.f
*SYCONVF routine converts between old Bunch-Kaufman storage format (
denote (L1,D1,IPIV1) )
that is used by *SYTRF and new rook storage format ( denote (L2,D2,
IPIV2))
that is used by *SYTRF_RK

*SYCONVF_ROOK routine between old rook storage format ( denote
(L1,D1,IPIV2) )
that is used by *SYTRF_ROOK and new rook storage format ( denote
(L2,D2, IPIV2))
that is used by *SYTRF_RK

ROUTINES AND DRIVERS

DOUBLE PRECISION (symmetric indefinite matrices):

new file:   SRC/dsytf2_rk.f BLAS2 unblocked factorization
new file:   SRC/dlasyf_rk.f BLAS3 auxiliary blocked partial
factorization
new file:   SRC/dsytrf_rk.f BLAS3 blocked factorization
new file:   SRC/dsytrs_3.f BLAS3 solver
new file:   SRC/dsycon_3.f BLAS3 condition number estimator
new file:   SRC/dsytri_3.f BLAS3 inversion, sets the size of work array
and calls *sytri_3x
new file:   SRC/dsytri_3x.f BLAS3 auxiliary inversion, actually
computes blocked inversion
new file:   SRC/dsysv_rk.f BLAS3 solver driver
REAL (symmetric indefinite matrices):

new file:   SRC/ssytf2_rk.f BLAS2 unblocked factorization
new file:   SRC/slasyf_rk.f BLAS3 auxiliary blocked partial
factorization
new file:   SRC/ssytrf_rk.f BLAS3 blocked factorization
new file:   SRC/ssytrs_3.f BLAS3 solver
new file:   SRC/ssycon_3.f BLAS3 condition number estimator
new file:   SRC/ssytri_3.f BLAS3 inversion, sets the size of work array
and calls *sytri_3x
new file:   SRC/ssytri_3x.f BLAS3 auxiliary inversion, actually
computes blocked inversion
new file:   SRC/ssysv_rk.f BLAS3 solver driver
COMPLEX*16 (symmetric indefinite matrices):

new file:   SRC/zsytf2_rk.f BLAS2 unblocked factorization
new file:   SRC/zlasyf_rk.f BLAS3 auxiliary blocked partial
factorization
new file:   SRC/zsytrf_rk.f BLAS3 blocked factorization
new file:   SRC/zsytrs_3.f BLAS3 solver
new file:   SRC/zsycon_3.f BLAS3 condition number estimator
new file:   SRC/zsytri_3.f BLAS3 inversion, sets the size of work array
and calls *sytri_3x
new file:   SRC/zsytri_3x.f BLAS3 auxiliary inversion, actually
computes blocked inversion
new file:   SRC/zsysv_rk.f BLAS3 solver driver
COMPLEX*16 (Hermitian indefinite matrices):

new file:   SRC/zhetf2_rk.f BLAS2 unblocked factorization
new file:   SRC/zlahef_rk.f BLAS3 auxiliary blocked partial
factorization
new file:   SRC/zhetrf_rk.f BLAS3 blocked factorization
new file:   SRC/zhetrs_3.f BLAS3 solver
new file:   SRC/zhecon_3.f BLAS3 condition number estimator
new file:   SRC/zhetri_3.f BLAS3 inversion, sets the size of work array
and calls *sytri_3x
new file:   SRC/zhetri_3x.f BLAS3 auxiliary inversion, actually
computes blocked inversion
new file:   SRC/zhesv_rk.f BLAS3 solver driver
COMPLEX (symmetric indefinite matrices):

new file:   SRC/csytf2_rk.f BLAS2 unblocked factorization
new file:   SRC/clasyf_rk.f BLAS3 auxiliary blocked partial
factorization
new file:   SRC/csytrf_rk.f BLAS3 blocked factorization
new file:   SRC/csytrs_3.f BLAS3 solver
new file:   SRC/csycon_3.f BLAS3 condition number estimator
new file:   SRC/csytri_3.f BLAS3 inversion, sets the size of work array
and calls *sytri_3x
new file:   SRC/csytri_3x.f BLAS3 auxiliary inversion, actually
computes blocked inversion
new file:   SRC/csysv_rk.f BLAS3 solver driver
COMPLEX (Hermitian indefinite matrices):

new file:   SRC/chetf2_rk.f BLAS2 unblocked factorization
new file:   SRC/clahef_rk.f BLAS3 auxiliary blocked partial
factorization
new file:   SRC/chetrf_rk.f BLAS3 blocked factorization
new file:   SRC/chetrs_3.f BLAS3 solver
new file:   SRC/checon_3.f BLAS3 condition number estimator
new file:   SRC/chetri_3.f BLAS3 inversion, sets the size of work array
and calls *sytri_3x
new file:   SRC/chetri_3x.f BLAS3 auxiliary inversion, actually
computes blocked inversion
new file:   SRC/chesv_rk.f BLAS3 solver driver
MISC

modified:   SRC/CMakeLists.txt
modified:   SRC/Makefile
TEST CODE

modified:   TESTING/LIN/CMakeLists.txt
modified:   TESTING/LIN/Makefile

modified:   TESTING/LIN/aladhd.f
modified:   TESTING/LIN/alaerh.f
modified:   TESTING/LIN/alahd.f
DOUBLE PRECISION (symmetric indefinite matrices):

modified:   TESTING/LIN/dchkaa.f
modified:   TESTING/LIN/derrsy.f
modified:   TESTING/LIN/derrsyx.f
modified:   TESTING/LIN/derrvx.f
modified:   TESTING/LIN/derrvxx.f

modified:   TESTING/dtest.in

new file:   TESTING/LIN/dchksy_rk.f
new file:   TESTING/LIN/ddrvsy_rk.f
new file:   TESTING/LIN/dsyt01_3.f
REAL (symmetric indefinite matrices):

modified:   TESTING/LIN/schkaa.f
modified:   TESTING/LIN/serrsy.f
modified:   TESTING/LIN/serrsyx.f
modified:   TESTING/LIN/serrvx.f
modified:   TESTING/LIN/serrvxx.f

modified:   TESTING/stest.in

new file:   TESTING/LIN/schksy_rk.f
new file:   TESTING/LIN/sdrvsy_rk.f
new file:   TESTING/LIN/ssyt01_3.f
COMPLEX*16 (symmetric indefinite and Hermitian indefinite matrices):

modified:   TESTING/LIN/zchkaa.f
modified:   TESTING/LIN/zerrsy.f
modified:   TESTING/LIN/zerrsyx.f
modified:   TESTING/LIN/zerrhe.f
modified:   TESTING/LIN/zerrhex.f
modified:   TESTING/LIN/zerrvx.f
modified:   TESTING/LIN/zerrvxx.f

modified:   TESTING/ztest.in

new file:   TESTING/LIN/zchksy_rk.f
new file:   TESTING/LIN/zdrvsy_rk.f
new file:   TESTING/LIN/zsyt01_3.f
new file:   TESTING/LIN/zchkhe_rk.f
new file:   TESTING/LIN/zdrvhe_rk.f
new file:   TESTING/LIN/zhet01_3.f
COMPLEX (symmetric indefinite and Hermitian indefinite matrices):

modified:   TESTING/LIN/cchkaa.f
modified:   TESTING/LIN/cerrsy.f
modified:   TESTING/LIN/cerrsyx.f
modified:   TESTING/LIN/cerrhe.f
modified:   TESTING/LIN/cerrhex.f
modified:   TESTING/LIN/cerrvx.f
modified:   TESTING/LIN/cerrvxx.f

modified:   TESTING/ctest.in

new file:   TESTING/LIN/cchksy_rk.f
new file:   TESTING/LIN/cdrvsy_rk.f
new file:   TESTING/LIN/csyt01_3.f
new file:   TESTING/LIN/cchkhe_rk.f
new file:   TESTING/LIN/cdrvhe_rk.f
new file:   TESTING/LIN/chet01_3.f
112 files changed:
SRC/CMakeLists.txt
SRC/Makefile
SRC/checon_3.f [new file with mode: 0644]
SRC/chesv_rk.f [new file with mode: 0644]
SRC/chetf2_rk.f [new file with mode: 0644]
SRC/chetrf_rk.f [new file with mode: 0644]
SRC/chetri_3.f [new file with mode: 0644]
SRC/chetri_3x.f [new file with mode: 0644]
SRC/chetrs_3.f [new file with mode: 0644]
SRC/chetrs_aa_REMOTE_88628.f [deleted file]
SRC/chetrs_aa_REMOTE_88868.f [deleted file]
SRC/clahef_rk.f [new file with mode: 0644]
SRC/clasyf_rk.f [new file with mode: 0644]
SRC/csycon_3.f [new file with mode: 0644]
SRC/csyconvf.f [new file with mode: 0644]
SRC/csyconvf_rook.f [new file with mode: 0644]
SRC/csysv_rk.f [new file with mode: 0644]
SRC/csytf2_rk.f [new file with mode: 0644]
SRC/csytrf_rk.f [new file with mode: 0644]
SRC/csytri_3.f [new file with mode: 0644]
SRC/csytri_3x.f [new file with mode: 0644]
SRC/csytrs_3.f [new file with mode: 0644]
SRC/dlasyf_rk.f [new file with mode: 0644]
SRC/dsycon_3.f [new file with mode: 0644]
SRC/dsyconvf.f [new file with mode: 0644]
SRC/dsyconvf_rook.f [new file with mode: 0644]
SRC/dsysv_rk.f [new file with mode: 0644]
SRC/dsytf2_rk.f [new file with mode: 0644]
SRC/dsytrf_rk.f [new file with mode: 0644]
SRC/dsytri_3.f [new file with mode: 0644]
SRC/dsytri_3x.f [new file with mode: 0644]
SRC/dsytrs_3.f [new file with mode: 0644]
SRC/slasyf_rk.f [new file with mode: 0644]
SRC/ssycon_3.f [new file with mode: 0644]
SRC/ssyconvf.f [new file with mode: 0644]
SRC/ssyconvf_rook.f [new file with mode: 0644]
SRC/ssysv_rk.f [new file with mode: 0644]
SRC/ssytf2_rk.f [new file with mode: 0644]
SRC/ssytrf_rk.f [new file with mode: 0644]
SRC/ssytri_3.f [new file with mode: 0644]
SRC/ssytri_3x.f [new file with mode: 0644]
SRC/ssytrs_3.f [new file with mode: 0644]
SRC/zhecon_3.f [new file with mode: 0644]
SRC/zhesv_rk.f [new file with mode: 0644]
SRC/zhetf2_rk.f [new file with mode: 0644]
SRC/zhetrf_rk.f [new file with mode: 0644]
SRC/zhetri_3.f [new file with mode: 0644]
SRC/zhetri_3x.f [new file with mode: 0644]
SRC/zhetrs_3.f [new file with mode: 0644]
SRC/zhetrs_aa_REMOTE_88959.f [deleted file]
SRC/zlahef_rk.f [new file with mode: 0644]
SRC/zlasyf_rk.f [new file with mode: 0644]
SRC/zsycon_3.f [new file with mode: 0644]
SRC/zsyconvf.f [new file with mode: 0644]
SRC/zsyconvf_rook.f [new file with mode: 0644]
SRC/zsysv_rk.f [new file with mode: 0644]
SRC/zsytf2_rk.f [new file with mode: 0644]
SRC/zsytrf_rk.f [new file with mode: 0644]
SRC/zsytri_3.f [new file with mode: 0644]
SRC/zsytri_3x.f [new file with mode: 0644]
SRC/zsytrs_3.f [new file with mode: 0644]
TESTING/LIN/CMakeLists.txt
TESTING/LIN/Makefile
TESTING/LIN/aladhd.f
TESTING/LIN/alaerh.f
TESTING/LIN/alahd.f
TESTING/LIN/cchkaa.f
TESTING/LIN/cchkhe_rk.f [new file with mode: 0644]
TESTING/LIN/cchksy_rk.f [new file with mode: 0644]
TESTING/LIN/cdrvhe_rk.f [new file with mode: 0644]
TESTING/LIN/cdrvsy_rk.f [new file with mode: 0644]
TESTING/LIN/cerrhe.f
TESTING/LIN/cerrhex.f
TESTING/LIN/cerrsy.f
TESTING/LIN/cerrsyx.f
TESTING/LIN/cerrvx.f
TESTING/LIN/cerrvxx.f
TESTING/LIN/chet01_3.f [new file with mode: 0644]
TESTING/LIN/csyt01_3.f [new file with mode: 0644]
TESTING/LIN/dchkaa.f
TESTING/LIN/dchksy_rk.f [new file with mode: 0644]
TESTING/LIN/ddrvsy_rk.f [new file with mode: 0644]
TESTING/LIN/derrsy.f
TESTING/LIN/derrsyx.f
TESTING/LIN/derrvx.f
TESTING/LIN/derrvxx.f
TESTING/LIN/dsyt01_3.f [new file with mode: 0644]
TESTING/LIN/schkaa.f
TESTING/LIN/schksy_rk.f [new file with mode: 0644]
TESTING/LIN/sdrvsy_rk.f [new file with mode: 0644]
TESTING/LIN/serrsy.f
TESTING/LIN/serrsyx.f
TESTING/LIN/serrvx.f
TESTING/LIN/serrvxx.f
TESTING/LIN/ssyt01_3.f [new file with mode: 0644]
TESTING/LIN/zchkaa.f
TESTING/LIN/zchkhe_rk.f [new file with mode: 0644]
TESTING/LIN/zchksy_rk.f [new file with mode: 0644]
TESTING/LIN/zdrvhe_rk.f [new file with mode: 0644]
TESTING/LIN/zdrvsy_rk.f [new file with mode: 0644]
TESTING/LIN/zerrhe.f
TESTING/LIN/zerrhex.f
TESTING/LIN/zerrsy.f
TESTING/LIN/zerrsyx.f
TESTING/LIN/zerrvx.f
TESTING/LIN/zerrvxx.f
TESTING/LIN/zhet01_3.f [new file with mode: 0644]
TESTING/LIN/zsyt01_3.f [new file with mode: 0644]
TESTING/ctest.in
TESTING/dtest.in
TESTING/stest.in
TESTING/ztest.in