Skip to content

Commit b767480

Browse files
jishnublazarusA
authored andcommitted
LinearAlgebra: Do not specialize arguments in check_A_mul_B!_sizes (JuliaLang#55176)
1 parent 71387bc commit b767480

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

stdlib/LinearAlgebra/src/bidiag.jl

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -541,10 +541,7 @@ function rmul!(B::Bidiagonal, D::Diagonal)
541541
return B
542542
end
543543

544-
function check_A_mul_B!_sizes(C, A, B)
545-
mA, nA = size(A)
546-
mB, nB = size(B)
547-
mC, nC = size(C)
544+
@noinline function check_A_mul_B!_sizes((mC, nC)::NTuple{2,Integer}, (mA, nA)::NTuple{2,Integer}, (mB, nB)::NTuple{2,Integer})
548545
if mA != mC
549546
throw(DimensionMismatch(lazy"first dimension of A, $mA, and first dimension of output C, $mC, must match"))
550547
elseif nA != mB
@@ -573,7 +570,7 @@ _mul!(C::AbstractMatrix, A::BiTriSym, B::TriSym, _add::MulAddMul) =
573570
_mul!(C::AbstractMatrix, A::BiTriSym, B::Bidiagonal, _add::MulAddMul) =
574571
_bibimul!(C, A, B, _add)
575572
function _bibimul!(C, A, B, _add)
576-
check_A_mul_B!_sizes(C, A, B)
573+
check_A_mul_B!_sizes(size(C), size(A), size(B))
577574
n = size(A,1)
578575
n <= 3 && return mul!(C, Array(A), Array(B), _add.alpha, _add.beta)
579576
# We use `_rmul_or_fill!` instead of `_modify!` here since using
@@ -631,7 +628,7 @@ end
631628

632629
function _mul!(C::AbstractMatrix, A::BiTriSym, B::Diagonal, _add::MulAddMul)
633630
require_one_based_indexing(C)
634-
check_A_mul_B!_sizes(C, A, B)
631+
check_A_mul_B!_sizes(size(C), size(A), size(B))
635632
n = size(A,1)
636633
iszero(n) && return C
637634
n <= 3 && return mul!(C, Array(A), Array(B), _add.alpha, _add.beta)
@@ -697,7 +694,7 @@ end
697694

698695
function _mul!(C::AbstractMatrix, A::AbstractMatrix, B::TriSym, _add::MulAddMul)
699696
require_one_based_indexing(C, A)
700-
check_A_mul_B!_sizes(C, A, B)
697+
check_A_mul_B!_sizes(size(C), size(A), size(B))
701698
iszero(_add.alpha) && return _rmul_or_fill!(C, _add.beta)
702699
n = size(A,1)
703700
m = size(B,2)
@@ -732,7 +729,7 @@ end
732729

733730
function _mul!(C::AbstractMatrix, A::AbstractMatrix, B::Bidiagonal, _add::MulAddMul)
734731
require_one_based_indexing(C, A)
735-
check_A_mul_B!_sizes(C, A, B)
732+
check_A_mul_B!_sizes(size(C), size(A), size(B))
736733
iszero(_add.alpha) && return _rmul_or_fill!(C, _add.beta)
737734
if size(A, 1) <= 3 || size(B, 2) <= 1
738735
return mul!(C, Array(A), Array(B), _add.alpha, _add.beta)
@@ -762,7 +759,7 @@ _mul!(C::AbstractMatrix, A::Diagonal, B::TriSym, _add::MulAddMul) =
762759
_dibimul!(C, A, B, _add)
763760
function _dibimul!(C, A, B, _add)
764761
require_one_based_indexing(C)
765-
check_A_mul_B!_sizes(C, A, B)
762+
check_A_mul_B!_sizes(size(C), size(A), size(B))
766763
n = size(A,1)
767764
n <= 3 && return mul!(C, Array(A), Array(B), _add.alpha, _add.beta)
768765
_rmul_or_fill!(C, _add.beta) # see the same use above

0 commit comments

Comments
 (0)