Skip to content

Commit 9509748

Browse files
committed
add non-posdef checking
1 parent cfaedee commit 9509748

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/bidiag.jl

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,7 +1472,14 @@ function _chol!(A::Bidiagonal{<:BlasFloat,<:StridedVector}, ::Type{UpperTriangul
14721472
d = real(A.dv)
14731473
e = A.ev
14741474
dv, ev = LAPACK.pttrf!(d, e)
1475-
map!(sqrt, dv)
1475+
for k in eachindex(dv)
1476+
Akk = dv[k]
1477+
Akk, info = _chol!(Akk, UpperTriangular)
1478+
if info != 0
1479+
return UpperTriangular(A), convert(BlasInt, k)
1480+
end
1481+
dv[k] = Akk
1482+
end
14761483
@views ev .*= dv[1:end-1]
14771484
U = Bidiagonal(dv, ev, :U)
14781485
return UpperTriangular(U), convert(BlasInt, 0)
@@ -1507,7 +1514,14 @@ function _chol!(A::Bidiagonal{<:BlasFloat,<:StridedVector}, ::Type{LowerTriangul
15071514
d = real(A.dv)
15081515
e = A.ev
15091516
dv, ev = LAPACK.pttrf!(d, e)
1510-
map!(sqrt, dv)
1517+
for k in eachindex(dv)
1518+
Akk = dv[k]
1519+
Akk, info = _chol!(Akk, LowerTriangular)
1520+
if info != 0
1521+
return LowerTriangular(A), convert(BlasInt, k)
1522+
end
1523+
dv[k] = Akk
1524+
end
15111525
@views ev .*= dv[1:end-1]
15121526
L = Bidiagonal(dv, ev, :L)
15131527
return LowerTriangular(L), convert(BlasInt, 0)

0 commit comments

Comments
 (0)