Computes the Cholesky decomposition of a complex Hermitian or real symmetric positive-definite matrix.
Source:R/linalg.R
linalg_cholesky_ex.Rd
This function skips the (slow) error checking and error message construction
of linalg_cholesky()
, instead directly returning the LAPACK
error codes as part of a named tuple (L, info)
. This makes this function
a faster way to check if a matrix is positive-definite, and it provides an
opportunity to handle decomposition errors more gracefully or performantly
than linalg_cholesky()
does.
Supports input of float, double, cfloat and cdouble dtypes.
Also supports batches of matrices, and if A
is a batch of matrices then
the output has the same batch dimensions.
If A
is not a Hermitian positive-definite matrix, or if it's a batch of matrices
and one or more of them is not a Hermitian positive-definite matrix,
then info
stores a positive integer for the corresponding matrix.
The positive integer indicates the order of the leading minor that is not positive-definite,
and the decomposition could not be completed.
info
filled with zeros indicates that the decomposition was successful.
If check_errors=TRUE
and info
contains positive integers, then a RuntimeError is thrown.
Arguments
- A
(Tensor): the Hermitian
n \times n
matrix or the batch of such matrices of size(*, n, n)
where*
is one or more batch dimensions.- check_errors
(bool, optional): controls whether to check the content of
infos
. Default:FALSE
.
Note
If A
is on a CUDA device, this function may synchronize that device with the CPU.
This function is "experimental" and it may change in a future PyTorch release.
See also
linalg_cholesky()
is a NumPy compatible variant that always checks for errors.
Other linalg:
linalg_cholesky()
,
linalg_det()
,
linalg_eigh()
,
linalg_eigvalsh()
,
linalg_eigvals()
,
linalg_eig()
,
linalg_householder_product()
,
linalg_inv_ex()
,
linalg_inv()
,
linalg_lstsq()
,
linalg_matrix_norm()
,
linalg_matrix_power()
,
linalg_matrix_rank()
,
linalg_multi_dot()
,
linalg_norm()
,
linalg_pinv()
,
linalg_qr()
,
linalg_slogdet()
,
linalg_solve_triangular()
,
linalg_solve()
,
linalg_svdvals()
,
linalg_svd()
,
linalg_tensorinv()
,
linalg_tensorsolve()
,
linalg_vector_norm()
Examples
if (torch_is_installed()) {
A <- torch_randn(2, 2)
out <- linalg_cholesky_ex(A)
out
}
#> $L
#> torch_tensor
#> -0.8449 0.0000
#> 1.3567 1.3276
#> [ CPUFloatType{2,2} ]
#>
#> $info
#> torch_tensor
#> 1
#> [ CPUIntType{} ]
#>