mirror of
https://github.com/ml-explore/mlx.git
synced 2025-09-18 01:50:16 +08:00
Enforce triangular matrix form in tri_inv
(#1876)
* fix tri_inv bug
* Revert "fix tri_inv bug"
This reverts commit b74b290201
.
* Make sure that tri_inv returns a triangular matrix
---------
Co-authored-by: Angelos Katharopoulos <a_katharopoulos@apple.com>
This commit is contained in:
@@ -81,7 +81,22 @@ void general_inv(array& inv, int N, int i) {
|
||||
void tri_inv(array& inv, int N, int i, bool upper) {
|
||||
const char uplo = upper ? 'L' : 'U';
|
||||
const char diag = 'N';
|
||||
int info = strtri_wrapper(uplo, diag, inv.data<float>() + N * N * i, N);
|
||||
float* data = inv.data<float>() + N * N * i;
|
||||
int info = strtri_wrapper(uplo, diag, data, N);
|
||||
|
||||
// zero out the other triangle
|
||||
if (upper) {
|
||||
for (int i = 0; i < N; i++) {
|
||||
std::fill(data, data + i, 0.0f);
|
||||
data += N;
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < N; i++) {
|
||||
std::fill(data + i + 1, data + N, 0.0f);
|
||||
data += N;
|
||||
}
|
||||
}
|
||||
|
||||
if (info != 0) {
|
||||
std::stringstream ss;
|
||||
ss << "inverse_impl: triangular inversion failed with error code " << info;
|
||||
|
Reference in New Issue
Block a user