@@ -592,14 +592,14 @@ function det(A::Matrix)
592
592
end
593
593
594
594
function (\ ){T<: BlasFloat }(lu:: LUDense{T} , B:: StridedVecOrMat{T} )
595
- if lu. info > 0 ; error ( " Singular system " ); end
595
+ if lu. info > 0 ; throw (LAPACK . SingularException (info) ); end
596
596
LAPACK. getrs! (' N' , lu. lu, lu. ipiv, copy (B))
597
597
end
598
598
599
599
function inv {T<:BlasFloat} (lu:: LUDense{T} )
600
600
m, n = size (lu. lu)
601
601
if m != n; error (" inv only defined for square matrices" ); end
602
- if lu. info > 0 ; return error ( " Singular system " ); end
602
+ if lu. info > 0 ; return throw (LAPACK . SingularException (info) ); end
603
603
LAPACK. getri! (copy (lu. lu), lu. ipiv)
604
604
end
605
605
@@ -638,7 +638,7 @@ Ac_mul_B{T<:BlasFloat}(A::QRDense{T}, B::StridedVecOrMat{T}) =
638
638
function (\ ){T<: BlasFloat }(A:: QRDense{T} , B:: StridedVecOrMat{T} )
639
639
n = length (A. tau)
640
640
ans, info = LAPACK. trtrs! (' U' ,' N' ,' N' ,A. hh[1 : n,:],(A' * B)[1 : n,:])
641
- if info > 0 ; error ( " Singular system " ); end
641
+ if info > 0 ; throw (LAPACK . SingularException (info) ); end
642
642
return ans
643
643
end
644
644
@@ -679,7 +679,7 @@ qrp{T<:Real}(x::StridedMatrix{T}) = qrp(float64(x))
679
679
function (\ ){T<: BlasFloat }(A:: QRPDense{T} , B:: StridedVecOrMat{T} )
680
680
n = length (A. tau)
681
681
x, info = LAPACK. trtrs! (' U' ,' N' ,' N' ,A. hh[1 : n,:],(A' * B)[1 : n,:])
682
- if info > 0 ; error ( " Singular system " ); end
682
+ if info > 0 ; throw (LAPACK . SingularException (info) ); end
683
683
isa (B, Vector) ? x[invperm (A. jpvt)] : x[:,invperm (A. jpvt)]
684
684
end
685
685
@@ -773,21 +773,21 @@ function (\){T<:BlasFloat}(A::StridedMatrix{T}, B::StridedVecOrMat{T})
773
773
if m == n # Square
774
774
if istriu (A)
775
775
ans, info = LAPACK. trtrs! (' U' , ' N' , ' N' , Acopy, X)
776
- if info > 0 ; error ( " Singular system " ); end
776
+ if info > 0 ; throw (LAPACK . SingularException (info) ); end
777
777
return ans
778
778
end
779
779
if istril (A)
780
780
ans, info = LAPACK. trtrs! (' L' , ' N' , ' N' , Acopy, X)
781
- if info > 0 ; error ( " Singular system " ); end
781
+ if info > 0 ; throw (LAPACK . SingularException (info) ); end
782
782
return ans
783
783
end
784
784
if ishermitian (A)
785
785
ans, _, _, info = LAPACK. sysv! (' U' , Acopy, X)
786
- if info > 0 ; error ( " Singular system " ); end
786
+ if info > 0 ; throw (LAPACK . SingularException (info) ); end
787
787
return ans
788
788
end
789
789
ans, _, _, info = LAPACK. gesv! (Acopy, X)
790
- if info > 0 ; error ( " Singular system " ); end
790
+ if info > 0 ; throw (LAPACK . SingularException (info) ); end
791
791
return ans
792
792
end
793
793
LAPACK. gelsd! (Acopy, X)[1 ]
0 commit comments