@@ -588,10 +588,14 @@ function _diag(A::Bidiagonal, k)
588588end
589589
590590_MulAddMul_nonzeroalpha (_add:: MulAddMul ) = _add
591+ function _MulAddMul_nonzeroalpha (_add:: MulAddMul{ais1,bis0,A} , :: Val{false} ) where {ais1,bis0,A}
592+ MulAddMul {ais1,true,A,Bool} (_add. alpha, false )
593+ end
591594function _MulAddMul_nonzeroalpha (_add:: MulAddMul{ais1,bis0,Bool} ) where {ais1,bis0}
592595 (; beta) = _add
593596 MulAddMul {true,bis0,Bool,typeof(beta)} (true , beta)
594597end
598+ _MulAddMul_nonzeroalpha (_add:: MulAddMul{ais1,bis0,Bool} , :: Val{false} ) where {ais1,bis0} = MulAddMul ()
595599
596600_mul! (C:: AbstractMatrix , A:: BiTriSym , B:: TriSym , _add:: MulAddMul ) =
597601 _bibimul! (C, A, B, _add)
@@ -607,7 +611,8 @@ function _bibimul!(C, A, B, _add::MulAddMul)
607611 # off-diagonal elements for non-zero beta.
608612 _rmul_or_fill! (C, _add. beta)
609613 iszero (_add. alpha) && return C
610- _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add)
614+ # beta is unused in _bibimul_nonzeroalpha!, so we set it to false
615+ _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add, Val (false ))
611616 _bibimul_nonzeroalpha! (C, A, B, _add_nonzeroalpha)
612617 C
613618end
@@ -856,7 +861,8 @@ function _mul!(C::AbstractMatrix, A::BiTriSym, B::Diagonal, _add::MulAddMul)
856861 iszero (n) && return C
857862 _rmul_or_fill! (C, _add. beta) # see the same use above
858863 iszero (_add. alpha) && return C
859- _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add)
864+ # beta is unused in the _bidimul! call, so we set it to false
865+ _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add, Val (false ))
860866 _bidimul! (C, A, B, _add_nonzeroalpha)
861867 C
862868end
@@ -967,13 +973,12 @@ function _mul!(C::AbstractVecOrMat, A::BiTriSym, B::AbstractVecOrMat, _add::MulA
967973 nA = size (A,1 )
968974 nB = size (B,2 )
969975 (iszero (nA) || iszero (nB)) && return C
970- (; alpha, beta) = _add
971- iszero (alpha) && return _rmul_or_fill! (C, beta)
976+ iszero (_add. alpha) && return _rmul_or_fill! (C, _add. beta)
972977 _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add)
973978 _mul_bitrisym_left! (C, A, B, _add_nonzeroalpha)
974979 return C
975980end
976- function _mul_bitrisym_left! (C:: AbstractVecOrMat , A:: Bidiagonal , B:: AbstractVecOrMat , _add:: MulAddMul )
981+ function _mul_bitrisym_left! (C:: AbstractVecOrMat , A:: BiTriSym , B:: AbstractVecOrMat , _add:: MulAddMul )
977982 nA = size (A,1 )
978983 nB = size (B,2 )
979984 if nA <= 3
@@ -1045,8 +1050,7 @@ function _mul!(C::AbstractMatrix, A::AbstractMatrix, B::TriSym, _add::MulAddMul)
10451050 matmul_size_check (size (C), size (A), size (B))
10461051 n = size (A,1 )
10471052 m = size (B,2 )
1048- (; alpha, beta) = _add
1049- (iszero (alpha) || iszero (m)) && return _rmul_or_fill! (C, beta)
1053+ (iszero (_add. alpha) || iszero (m)) && return _rmul_or_fill! (C, _add. beta)
10501054 _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add)
10511055 _mul_bitrisym_right! (C, A, B, _add_nonzeroalpha)
10521056 C
@@ -1089,8 +1093,7 @@ function _mul!(C::AbstractMatrix, A::AbstractMatrix, B::Bidiagonal, _add::MulAdd
10891093 matmul_size_check (size (C), size (A), size (B))
10901094 m, n = size (A)
10911095 (iszero (m) || iszero (n)) && return C
1092- (; alpha, beta) = _add
1093- iszero (alpha) && return _rmul_or_fill! (C, beta)
1096+ iszero (_add. alpha) && return _rmul_or_fill! (C, _add. beta)
10941097 _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add)
10951098 _mul_bitrisym_right! (C, A, B, _add_nonzeroalpha)
10961099 C
@@ -1129,7 +1132,7 @@ function _dibimul!(C, A, B, _add)
11291132 # ensure that we fill off-band elements in the destination
11301133 _rmul_or_fill! (C, _add. beta)
11311134 iszero (_add. alpha) && return C
1132- _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add)
1135+ _add_nonzeroalpha = _MulAddMul_nonzeroalpha (_add, Val ( false ) )
11331136 _dibimul_nonzeroalpha! (C, A, B, _add_nonzeroalpha)
11341137 C
11351138end
0 commit comments