Skip to content

Commit d11d351

Browse files
committed
Fix too optimistic definitions of * and / with scalars
1 parent 61c65b1 commit d11d351

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

src/pdiagmat.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ function pdadd!(r::Matrix, a::Matrix, b::PDiagMat, c)
5151
return r
5252
end
5353

54-
*(a::PDiagMat, c::Real) = PDiagMat(a.diag * c)
54+
*(a::PDiagMat, c::Real) = Diagonal(a.diag) * c
5555
function *(a::PDiagMat, x::AbstractVector)
5656
@check_argdims a.dim == length(x)
5757
return a.diag .* x

src/pdmat.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ function pdadd!(r::Matrix, a::Matrix, b::PDMat, c)
9393
return _addscal!(r, a, b.mat, c)
9494
end
9595

96-
*(a::PDMat, c::Real) = PDMat(a.mat * c)
96+
*(a::PDMat, c::Real) = a.mat * c
9797
*(a::PDMat, x::AbstractVector) = a.mat * x
9898
*(a::PDMat, x::AbstractMatrix) = a.mat * x
9999
\(a::PDMat, x::AbstractVecOrMat) = a.chol \ x

src/pdsparsemat.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ function pdadd!(r::Matrix, a::Matrix, b::PDSparseMat, c)
6565
return _addscal!(r, a, b.mat, c)
6666
end
6767

68-
*(a::PDSparseMat, c::Real) = PDSparseMat(a.mat * c)
68+
*(a::PDSparseMat, c::Real) = a.mat * c
6969
*(a::PDSparseMat, x::AbstractMatrix) = a.mat * x # defining these seperately to avoid
7070
*(a::PDSparseMat, x::AbstractVector) = a.mat * x # ambiguity errors
7171
\(a::PDSparseMat{T}, x::AbstractVecOrMat{T}) where {T <: Real} = convert(Array{T}, a.chol \ convert(Array{Float64}, x)) #to avoid limitations in sparse factorization library CHOLMOD, see e.g., julia issue #14076

src/scalmat.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ function pdadd!(r::Matrix, a::Matrix, b::ScalMat, c)
3838
return r
3939
end
4040

41-
*(a::ScalMat, c::Real) = ScalMat(a.dim, a.value * c)
42-
/(a::ScalMat, c::Real) = ScalMat(a.dim, a.value / c)
41+
*(a::ScalMat, c::Real) = Diagonal(fill(a.value * c, a.dim))
42+
/(a::ScalMat, c::Real) = Diagonal(fill(a.value / c, a.dim))
4343
function *(a::ScalMat, x::AbstractVector)
4444
@check_argdims a.dim == length(x)
4545
return a.value * x

0 commit comments

Comments
 (0)