|
qrupdate-ng 1.2.0
|
Routines for the Cholesky factorization of symmetric positive definite matrices and their updates. More...
Functions | |
| subroutine | cch1dn (n, r, ldr, u, rw, info) |
| Downdates a Cholesky factorization after a rank-1 modification. | |
| subroutine | cch1up (n, r, ldr, u, w) |
| Updates a Cholesky factorization after a rank-1 modification. | |
| subroutine | cchdex (n, r, ldr, j, rw) |
| Updates a Cholesky factorization after deleting a row and column. | |
| subroutine | cchinx (n, r, ldr, j, u, rw, info) |
| Updates a Cholesky factorization after inserting a row and column. | |
| subroutine | cchshx (n, r, ldr, i, j, w, rw) |
| Updates a Cholesky factorization after a symmetric shift of rows and columns. | |
| subroutine | dch1dn (n, r, ldr, u, w, info) |
| Downdates a Cholesky factorization after a rank-1 modification. | |
| subroutine | dch1up (n, r, ldr, u, w) |
| Updates a Cholesky factorization after a rank-1 modification. | |
| subroutine | dchdex (n, r, ldr, j, w) |
| Updates a Cholesky factorization after deleting a row and column. | |
| subroutine | dchinx (n, r, ldr, j, u, w, info) |
| Updates a Cholesky factorization after inserting a row and column. | |
| subroutine | dchshx (n, r, ldr, i, j, w) |
| Updates a Cholesky factorization after a symmetric shift of rows and columns. | |
| subroutine | sch1dn (n, r, ldr, u, w, info) |
| Downdates a Cholesky factorization after a rank-1 modification. | |
| subroutine | sch1up (n, r, ldr, u, w) |
| Updates a Cholesky factorization after a rank-1 modification. | |
| subroutine | schdex (n, r, ldr, j, w) |
| Updates a Cholesky factorization after deleting a row and column. | |
| subroutine | schinx (n, r, ldr, j, u, w, info) |
| Updates a Cholesky factorization after inserting a row and column. | |
| subroutine | schshx (n, r, ldr, i, j, w) |
| Updates a Cholesky factorization after a symmetric shift of rows and columns. | |
| subroutine | zch1dn (n, r, ldr, u, rw, info) |
| Downdates a Cholesky factorization after a rank-1 modification. | |
| subroutine | zch1up (n, r, ldr, u, w) |
| Updates a Cholesky factorization after a rank-1 modification. | |
| subroutine | zchdex (n, r, ldr, j, rw) |
| Updates a Cholesky factorization after deleting a row and column. | |
| subroutine | zchinx (n, r, ldr, j, u, rw, info) |
| Updates a Cholesky factorization after inserting a row and column. | |
| subroutine | zchshx (n, r, ldr, i, j, w, rw) |
| Updates a Cholesky factorization after a symmetric shift of rows and columns. | |
Routines for the Cholesky factorization of symmetric positive definite matrices and their updates.
This group implements methods to update the Cholesky factorization after matrix modifications, including rank-1 updates, downdates, and symmetric updates for column/row insertion, deletion, and circular shifts. The updates use Givens rotations to restore the upper triangular form of the factor.
| subroutine cch1dn | ( | integer, intent(in) | n, |
| complex(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| complex(real32), dimension(*), intent(inout) | u, | ||
| real(real32), dimension(*), intent(out) | rw, | ||
| integer, intent(out) | info ) |
Downdates a Cholesky factorization after a rank-1 modification.
!> subroutine cch1dn(n,R,ldr,u,rw,info) !> !> .. Scalar Arguments .. !> integer n, ldr, info !> .. !> .. Array Arguments .. !> complex R(ldr,*), u(*) !> real rw(*) !> .. !>
!> !> CCH1DN downdates the Cholesky factorization of a hermitian !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R'*R, where R' denotes the conjugate transpose of R, this !> CCH1DN downdates R -> R1 so that R1'*R1 = A - u*u', where u !> is a given vector. !> !> The downdate is performed by applying a sequence of hyperbolic !> rotations to restore the upper triangular structure of R. On !> exit, u contains the rotation sines and rw contains the rotation !> cosines used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A - u*u'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is COMPLEX array, dimension (n) !> On entry, the vector determining the rank-1 downdate. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | rw | !> rw is REAL array, dimension (n) !> On exit, rw contains the cosine parts of the !> rotations used to transform R to R1. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> |
Definition at line 97 of file cch1dn.f90.
| subroutine cch1up | ( | integer, intent(in) | n, |
| complex(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| complex(real32), dimension(*), intent(inout) | u, | ||
| real(real32), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after a rank-1 modification.
!> subroutine cch1up(n,R,ldr,u,w) !> !> .. Scalar Arguments .. !> integer n, ldr !> .. !> .. Array Arguments .. !> complex R(ldr,*), u(*) !> real w(*) !> .. !>
!> !> CCH1UP updates the Cholesky factorization of a hermitian !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R'*R, where R' denotes the conjugate transpose of R, this !> CCH1UP updates R -> R1 so that R1'*R1 = A + u*u', where u is !> a given vector. !> !> The update is performed by applying a sequence of Givens rotations !> to restore the upper triangular structure of R. On exit, u !> contains the rotation sines and w contains the rotation cosines !> used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A + u*u'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is COMPLEX array, dimension (n) !> On entry, the vector determining the rank-1 update. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | w | !> w is REAL array, dimension (n) !> On exit, w contains the cosine parts of the Givens !> rotations used to transform R to R1. !> |
Definition at line 89 of file cch1up.f90.
| subroutine cchdex | ( | integer, intent(in) | n, |
| complex(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| real(real32), dimension(*), intent(out) | rw ) |
Updates a Cholesky factorization after deleting a row and column.
!> subroutine cchdex(n,R,ldr,j,rw) !> !> .. Scalar Arguments .. !> integer n, ldr, j !> .. !> .. Array Arguments .. !> complex R(ldr,*) !> real rw(*) !> .. !>
!> !> CCHDEX updates the Cholesky factorization of a hermitian !> positive definite matrix A after deleting a row/column. !> Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R'*R, where R' denotes the conjugate !> transpose of R, CCHDEX updates R -> R1 so that !> R1'*R1 = A(jj,jj), where jj = [1:j-1, j+1:n+1]. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(jj,jj). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | j | !> j is INTEGER !> The position of the deleted row/column. !> |
| [out] | rw | !> rw is REAL array, dimension (n) !> A workspace vector. !> |
Definition at line 81 of file cchdex.f90.
| subroutine cchinx | ( | integer, intent(in) | n, |
| complex(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| complex(real32), dimension(*), intent(inout) | u, | ||
| real(real32), dimension(*), intent(out) | rw, | ||
| integer, intent(out) | info ) |
Updates a Cholesky factorization after inserting a row and column.
!> subroutine cchinx(n,R,ldr,j,u,rw,info) !> !> .. Scalar Arguments .. !> integer n, j, ldr, info !> .. !> .. Array Arguments .. !> complex R(ldr,*), u(*), rw(*) !> .. !>
!> !> CCHINX updates the Cholesky factorization of a hermitian !> positive definite matrix A after inserting a row and column. !> Given an upper triangular matrix R that is a Cholesky factor of !> A, i.e., A = R'*R, where R' denotes the conjugate transpose of !> R, CCHINX updates R -> R1 so that R1'*R1 = A1, where !> A1(jj,jj) = A, A1(j,:) = u', A1(:,j) = u, and !> jj = [1:j-1, j+1:n+1]. !> !> On exit, u is destroyed and R is extended by one row and column. !> The insertion is performed by first solving R'*u = v, checking !> positive definiteness, and then retriangularizing. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX array, dimension (ldr,n+1) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A1. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n+1. !> |
| [in] | j | !> j is INTEGER !> The position of the inserted row and column. !> 1 <= j <= n+1. !> |
| [in,out] | u | !> u is COMPLEX array, dimension (n+1) !> On entry, the vector defining the inserted row/column. !> On exit, u is destroyed. !> |
| [out] | rw | !> rw is REAL array, dimension (n+1) !> Workspace vector used to store rotation cosines during !> the retriangularization. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> = 3: the diagonal element of u is not real !> |
Definition at line 103 of file cchinx.f90.
| subroutine cchshx | ( | integer, intent(in) | n, |
| complex(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | i, | ||
| integer, intent(in) | j, | ||
| complex(real32), dimension(*), intent(out) | w, | ||
| real(real32), dimension(*), intent(out) | rw ) |
Updates a Cholesky factorization after a symmetric shift of rows and columns.
!> subroutine cchshx(n,R,ldr,i,j,w,rw) !> !> .. Scalar Arguments .. !> integer n, ldr, i, j !> .. !> .. Array Arguments .. !> complex R(ldr,*), w(*) !> real rw(*) !> .. !>
!> !> CCHSHX updates the Cholesky factorization of a hermitian !> positive definite matrix A after a symmetric shift of rows and !> columns. Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R'*R, where R' denotes the conjugate !> transpose of R, CCHSHX updates R -> R1 so that !> R1'*R1 = A(p,p), where p is the permutation !> [1:i-1, shift(i:j,-1), j+1:n] if i < j, or !> [1:j-1, shift(j:i,+1), i+1:n] if j < i. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(p,p). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | i | !> i is INTEGER !> The first index determining the range of the shift. !> 1 <= i <= n. !> |
| [in] | j | !> j is INTEGER !> The second index determining the range of the shift. !> 1 <= j <= n. !> |
| [out] | w | !> w is COMPLEX array, dimension (n) !> Workspace vector used to store rotation sines during !> the retriangularization. !> |
| [out] | rw | !> rw is REAL array, dimension (n) !> Workspace vector used to store rotation cosines during !> the retriangularization. !> |
Definition at line 99 of file cchshx.f90.
| subroutine dch1dn | ( | integer, intent(in) | n, |
| real(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| real(real64), dimension(*), intent(inout) | u, | ||
| real(real64), dimension(*), intent(out) | w, | ||
| integer, intent(out) | info ) |
Downdates a Cholesky factorization after a rank-1 modification.
!> subroutine dch1dn(n,R,ldr,u,w,info) !> !> .. Scalar Arguments .. !> integer n, ldr, info !> .. !> .. Array Arguments .. !> double precision R(ldr,*), u(*), w(*) !> .. !>
!> !> DCH1DN downdates the Cholesky factorization of a symmetric !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R.'*R, where R.' denotes the transpose of R, DCH1DN !> downdates R -> R1 so that R1.'*R1 = A - u*u.', where u is a !> given vector. !> !> The downdate is performed by applying a sequence of hyperbolic !> rotations to restore the upper triangular structure of R. On !> exit, u contains the rotation sines and w contains the rotation !> cosines used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is DOUBLE PRECISION array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A - u*u.'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is DOUBLE PRECISION array, dimension (n) !> On entry, the vector determining the rank-1 downdate. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | w | !> w is DOUBLE PRECISION array, dimension (n) !> On exit, w contains the cosine parts of the !> rotations used to transform R to R1. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> |
Definition at line 96 of file dch1dn.f90.
| subroutine dch1up | ( | integer, intent(in) | n, |
| real(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| real(real64), dimension(*), intent(inout) | u, | ||
| real(real64), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after a rank-1 modification.
!> subroutine dch1up(n,R,ldr,u,w) !> !> .. Scalar Arguments .. !> integer n, ldr !> .. !> .. Array Arguments .. !> double precision R(ldr,*), u(*), w(*) !> .. !>
!> !> DCH1UP updates the Cholesky factorization of a symmetric !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R.'*R, where R.' denotes the transpose of R, DCH1UP !> updates R -> R1 so that R1.'*R1 = A + u*u.', where u is a given !> vector. !> !> The update is performed by applying a sequence of Givens rotations !> to restore the upper triangular structure of R. On exit, u !> contains the rotation sines and w contains the rotation cosines !> used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is DOUBLE PRECISION array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A + u*u.'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is DOUBLE PRECISION array, dimension (n) !> On entry, the vector determining the rank-1 update. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | w | !> w is DOUBLE PRECISION array, dimension (n) !> On exit, w contains the cosine parts of the Givens !> rotations used to transform R to R1. !> |
Definition at line 88 of file dch1up.f90.
| subroutine dchdex | ( | integer, intent(in) | n, |
| real(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| real(real64), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after deleting a row and column.
!> subroutine dchdex(n,R,ldr,j,w) !> !> .. Scalar Arguments .. !> integer n, ldr, j !> .. !> .. Array Arguments .. !> double precision R(ldr,*), w(*) !> .. !>
!> !> DCHDEX updates the Cholesky factorization of a symmetric !> positive definite matrix A after deleting a row/column. !> Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R.'*R, where R.' denotes the !> transpose of R, DCHDEX updates R -> R1 so that !> R1.'*R1 = A(jj,jj), where jj = [1:j-1, j+1:n+1]. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is DOUBLE PRECISION array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(jj,jj). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | j | !> j is INTEGER !> The position of the deleted row/column. !> |
| [out] | w | !> w is DOUBLE PRECISION array, dimension (n) !> A workspace vector. !> |
Definition at line 80 of file dchdex.f90.
| subroutine dchinx | ( | integer, intent(in) | n, |
| real(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| real(real64), dimension(*), intent(inout) | u, | ||
| real(real64), dimension(*), intent(out) | w, | ||
| integer, intent(out) | info ) |
Updates a Cholesky factorization after inserting a row and column.
!> subroutine dchinx(n,R,ldr,j,u,w,info) !> !> .. Scalar Arguments .. !> integer n, j, ldr, info !> .. !> .. Array Arguments .. !> double precision R(ldr,*), u(*), w(*) !> .. !>
!> !> DCHINX updates the Cholesky factorization of a symmetric !> positive definite matrix A after inserting a row and column. !> Given an upper triangular matrix R that is a Cholesky factor of !> A, i.e., A = R.'*R, where R.' denotes the transpose of R, this !> DCHINX updates R -> R1 so that R1.'*R1 = A1, where !> A1(jj,jj) = A, A1(j,:) = u.', A1(:,j) = u, and !> jj = [1:j-1, j+1:n+1]. !> !> On exit, u is destroyed and R is extended by one row and column. !> The insertion is performed by first solving R.'*u = v, checking !> positive definiteness, and then retriangularizing. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is DOUBLE PRECISION array, dimension (ldr,n+1) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A1. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n+1. !> |
| [in] | j | !> j is INTEGER !> The position of the inserted row and column. !> 1 <= j <= n+1. !> |
| [in,out] | u | !> u is DOUBLE PRECISION array, dimension (n+1) !> On entry, the vector defining the inserted row/column. !> On exit, u is destroyed. !> |
| [out] | w | !> w is DOUBLE PRECISION array, dimension (n+1) !> Workspace vector used during the retriangularization. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> |
Definition at line 101 of file dchinx.f90.
| subroutine dchshx | ( | integer, intent(in) | n, |
| real(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | i, | ||
| integer, intent(in) | j, | ||
| real(real64), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after a symmetric shift of rows and columns.
!> subroutine dchshx(n,R,ldr,i,j,w) !> !> .. Scalar Arguments .. !> integer n, ldr, i, j !> .. !> .. Array Arguments .. !> double precision R(ldr,*), w(*) !> .. !>
!> !> DCHSHX updates the Cholesky factorization of a symmetric !> positive definite matrix A after a symmetric shift of rows and !> columns. Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R.'*R, where R.' denotes the transpose !> of R, DCHSHX updates R -> R1 so that !> R1.'*R1 = A(p,p), where p is the permutation !> [1:i-1, shift(i:j,-1), j+1:n] if i < j, or !> [1:j-1, shift(j:i,+1), i+1:n] if j < i. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is DOUBLE PRECISION array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(p,p). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | i | !> i is INTEGER !> The first index determining the range of the shift. !> 1 <= i <= n. !> |
| [in] | j | !> j is INTEGER !> The second index determining the range of the shift. !> 1 <= j <= n. !> |
| [out] | w | !> w is DOUBLE PRECISION array, dimension (2*n) !> Workspace vector used during the retriangularization. !> |
Definition at line 90 of file dchshx.f90.
| subroutine sch1dn | ( | integer, intent(in) | n, |
| real(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| real(real32), dimension(*), intent(inout) | u, | ||
| real(real32), dimension(*), intent(out) | w, | ||
| integer, intent(out) | info ) |
Downdates a Cholesky factorization after a rank-1 modification.
!> subroutine sch1dn(n,R,ldr,u,w,info) !> !> .. Scalar Arguments .. !> integer n, ldr, info !> .. !> .. Array Arguments .. !> real R(ldr,*), u(*), w(*) !> .. !>
!> !> SCH1DN downdates the Cholesky factorization of a symmetric !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R.'*R, where R.' denotes the transpose of R, SCH1DN !> downdates R -> R1 so that R1.'*R1 = A - u*u.', where u is a !> given vector. !> !> The downdate is performed by applying a sequence of hyperbolic !> rotations to restore the upper triangular structure of R. On !> exit, u contains the rotation sines and w contains the rotation !> cosines used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is REAL array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A - u*u.'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is REAL array, dimension (n) !> On entry, the vector determining the rank-1 downdate. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | w | !> w is REAL array, dimension (n) !> On exit, w contains the cosine parts of the !> rotations used to transform R to R1. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> |
Definition at line 96 of file sch1dn.f90.
| subroutine sch1up | ( | integer, intent(in) | n, |
| real(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| real(real32), dimension(*), intent(inout) | u, | ||
| real(real32), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after a rank-1 modification.
!> subroutine sch1up(n,R,ldr,u,w) !> !> .. Scalar Arguments .. !> integer n, ldr !> .. !> .. Array Arguments .. !> real R(ldr,*), u(*), w(*) !> .. !>
!> !> SCH1UP updates the Cholesky factorization of a symmetric !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R.'*R, where R.' denotes the transpose of R, SCH1UP !> updates R -> R1 so that R1.'*R1 = A + u*u.', where u is a given !> vector. !> !> The update is performed by applying a sequence of Givens rotations !> to restore the upper triangular structure of R. On exit, u !> contains the rotation sines and w contains the rotation cosines !> used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is REAL array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A + u*u.'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is REAL array, dimension (n) !> On entry, the vector determining the rank-1 update. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | w | !> w is REAL array, dimension (n) !> On exit, w contains the cosine parts of the Givens !> rotations used to transform R to R1. !> |
Definition at line 88 of file sch1up.f90.
| subroutine schdex | ( | integer, intent(in) | n, |
| real(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| real(real32), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after deleting a row and column.
!> subroutine schdex(n,R,ldr,j,w) !> !> .. Scalar Arguments .. !> integer n, ldr, j !> .. !> .. Array Arguments .. !> real R(ldr,*), w(*) !> .. !>
!> !> SCHDEX updates the Cholesky factorization of a symmetric !> positive definite matrix A after deleting a row/column. !> Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R.'*R, where R.' denotes the !> transpose of R, SCHDEX updates R -> R1 so that !> R1.'*R1 = A(jj,jj), where jj = [1:j-1, j+1:n+1]. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is REAL array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(jj,jj). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | j | !> j is INTEGER !> The position of the deleted row/column. !> |
| [out] | w | !> w is REAL array, dimension (n) !> A workspace vector. !> |
Definition at line 80 of file schdex.f90.
| subroutine schinx | ( | integer, intent(in) | n, |
| real(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| real(real32), dimension(*), intent(inout) | u, | ||
| real(real32), dimension(*), intent(out) | w, | ||
| integer, intent(out) | info ) |
Updates a Cholesky factorization after inserting a row and column.
!> subroutine schinx(n,R,ldr,j,u,w,info) !> !> .. Scalar Arguments .. !> integer n, j, ldr, info !> .. !> .. Array Arguments .. !> real R(ldr,*), u(*), w(*) !> .. !>
!> !> SCHINX updates the Cholesky factorization of a symmetric !> positive definite matrix A after inserting a row and column. !> Given an upper triangular matrix R that is a Cholesky factor of !> A, i.e., A = R.'*R, where R.' denotes the transpose of R, this !> SCHINX updates R -> R1 so that R1.'*R1 = A1, where !> A1(jj,jj) = A, A1(j,:) = u.', A1(:,j) = u, and !> jj = [1:j-1, j+1:n+1]. !> !> On exit, u is destroyed and R is extended by one row and column. !> The insertion is performed by first solving R.'*u = v, checking !> positive definiteness, and then retriangularizing. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is REAL array, dimension (ldr,n+1) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A1. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n+1. !> |
| [in] | j | !> j is INTEGER !> The position of the inserted row and column. !> 1 <= j <= n+1. !> |
| [in,out] | u | !> u is REAL array, dimension (n+1) !> On entry, the vector defining the inserted row/column. !> On exit, u is destroyed. !> |
| [out] | w | !> w is REAL array, dimension (n+1) !> Workspace vector used during the retriangularization. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> |
Definition at line 101 of file schinx.f90.
| subroutine schshx | ( | integer, intent(in) | n, |
| real(real32), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | i, | ||
| integer, intent(in) | j, | ||
| real(real32), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after a symmetric shift of rows and columns.
!> subroutine schshx(n,R,ldr,i,j,w) !> !> .. Scalar Arguments .. !> integer n, ldr, i, j !> .. !> .. Array Arguments .. !> real R(ldr,*), w(*) !> .. !>
!> !> SCHSHX updates the Cholesky factorization of a symmetric !> positive definite matrix A after a symmetric shift of rows and !> columns. Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R.'*R, where R.' denotes the transpose !> of R, SCHSHX updates R -> R1 so that !> R1.'*R1 = A(p,p), where p is the permutation !> [1:i-1, shift(i:j,-1), j+1:n] if i < j, or !> [1:j-1, shift(j:i,+1), i+1:n] if j < i. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is REAL array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(p,p). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | i | !> i is INTEGER !> The first index determining the range of the shift. !> 1 <= i <= n. !> |
| [in] | j | !> j is INTEGER !> The second index determining the range of the shift. !> 1 <= j <= n. !> |
| [out] | w | !> w is REAL array, dimension (2*n) !> Workspace vector used during the retriangularization. !> |
Definition at line 90 of file schshx.f90.
| subroutine zch1dn | ( | integer, intent(in) | n, |
| complex(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| complex(real64), dimension(*), intent(inout) | u, | ||
| real(real64), dimension(*), intent(out) | rw, | ||
| integer, intent(out) | info ) |
Downdates a Cholesky factorization after a rank-1 modification.
!> subroutine zch1dn(n,R,ldr,u,rw,info) !> !> .. Scalar Arguments .. !> integer n, ldr, info !> .. !> .. Array Arguments .. !> double complex R(ldr,*), u(*) !> double precision rw(*) !> .. !>
!> !> ZCH1DN downdates the Cholesky factorization of a hermitian !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R'*R, where R' denotes the conjugate transpose of R, this !> ZCH1DN downdates R -> R1 so that R1'*R1 = A - u*u', where u !> is a given vector. !> !> The downdate is performed by applying a sequence of hyperbolic !> rotations to restore the upper triangular structure of R. On !> exit, u contains the rotation sines and rw contains the rotation !> cosines used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX*16 array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A - u*u'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is COMPLEX*16 array, dimension (n) !> On entry, the vector determining the rank-1 downdate. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | rw | !> rw is DOUBLE PRECISION array, dimension (n) !> On exit, rw contains the cosine parts of the !> rotations used to transform R to R1. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> |
Definition at line 97 of file zch1dn.f90.
| subroutine zch1up | ( | integer, intent(in) | n, |
| complex(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| complex(real64), dimension(*), intent(inout) | u, | ||
| real(real64), dimension(*), intent(out) | w ) |
Updates a Cholesky factorization after a rank-1 modification.
!> subroutine zch1up(n,R,ldr,u,w) !> !> .. Scalar Arguments .. !> integer n, ldr !> .. !> .. Array Arguments .. !> double complex R(ldr,*), u(*) !> double precision w(*) !> .. !>
!> !> ZCH1UP updates the Cholesky factorization of a hermitian !> positive definite matrix A after a rank-1 modification. Given an !> upper triangular matrix R that is a Cholesky factor of A, i.e., !> A = R'*R, where R' denotes the conjugate transpose of R, this !> ZCH1UP updates R -> R1 so that R1'*R1 = A + u*u', where u is !> a given vector. !> !> The update is performed by applying a sequence of Givens rotations !> to restore the upper triangular structure of R. On exit, u !> contains the rotation sines and w contains the rotation cosines !> used in the transformation. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX*16 array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A + u*u'. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in,out] | u | !> u is COMPLEX*16 array, dimension (n) !> On entry, the vector determining the rank-1 update. !> On exit, u contains the rotation sines used to !> transform R to R1. !> |
| [out] | w | !> w is DOUBLE PRECISION array, dimension (n) !> On exit, w contains the cosine parts of the Givens !> rotations used to transform R to R1. !> |
Definition at line 89 of file zch1up.f90.
| subroutine zchdex | ( | integer, intent(in) | n, |
| complex(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| real(real64), dimension(*), intent(out) | rw ) |
Updates a Cholesky factorization after deleting a row and column.
!> subroutine zchdex(n,R,ldr,j,rw) !> !> .. Scalar Arguments .. !> integer n, ldr, j !> .. !> .. Array Arguments .. !> double complex R(ldr,*) !> double precision rw(*) !> .. !>
!> !> ZCHDEX updates the Cholesky factorization of a hermitian !> positive definite matrix A after deleting a row/column. !> Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R'*R, where R' denotes the conjugate !> transpose of R, ZCHDEX updates R -> R1 so that !> R1'*R1 = A(jj,jj), where jj = [1:j-1, j+1:n+1]. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX*16 array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(jj,jj). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | j | !> j is INTEGER !> The position of the deleted row/column. !> |
| [out] | rw | !> rw is DOUBLE PRECISION array, dimension (n) !> A workspace vector. !> |
Definition at line 81 of file zchdex.f90.
| subroutine zchinx | ( | integer, intent(in) | n, |
| complex(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | j, | ||
| complex(real64), dimension(*), intent(inout) | u, | ||
| real(real64), dimension(*), intent(out) | rw, | ||
| integer, intent(out) | info ) |
Updates a Cholesky factorization after inserting a row and column.
!> subroutine zchinx(n,R,ldr,j,u,rw,info) !> !> .. Scalar Arguments .. !> integer n, j, ldr, info !> .. !> .. Array Arguments .. !> double complex R(ldr,*), u(*), rw(*) !> .. !>
!> !> ZCHINX updates the Cholesky factorization of a hermitian !> positive definite matrix A after inserting a row and column. !> Given an upper triangular matrix R that is a Cholesky factor of !> A, i.e., A = R'*R, where R' denotes the conjugate transpose of !> R, ZCHINX updates R -> R1 so that R1'*R1 = A1, where !> A1(jj,jj) = A, A1(j,:) = u', A1(:,j) = u, and !> jj = [1:j-1, j+1:n+1]. !> !> On exit, u is destroyed and R is extended by one row and column. !> The insertion is performed by first solving R'*u = v, checking !> positive definiteness, and then retriangularizing. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX*16 array, dimension (ldr,n+1) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A1. !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n+1. !> |
| [in] | j | !> j is INTEGER !> The position of the inserted row and column. !> 1 <= j <= n+1. !> |
| [in,out] | u | !> u is COMPLEX*16 array, dimension (n+1) !> On entry, the vector defining the inserted row/column. !> On exit, u is destroyed. !> |
| [out] | rw | !> rw is DOUBLE PRECISION array, dimension (n+1) !> Workspace vector used to store rotation cosines during !> the retriangularization. !> |
| [out] | info | !> info is INTEGER !> = 0: successful exit !> = 1: the update would violate positive-definiteness !> = 2: R is singular !> = 3: the diagonal element of u is not real !> |
Definition at line 103 of file zchinx.f90.
| subroutine zchshx | ( | integer, intent(in) | n, |
| complex(real64), dimension(ldr,*), intent(inout) | r, | ||
| integer, intent(in) | ldr, | ||
| integer, intent(in) | i, | ||
| integer, intent(in) | j, | ||
| complex(real64), dimension(*), intent(out) | w, | ||
| real(real64), dimension(*), intent(out) | rw ) |
Updates a Cholesky factorization after a symmetric shift of rows and columns.
!> subroutine zchshx(n,R,ldr,i,j,w,rw) !> !> .. Scalar Arguments .. !> integer n, ldr, i, j !> .. !> .. Array Arguments .. !> double complex R(ldr,*), w(*) !> double precision rw(*) !> .. !>
!> !> ZCHSHX updates the Cholesky factorization of a hermitian !> positive definite matrix A after a symmetric shift of rows and !> columns. Given an upper triangular matrix R that is a Cholesky !> factor of A, i.e., A = R'*R, where R' denotes the conjugate !> transpose of R, ZCHSHX updates R -> R1 so that !> R1'*R1 = A(p,p), where p is the permutation !> [1:i-1, shift(i:j,-1), j+1:n] if i < j, or !> [1:j-1, shift(j:i,+1), i+1:n] if j < i. !>
| [in] | n | !> n is INTEGER !> The order of matrix R. n >= 0. !> |
| [in,out] | R | !> R is COMPLEX*16 array, dimension (ldr,n) !> On entry, the upper triangular matrix R, the Cholesky !> factor of A. On exit, the updated upper triangular !> matrix R1, the Cholesky factor of A(p,p). !> |
| [in] | ldr | !> ldr is INTEGER !> The leading dimension of the array R. ldr >= n. !> |
| [in] | i | !> i is INTEGER !> The first index determining the range of the shift. !> 1 <= i <= n. !> |
| [in] | j | !> j is INTEGER !> The second index determining the range of the shift. !> 1 <= j <= n. !> |
| [out] | w | !> w is COMPLEX*16 array, dimension (n) !> Workspace vector used to store rotation sines during !> the retriangularization. !> |
| [out] | rw | !> rw is DOUBLE PRECISION array, dimension (n) !> Workspace vector used to store rotation cosines during !> the retriangularization. !> |
Definition at line 99 of file zchshx.f90.