Skip to content

Commit 6730574

Browse files
committed
Merge pull request #9286 from JuliaLang/sjk/lapack-inference
Improve type inference for some LAPACK functions
2 parents 8521fe2 + 4c0e929 commit 6730574

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

base/linalg/lapack.jl

+8-5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ macro chkuplo()
3030
Valid choices are 'U' (upper) or 'L' (lower).""")))
3131
end
3232

33+
subsetrows(X::AbstractVector, Y::AbstractArray, k) = Y[1:k]
34+
subsetrows(X::AbstractMatrix, Y::AbstractArray, k) = Y[1:k, :]
35+
3336
# (GB) general banded matrices, LU decomposition and solver
3437
for (gbtrf, gbtrs, elty) in
3538
((:dgbtrf_,:dgbtrs_,:Float64),
@@ -525,7 +528,7 @@ for (gels, gesv, getrs, getri, elty) in
525528
end
526529
x
527530
end for i=1:size(B,2)]
528-
F, isa(B, Vector) ? B[1:k] : B[1:k,:], ssr
531+
F, subsetrows(B, B, k), ssr
529532
end
530533
# SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
531534
# * .. Scalar Arguments ..
@@ -746,7 +749,7 @@ for (gelsd, gelsy, elty) in
746749
iwork = Array(BlasInt, iwork[1])
747750
end
748751
end
749-
isa(B, Vector) ? newB[1:n] : newB[1:n,:], rnk[1]
752+
subsetrows(B, newB, n), rnk[1]
750753
end
751754

752755
# SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
@@ -789,7 +792,7 @@ for (gelsd, gelsy, elty) in
789792
end
790793
end
791794
@lapackerror
792-
isa(B, Vector) ? newB[1:n] : newB[1:n,:], rnk[1]
795+
subsetrows(B, newB, n), rnk[1]
793796
end
794797
end
795798
end
@@ -836,7 +839,7 @@ for (gelsd, gelsy, elty, relty) in
836839
iwork = Array(BlasInt, iwork[1])
837840
end
838841
end
839-
isa(B, Vector) ? newB[1:n] : newB[1:n,:], rnk[1]
842+
subsetrows(B, newB, n), rnk[1]
840843
end
841844

842845
# SUBROUTINE ZGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
@@ -880,7 +883,7 @@ for (gelsd, gelsy, elty, relty) in
880883
end
881884
end
882885
@lapackerror
883-
isa(B, Vector) ? newB[1:n] : newB[1:n,:], rnk[1]
886+
subsetrows(B, newB, n), rnk[1]
884887
end
885888
end
886889
end

0 commit comments

Comments
 (0)