Computes the Cholesky decomposition of a complex Hermitian or real symmetric positive-definite matrix.
Source:R/linalg.R
linalg_cholesky_ex.RdThis 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.
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_eig(),
linalg_eigh(),
linalg_eigvals(),
linalg_eigvalsh(),
linalg_householder_product(),
linalg_inv(),
linalg_inv_ex(),
linalg_lstsq(),
linalg_matrix_norm(),
linalg_matrix_power(),
linalg_matrix_rank(),
linalg_multi_dot(),
linalg_norm(),
linalg_pinv(),
linalg_qr(),
linalg_slogdet(),
linalg_solve(),
linalg_solve_triangular(),
linalg_svd(),
linalg_svdvals(),
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.2854 0.0000
#> -0.5645 -0.8628
#> [ CPUFloatType{2,2} ]
#>
#> $info
#> torch_tensor
#> 1
#> [ CPUIntType{} ]
#>