Skip to content

Commit e2ca1b0

Browse files
authored
Fix ambiguity with new mul! methods in Julia v1.7 (#127)
1 parent c4c2e7a commit e2ca1b0

File tree

1 file changed

+101
-20
lines changed

1 file changed

+101
-20
lines changed

src/dispatch.jl

Lines changed: 101 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -127,81 +127,162 @@ function LinearAlgebra.mul!(
127127
ret::AbstractMatrix{<:AbstractMutable},
128128
A::AbstractVecOrMat,
129129
B::AbstractVecOrMat,
130-
args::Vararg{Any,N},
131130
) where {N}
132-
_mul!(ret, A, B, args...)
131+
_mul!(ret, A, B)
133132
end
134133
function LinearAlgebra.mul!(
135134
ret::AbstractVector{<:AbstractMutable},
136135
A::AbstractVecOrMat,
137136
B::AbstractVector,
138-
args...,
139137
)
140-
_mul!(ret, A, B, args...)
138+
_mul!(ret, A, B)
141139
end
142140
function LinearAlgebra.mul!(
143141
ret::AbstractVector{<:AbstractMutable},
144142
A::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
145143
B::AbstractVector,
146-
args...,
147144
)
148-
_mul!(ret, A, B, args...)
145+
_mul!(ret, A, B)
149146
end
150147
function LinearAlgebra.mul!(
151148
ret::AbstractVector{<:AbstractMutable},
152149
A::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
153150
B::AbstractVector,
154-
args...,
155151
)
156-
_mul!(ret, A, B, args...)
152+
_mul!(ret, A, B)
157153
end
158154
function LinearAlgebra.mul!(
159155
ret::AbstractMatrix{<:AbstractMutable},
160156
A::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
161157
B::AbstractMatrix,
162-
args...,
163158
)
164-
_mul!(ret, A, B, args...)
159+
_mul!(ret, A, B)
165160
end
166161
function LinearAlgebra.mul!(
167162
ret::AbstractMatrix{<:AbstractMutable},
168163
A::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
169164
B::AbstractMatrix,
170-
args...,
171165
)
172-
_mul!(ret, A, B, args...)
166+
_mul!(ret, A, B)
173167
end
174168
function LinearAlgebra.mul!(
175169
ret::AbstractMatrix{<:AbstractMutable},
176170
A::AbstractMatrix,
177171
B::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
178-
args...,
179172
)
180-
_mul!(ret, A, B, args...)
173+
_mul!(ret, A, B)
181174
end
182175
function LinearAlgebra.mul!(
183176
ret::AbstractMatrix{<:AbstractMutable},
184177
A::AbstractMatrix,
185178
B::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
186-
args...,
187179
)
188-
_mul!(ret, A, B, args...)
180+
_mul!(ret, A, B)
189181
end
190182
function LinearAlgebra.mul!(
191183
ret::AbstractMatrix{<:AbstractMutable},
192184
A::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
193185
B::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
194-
args...,
195186
)
196-
_mul!(ret, A, B, args...)
187+
_mul!(ret, A, B)
197188
end
198189
function LinearAlgebra.mul!(
199190
ret::AbstractMatrix{<:AbstractMutable},
200191
A::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
201192
B::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
202-
args...,
203193
)
204-
_mul!(ret, A, B, args...)
194+
_mul!(ret, A, B)
195+
end
196+
197+
function LinearAlgebra.mul!(
198+
ret::AbstractMatrix{<:AbstractMutable},
199+
A::AbstractVecOrMat,
200+
B::AbstractVecOrMat,
201+
α::Number,
202+
β::Number,
203+
) where {N}
204+
_mul!(ret, A, B, α, β)
205+
end
206+
function LinearAlgebra.mul!(
207+
ret::AbstractVector{<:AbstractMutable},
208+
A::AbstractVecOrMat,
209+
B::AbstractVector,
210+
α::Number,
211+
β::Number,
212+
)
213+
_mul!(ret, A, B, α, β)
214+
end
215+
function LinearAlgebra.mul!(
216+
ret::AbstractVector{<:AbstractMutable},
217+
A::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
218+
B::AbstractVector,
219+
α::Number,
220+
β::Number,
221+
)
222+
_mul!(ret, A, B, α, β)
223+
end
224+
function LinearAlgebra.mul!(
225+
ret::AbstractVector{<:AbstractMutable},
226+
A::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
227+
B::AbstractVector,
228+
α::Number,
229+
β::Number,
230+
)
231+
_mul!(ret, A, B, α, β)
232+
end
233+
function LinearAlgebra.mul!(
234+
ret::AbstractMatrix{<:AbstractMutable},
235+
A::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
236+
B::AbstractMatrix,
237+
α::Number,
238+
β::Number,
239+
)
240+
_mul!(ret, A, B, α, β)
241+
end
242+
function LinearAlgebra.mul!(
243+
ret::AbstractMatrix{<:AbstractMutable},
244+
A::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
245+
B::AbstractMatrix,
246+
α::Number,
247+
β::Number,
248+
)
249+
_mul!(ret, A, B, α, β)
250+
end
251+
function LinearAlgebra.mul!(
252+
ret::AbstractMatrix{<:AbstractMutable},
253+
A::AbstractMatrix,
254+
B::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
255+
α::Number,
256+
β::Number,
257+
)
258+
_mul!(ret, A, B, α, β)
259+
end
260+
function LinearAlgebra.mul!(
261+
ret::AbstractMatrix{<:AbstractMutable},
262+
A::AbstractMatrix,
263+
B::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
264+
α::Number,
265+
β::Number,
266+
)
267+
_mul!(ret, A, B, α, β)
268+
end
269+
function LinearAlgebra.mul!(
270+
ret::AbstractMatrix{<:AbstractMutable},
271+
A::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
272+
B::LinearAlgebra.Adjoint{<:Any,<:AbstractVecOrMat},
273+
α::Number,
274+
β::Number,
275+
)
276+
_mul!(ret, A, B, α, β)
277+
end
278+
function LinearAlgebra.mul!(
279+
ret::AbstractMatrix{<:AbstractMutable},
280+
A::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
281+
B::LinearAlgebra.Transpose{<:Any,<:AbstractVecOrMat},
282+
α::Number,
283+
β::Number,
284+
)
285+
_mul!(ret, A, B, α, β)
205286
end
206287

207288
# SparseArrays promotes the element types of `A` and `B` to the same type

0 commit comments

Comments
 (0)