From 913c1314a790ce75df38c97229733db2d4c23ba4 Mon Sep 17 00:00:00 2001 From: Josh Day Date: Mon, 30 Oct 2017 13:34:34 -0400 Subject: [PATCH] allow * to construct scaled --- src/elementpenalty.jl | 1 + test/runtests.jl | 1 + 2 files changed, 2 insertions(+) diff --git a/src/elementpenalty.jl b/src/elementpenalty.jl index 6cbd98e..5ecf590 100644 --- a/src/elementpenalty.jl +++ b/src/elementpenalty.jl @@ -239,6 +239,7 @@ end scaled(p::ElementPenalty, λ::Number) = (_scale_check(λ); ScaledElementPenalty(p, λ)) Base.show(io::IO, sp::ScaledElementPenalty) = print(io, "$(sp.λ) * ($(sp.penalty))") +Base.:(*)(λ::Number, p::ElementPenalty) = scaled(p, λ) value(p::ScaledElementPenalty{<:Number}, θ::Number) = p.λ * value(p.penalty, θ) deriv(p::ScaledElementPenalty{<:Number}, θ::Number) = p.λ * deriv(p.penalty, θ) diff --git a/test/runtests.jl b/test/runtests.jl index 5bbdcb7..c8aa37b 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -166,6 +166,7 @@ end # FIXME: @inference broken during tests (not in REPL though) # only for ElasticNetPenalty{Float64} for some reason @test value(s, x) ≈ value(p, x, .1) + @test value(s, x) == value(.1 * p, x) @test @inferred(deriv(s, x[1])) ≈ deriv(p, x[1], .1) @test @inferred(grad(s, x)) ≈ grad(p, x, .1) if typeof(p) <: ConvexElementPenalty