@@ -541,10 +541,7 @@ function rmul!(B::Bidiagonal, D::Diagonal)
541541 return B
542542end
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)
575572function _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
631628
632629function _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)
697694
698695function _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 )
732729
733730function _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)
763760function _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