Skip to content

Commit 3dd0789

Browse files
committed
Avoided sqrt of -ve eigenvals.
1 parent c00d299 commit 3dd0789

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/qinfer/utils.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -463,9 +463,10 @@ def sqrtm_psd(A, est_error=True, check_finite=True):
463463
truncating negative eigenvalues.
464464
"""
465465
w, v = eigh(A, check_finite=check_finite)
466-
sqrt_w = np.sqrt(w)
467-
sqrt_w[w <= 0] = 0
468-
A_sqrt = (v * sqrt_w).dot(v.conj().T)
466+
mask = w <= 0
467+
w[mask] = 0
468+
np.sqrt(w, out=w)
469+
A_sqrt = (v * w).dot(v.conj().T)
469470

470471
if est_error:
471472
return A_sqrt, np.linalg.norm(np.dot(A_sqrt, A_sqrt) - A, 'fro')

0 commit comments

Comments
 (0)