Skip to content

Commit 22ec91b

Browse files
committed
Change mul1! and mul2! to rmul! and lmul!
1 parent 6faa23b commit 22ec91b

29 files changed

+438
-438
lines changed

stdlib/IterativeEigensolvers/src/IterativeEigensolvers.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module IterativeEigensolvers
99

1010
using LinearAlgebra: BlasFloat, BlasInt, Diagonal, I, SVD, UniformScaling,
1111
checksquare, factorize,ishermitian, issymmetric, mul!,
12-
mul1!, qr
12+
rmul!, qr
1313
import LinearAlgebra
1414

1515
export eigs, svds
@@ -317,10 +317,10 @@ function _svds(X; nsv::Int = 6, ritzvec::Bool = true, tol::Float64 = 0.0, maxite
317317
# left_sv = sqrt(2) * ex[2][ 1:size(X,1), ind ] .* sign.(ex[1][ind]')
318318
if size(X, 1) >= size(X, 2)
319319
V = ex[2]
320-
U = qr(mul1!(X*V, Diagonal(inv.(svals))))[1]
320+
U = qr(rmul!(X*V, Diagonal(inv.(svals))))[1]
321321
else
322322
U = ex[2]
323-
V = qr(mul1!(X'U, Diagonal(inv.(svals))))[1]
323+
V = qr(rmul!(X'U, Diagonal(inv.(svals))))[1]
324324
end
325325

326326
# right_sv = sqrt(2) * ex[2][ size(X,1)+1:end, ind ]

stdlib/LinearAlgebra/docs/src/index.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -427,8 +427,8 @@ below (e.g. `mul!`) according to the usual Julia convention.
427427

428428
```@docs
429429
LinearAlgebra.mul!
430-
LinearAlgebra.mul1!
431-
LinearAlgebra.mul2!
430+
LinearAlgebra.lmul!
431+
LinearAlgebra.rmul!
432432
LinearAlgebra.ldiv!
433433
LinearAlgebra.rdiv!
434434
```

stdlib/LinearAlgebra/src/LinearAlgebra.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ export
115115
lufact!,
116116
lyap,
117117
mul!,
118-
mul1!,
119-
mul2!,
118+
lmul!,
119+
rmul!,
120120
norm,
121121
normalize,
122122
normalize!,

stdlib/LinearAlgebra/src/dense.jl

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ const NRM2_CUTOFF = 32
1414
# This constant should ideally be determined by the actual CPU cache size
1515
const ISONE_CUTOFF = 2^21 # 2M
1616

17-
function mul1!(X::Array{T}, s::T) where T<:BlasFloat
17+
function rmul!(X::Array{T}, s::T) where T<:BlasFloat
1818
s == 0 && return fill!(X, zero(T))
1919
s == 1 && return X
2020
if length(X) < SCAL_CUTOFF
21-
generic_mul1!(X, s)
21+
generic_rmul!(X, s)
2222
else
2323
BLAS.scal!(length(X), s, X, 1)
2424
end
2525
X
2626
end
2727

28-
mul2!(s::T, X::Array{T}) where {T<:BlasFloat} = mul1!(X, s)
28+
lmul!(s::T, X::Array{T}) where {T<:BlasFloat} = rmul!(X, s)
2929

30-
mul1!(X::Array{T}, s::Number) where {T<:BlasFloat} = mul1!(X, convert(T, s))
31-
function mul1!(X::Array{T}, s::Real) where T<:BlasComplex
30+
rmul!(X::Array{T}, s::Number) where {T<:BlasFloat} = rmul!(X, convert(T, s))
31+
function rmul!(X::Array{T}, s::Real) where T<:BlasComplex
3232
R = typeof(real(zero(T)))
3333
GC.@preserve X BLAS.scal!(2*length(X), convert(R,s), convert(Ptr{R},pointer(X)), 1)
3434
X
@@ -1402,7 +1402,7 @@ function sylvester(A::StridedMatrix{T},B::StridedMatrix{T},C::StridedMatrix{T})
14021402

14031403
D = -(adjoint(QA) * (C*QB))
14041404
Y, scale = LAPACK.trsyl!('N','N', RA, RB, D)
1405-
mul1!(QA*(Y * adjoint(QB)), inv(scale))
1405+
rmul!(QA*(Y * adjoint(QB)), inv(scale))
14061406
end
14071407
sylvester(A::StridedMatrix{T}, B::StridedMatrix{T}, C::StridedMatrix{T}) where {T<:Integer} = sylvester(float(A), float(B), float(C))
14081408

@@ -1445,7 +1445,7 @@ function lyap(A::StridedMatrix{T}, C::StridedMatrix{T}) where {T<:BlasFloat}
14451445

14461446
D = -(adjoint(Q) * (C*Q))
14471447
Y, scale = LAPACK.trsyl!('N', T <: Complex ? 'C' : 'T', R, R, D)
1448-
mul1!(Q*(Y * adjoint(Q)), inv(scale))
1448+
rmul!(Q*(Y * adjoint(Q)), inv(scale))
14491449
end
14501450
lyap(A::StridedMatrix{T}, C::StridedMatrix{T}) where {T<:Integer} = lyap(float(A), float(C))
14511451
lyap(a::T, c::T) where {T<:Number} = -c/(2a)

stdlib/LinearAlgebra/src/deprecated.jl

+97-97
Large diffs are not rendered by default.

stdlib/LinearAlgebra/src/diagonal.jl

+32-32
Original file line numberDiff line numberDiff line change
@@ -151,116 +151,116 @@ end
151151
(*)(Da::Diagonal, Db::Diagonal) = Diagonal(Da.diag .* Db.diag)
152152
(*)(D::Diagonal, V::AbstractVector) = D.diag .* V
153153

154-
(*)(A::AbstractTriangular, D::Diagonal) = mul1!(copy(A), D)
155-
(*)(D::Diagonal, B::AbstractTriangular) = mul2!(D, copy(B))
154+
(*)(A::AbstractTriangular, D::Diagonal) = rmul!(copy(A), D)
155+
(*)(D::Diagonal, B::AbstractTriangular) = lmul!(D, copy(B))
156156

157157
(*)(A::AbstractMatrix, D::Diagonal) =
158158
mul!(similar(A, promote_op(*, eltype(A), eltype(D.diag)), size(A)), A, D)
159159
(*)(D::Diagonal, A::AbstractMatrix) =
160160
mul!(similar(A, promote_op(*, eltype(A), eltype(D.diag)), size(A)), D, A)
161161

162-
function mul1!(A::AbstractMatrix, D::Diagonal)
162+
function rmul!(A::AbstractMatrix, D::Diagonal)
163163
A .= A .* transpose(D.diag)
164164
return A
165165
end
166166

167-
function mul2!(D::Diagonal, B::AbstractMatrix)
167+
function lmul!(D::Diagonal, B::AbstractMatrix)
168168
B .= D.diag .* B
169169
return B
170170
end
171171

172-
mul1!(A::Union{LowerTriangular,UpperTriangular}, D::Diagonal) = typeof(A)(mul1!(A.data, D))
173-
function mul1!(A::UnitLowerTriangular, D::Diagonal)
174-
mul1!(A.data, D)
172+
rmul!(A::Union{LowerTriangular,UpperTriangular}, D::Diagonal) = typeof(A)(rmul!(A.data, D))
173+
function rmul!(A::UnitLowerTriangular, D::Diagonal)
174+
rmul!(A.data, D)
175175
for i = 1:size(A, 1)
176176
A.data[i,i] = D.diag[i]
177177
end
178178
LowerTriangular(A.data)
179179
end
180-
function mul1!(A::UnitUpperTriangular, D::Diagonal)
181-
mul1!(A.data, D)
180+
function rmul!(A::UnitUpperTriangular, D::Diagonal)
181+
rmul!(A.data, D)
182182
for i = 1:size(A, 1)
183183
A.data[i,i] = D.diag[i]
184184
end
185185
UpperTriangular(A.data)
186186
end
187187

188-
function mul2!(D::Diagonal, B::UnitLowerTriangular)
189-
mul2!(D, B.data)
188+
function lmul!(D::Diagonal, B::UnitLowerTriangular)
189+
lmul!(D, B.data)
190190
for i = 1:size(B, 1)
191191
B.data[i,i] = D.diag[i]
192192
end
193193
LowerTriangular(B.data)
194194
end
195-
function mul2!(D::Diagonal, B::UnitUpperTriangular)
196-
mul2!(D, B.data)
195+
function lmul!(D::Diagonal, B::UnitUpperTriangular)
196+
lmul!(D, B.data)
197197
for i = 1:size(B, 1)
198198
B.data[i,i] = D.diag[i]
199199
end
200200
UpperTriangular(B.data)
201201
end
202202

203203
*(D::Adjoint{<:Any,<:Diagonal}, B::Diagonal) = Diagonal(adjoint.(D.parent.diag) .* B.diag)
204-
*(A::Adjoint{<:Any,<:AbstractTriangular}, D::Diagonal) = mul1!(copy(A), D)
204+
*(A::Adjoint{<:Any,<:AbstractTriangular}, D::Diagonal) = rmul!(copy(A), D)
205205
function *(adjA::Adjoint{<:Any,<:AbstractMatrix}, D::Diagonal)
206206
A = adjA.parent
207207
Ac = similar(A, promote_op(*, eltype(A), eltype(D.diag)), (size(A, 2), size(A, 1)))
208208
adjoint!(Ac, A)
209-
mul1!(Ac, D)
209+
rmul!(Ac, D)
210210
end
211211

212212
*(D::Transpose{<:Any,<:Diagonal}, B::Diagonal) = Diagonal(transpose.(D.parent.diag) .* B.diag)
213-
*(A::Transpose{<:Any,<:AbstractTriangular}, D::Diagonal) = mul1!(copy(A), D)
213+
*(A::Transpose{<:Any,<:AbstractTriangular}, D::Diagonal) = rmul!(copy(A), D)
214214
function *(transA::Transpose{<:Any,<:AbstractMatrix}, D::Diagonal)
215215
A = transA.parent
216216
At = similar(A, promote_op(*, eltype(A), eltype(D.diag)), (size(A, 2), size(A, 1)))
217217
transpose!(At, A)
218-
mul1!(At, D)
218+
rmul!(At, D)
219219
end
220220

221221
*(D::Diagonal, B::Adjoint{<:Any,<:Diagonal}) = Diagonal(D.diag .* adjoint.(B.parent.diag))
222-
*(D::Diagonal, B::Adjoint{<:Any,<:AbstractTriangular}) = mul2!(D, collect(B))
223-
*(D::Diagonal, adjQ::Adjoint{<:Any,<:Union{QRCompactWYQ,QRPackedQ}}) = (Q = adjQ.parent; mul1!(Array(D), adjoint(Q)))
222+
*(D::Diagonal, B::Adjoint{<:Any,<:AbstractTriangular}) = lmul!(D, collect(B))
223+
*(D::Diagonal, adjQ::Adjoint{<:Any,<:Union{QRCompactWYQ,QRPackedQ}}) = (Q = adjQ.parent; rmul!(Array(D), adjoint(Q)))
224224
function *(D::Diagonal, adjA::Adjoint{<:Any,<:AbstractMatrix})
225225
A = adjA.parent
226226
Ac = similar(A, promote_op(*, eltype(A), eltype(D.diag)), (size(A, 2), size(A, 1)))
227227
adjoint!(Ac, A)
228-
mul2!(D, Ac)
228+
lmul!(D, Ac)
229229
end
230230

231231
*(D::Diagonal, B::Transpose{<:Any,<:Diagonal}) = Diagonal(D.diag .* transpose.(B.parent.diag))
232-
*(D::Diagonal, B::Transpose{<:Any,<:AbstractTriangular}) = mul2!(D, copy(B))
232+
*(D::Diagonal, B::Transpose{<:Any,<:AbstractTriangular}) = lmul!(D, copy(B))
233233
function *(D::Diagonal, transA::Transpose{<:Any,<:AbstractMatrix})
234234
A = transA.parent
235235
At = similar(A, promote_op(*, eltype(A), eltype(D.diag)), (size(A, 2), size(A, 1)))
236236
transpose!(At, A)
237-
mul2!(D, At)
237+
lmul!(D, At)
238238
end
239239

240240
*(D::Adjoint{<:Any,<:Diagonal}, B::Adjoint{<:Any,<:Diagonal}) =
241241
Diagonal(adjoint.(D.parent.diag) .* adjoint.(B.parent.diag))
242242
*(D::Transpose{<:Any,<:Diagonal}, B::Transpose{<:Any,<:Diagonal}) =
243243
Diagonal(transpose.(D.parent.diag) .* transpose.(B.parent.diag))
244244

245-
mul1!(A::Diagonal, B::Diagonal) = Diagonal(A.diag .*= B.diag)
246-
mul2!(A::Diagonal, B::Diagonal) = Diagonal(B.diag .= A.diag .* B.diag)
245+
rmul!(A::Diagonal, B::Diagonal) = Diagonal(A.diag .*= B.diag)
246+
lmul!(A::Diagonal, B::Diagonal) = Diagonal(B.diag .= A.diag .* B.diag)
247247

248-
function mul2!(adjA::Adjoint{<:Any,<:Diagonal}, B::AbstractMatrix)
248+
function lmul!(adjA::Adjoint{<:Any,<:Diagonal}, B::AbstractMatrix)
249249
A = adjA.parent
250-
return mul2!(conj(A.diag), B)
250+
return lmul!(conj(A.diag), B)
251251
end
252-
function mul2!(transA::Transpose{<:Any,<:Diagonal}, B::AbstractMatrix)
252+
function lmul!(transA::Transpose{<:Any,<:Diagonal}, B::AbstractMatrix)
253253
A = transA.parent
254-
return mul2!(A.diag, B)
254+
return lmul!(A.diag, B)
255255
end
256256

257-
function mul1!(A::AbstractMatrix, adjB::Adjoint{<:Any,<:Diagonal})
257+
function rmul!(A::AbstractMatrix, adjB::Adjoint{<:Any,<:Diagonal})
258258
B = adjB.parent
259-
return mul1!(A, conj(B.diag))
259+
return rmul!(A, conj(B.diag))
260260
end
261-
function mul1!(A::AbstractMatrix, transB::Transpose{<:Any,<:Diagonal})
261+
function rmul!(A::AbstractMatrix, transB::Transpose{<:Any,<:Diagonal})
262262
B = transB.parent
263-
return mul1!(A, B.diag)
263+
return rmul!(A, B.diag)
264264
end
265265

266266
# Get ambiguous method if try to unify AbstractVector/AbstractMatrix here using AbstractVecOrMat

stdlib/LinearAlgebra/src/generic.jl

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
# For better performance when input and output are the same array
66
# See https://github.com/JuliaLang/julia/issues/8415#issuecomment-56608729
7-
function generic_mul1!(X::AbstractArray, s::Number)
7+
function generic_rmul!(X::AbstractArray, s::Number)
88
@simd for I in eachindex(X)
99
@inbounds X[I] *= s
1010
end
1111
X
1212
end
1313

14-
function generic_mul2!(s::Number, X::AbstractArray)
14+
function generic_lmul!(s::Number, X::AbstractArray)
1515
@simd for I in eachindex(X)
1616
@inbounds X[I] = s*X[I]
1717
end
@@ -43,7 +43,7 @@ mul!(C::AbstractArray, s::Number, X::AbstractArray) = generic_mul!(C, X, s)
4343
mul!(C::AbstractArray, X::AbstractArray, s::Number) = generic_mul!(C, s, X)
4444

4545
"""
46-
mul1!(A::AbstractArray, b::Number)
46+
rmul!(A::AbstractArray, b::Number)
4747
4848
Scale an array `A` by a scalar `b` overwriting `A` in-place.
4949
@@ -54,16 +54,16 @@ julia> A = [1 2; 3 4]
5454
1 2
5555
3 4
5656
57-
julia> mul1!(A, 2)
57+
julia> rmul!(A, 2)
5858
2×2 Array{Int64,2}:
5959
2 4
6060
6 8
6161
```
6262
"""
63-
mul1!(A::AbstractArray, b::Number) = generic_mul1!(A, b)
63+
rmul!(A::AbstractArray, b::Number) = generic_rmul!(A, b)
6464

6565
"""
66-
mul2!(a::Number, B::AbstractArray)
66+
lmul!(a::Number, B::AbstractArray)
6767
6868
Scale an array `B` by a scalar `a` overwriting `B` in-place.
6969
@@ -74,13 +74,13 @@ julia> B = [1 2; 3 4]
7474
1 2
7575
3 4
7676
77-
julia> mul2!(2, B)
77+
julia> lmul!(2, B)
7878
2×2 Array{Int64,2}:
7979
2 4
8080
6 8
8181
```
8282
"""
83-
mul2!(a::Number, B::AbstractArray) = generic_mul2!(a, B)
83+
lmul!(a::Number, B::AbstractArray) = generic_lmul!(a, B)
8484

8585
"""
8686
cross(x, y)
@@ -1439,12 +1439,12 @@ end
14391439

14401440
if nrm δ # Safe to multiply with inverse
14411441
invnrm = inv(nrm)
1442-
mul1!(v, invnrm)
1442+
rmul!(v, invnrm)
14431443

14441444
else # scale elements to avoid overflow
14451445
εδ = eps(one(nrm))/δ
1446-
mul1!(v, εδ)
1447-
mul1!(v, inv(nrm*εδ))
1446+
rmul!(v, εδ)
1447+
rmul!(v, inv(nrm*εδ))
14481448
end
14491449

14501450
v

stdlib/LinearAlgebra/src/givens.jl

+9-9
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ transpose(R::AbstractRotation) = error("transpose not implemented for $(typeof(R
77

88
function *(R::AbstractRotation{T}, A::AbstractVecOrMat{S}) where {T,S}
99
TS = typeof(zero(T)*zero(S) + zero(T)*zero(S))
10-
mul2!(convert(AbstractRotation{TS}, R), TS == S ? copy(A) : convert(AbstractArray{TS}, A))
10+
lmul!(convert(AbstractRotation{TS}, R), TS == S ? copy(A) : convert(AbstractArray{TS}, A))
1111
end
1212
*(A::AbstractVector, adjR::Adjoint{<:Any,<:AbstractRotation}) = _absvecormat_mul_adjrot(A, adjR)
1313
*(A::AbstractMatrix, adjR::Adjoint{<:Any,<:AbstractRotation}) = _absvecormat_mul_adjrot(A, adjR)
1414
function _absvecormat_mul_adjrot(A::AbstractVecOrMat{T}, adjR::Adjoint{<:Any,<:AbstractRotation{S}}) where {T,S}
1515
R = adjR.parent
1616
TS = typeof(zero(T)*zero(S) + zero(T)*zero(S))
17-
mul1!(TS == T ? copy(A) : convert(AbstractArray{TS}, A), adjoint(convert(AbstractRotation{TS}, R)))
17+
rmul!(TS == T ? copy(A) : convert(AbstractArray{TS}, A), adjoint(convert(AbstractRotation{TS}, R)))
1818
end
1919
"""
2020
LinearAlgebra.Givens(i1,i2,c,s) -> G
@@ -325,7 +325,7 @@ function getindex(G::Givens, i::Integer, j::Integer)
325325
end
326326
end
327327

328-
function mul2!(G::Givens, A::AbstractVecOrMat)
328+
function lmul!(G::Givens, A::AbstractVecOrMat)
329329
m, n = size(A, 1), size(A, 2)
330330
if G.i2 > m
331331
throw(DimensionMismatch("column indices for rotation are outside the matrix"))
@@ -337,7 +337,7 @@ function mul2!(G::Givens, A::AbstractVecOrMat)
337337
end
338338
return A
339339
end
340-
function mul1!(A::AbstractMatrix, adjG::Adjoint{<:Any,<:Givens})
340+
function rmul!(A::AbstractMatrix, adjG::Adjoint{<:Any,<:Givens})
341341
G = adjG.parent
342342
m, n = size(A, 1), size(A, 2)
343343
if G.i2 > n
@@ -351,20 +351,20 @@ function mul1!(A::AbstractMatrix, adjG::Adjoint{<:Any,<:Givens})
351351
return A
352352
end
353353

354-
function mul2!(G::Givens, R::Rotation)
354+
function lmul!(G::Givens, R::Rotation)
355355
push!(R.rotations, G)
356356
return R
357357
end
358-
function mul2!(R::Rotation, A::AbstractMatrix)
358+
function lmul!(R::Rotation, A::AbstractMatrix)
359359
@inbounds for i = 1:length(R.rotations)
360-
mul2!(R.rotations[i], A)
360+
lmul!(R.rotations[i], A)
361361
end
362362
return A
363363
end
364-
function mul1!(A::AbstractMatrix, adjR::Adjoint{<:Any,<:Rotation})
364+
function rmul!(A::AbstractMatrix, adjR::Adjoint{<:Any,<:Rotation})
365365
R = adjR.parent
366366
@inbounds for i = 1:length(R.rotations)
367-
mul1!(A, adjoint(R.rotations[i]))
367+
rmul!(A, adjoint(R.rotations[i]))
368368
end
369369
return A
370370
end

0 commit comments

Comments
 (0)