diff --git a/base/range.jl b/base/range.jl index 1e12fd2b91c8a..8af06d8ed9b04 100644 --- a/base/range.jl +++ b/base/range.jl @@ -421,18 +421,18 @@ end -(r::OrdinalRange) = range(-r.start, -step(r), length(r)) -(r::FloatRange) = FloatRange(-r.start, -r.step, r.len, r.divisor) -+(x::Real, r::UnitRange) = range(x + r.start, length(r)) -+(x::Real, r::Range) = (x+first(r)):step(r):(x+last(r)) -#+(x::Real, r::StepRange) = range(x + r.start, r.step, length(r)) -+(x::Real, r::FloatRange) = FloatRange(r.divisor*x + r.start, r.step, r.len, r.divisor) -+(r::Range, x::Real) = x + r -#+(r::FloatRange, x::Real) = x + r - --(x::Real, r::Range) = (x-first(r)):-step(r):(x-last(r)) --(x::Real, r::FloatRange) = FloatRange(r.divisor*x - r.start, -r.step, r.len, r.divisor) --(r::UnitRange, x::Real) = range(r.start-x, length(r)) --(r::StepRange , x::Real) = range(r.start-x, r.step, length(r)) --(r::FloatRange, x::Real) = FloatRange(r.start - r.divisor*x, r.step, r.len, r.divisor) +.+(x::Real, r::UnitRange) = range(x + r.start, length(r)) +.+(x::Real, r::Range) = (x+first(r)):step(r):(x+last(r)) +#.+(x::Real, r::StepRange) = range(x + r.start, r.step, length(r)) +.+(x::Real, r::FloatRange) = FloatRange(r.divisor*x + r.start, r.step, r.len, r.divisor) +.+(r::Range, x::Real) = x + r +#.+(r::FloatRange, x::Real) = x + r + +.-(x::Real, r::Range) = (x-first(r)):-step(r):(x-last(r)) +.-(x::Real, r::FloatRange) = FloatRange(r.divisor*x - r.start, -r.step, r.len, r.divisor) +.-(r::UnitRange, x::Real) = range(r.start-x, length(r)) +.-(r::StepRange , x::Real) = range(r.start-x, r.step, length(r)) +.-(r::FloatRange, x::Real) = FloatRange(r.start - r.divisor*x, r.step, r.len, r.divisor) .*(x::Real, r::OrdinalRange) = range(x*r.start, x*step(r), length(r)) .*(x::Real, r::FloatRange) = FloatRange(x*r.start, x*r.step, r.len, r.divisor) diff --git a/base/sparse/sparsematrix.jl b/base/sparse/sparsematrix.jl index 65a183608d1f9..10a0307b65ff3 100644 --- a/base/sparse/sparsematrix.jl +++ b/base/sparse/sparsematrix.jl @@ -601,11 +601,15 @@ for (op, restype) in ( (:+, Nothing), (:-, Nothing), (:.*, Nothing), end # quote end # macro -(+)(A::SparseMatrixCSC, B::Union(Array,Number)) = (+)(full(A), B) -(+)(A::Union(Array,Number), B::SparseMatrixCSC) = (+)(A, full(B)) - -(-)(A::SparseMatrixCSC, B::Union(Array,Number)) = (-)(full(A), B) -(-)(A::Union(Array,Number), B::SparseMatrixCSC) = (-)(A, full(B)) +(.+)(A::SparseMatrixCSC, B::Number) = full(A) .+ B +( +)(A::SparseMatrixCSC, B::Array ) = full(A) + B +(.+)(A::Number, B::SparseMatrixCSC) = A .+ full(B) +( +)(A::Array , B::SparseMatrixCSC) = A + full(B) + +(.-)(A::SparseMatrixCSC, B::Number) = full(A) .- B +( -)(A::SparseMatrixCSC, B::Array ) = full(A) - B +(.-)(A::Number, B::SparseMatrixCSC) = A .- full(B) +( -)(A::Array , B::SparseMatrixCSC) = A - full(B) (.*)(A::SparseMatrixCSC, B::Number) = SparseMatrixCSC(A.m, A.n, copy(A.colptr), copy(A.rowval), A.nzval .* B) (.*)(A::Number, B::SparseMatrixCSC) = SparseMatrixCSC(B.m, B.n, copy(B.colptr), copy(B.rowval), A .* B.nzval)