diff --git a/base/quadgk.jl b/base/quadgk.jl index d80e1a4ae516e..2136b46585128 100644 --- a/base/quadgk.jl +++ b/base/quadgk.jl @@ -40,7 +40,7 @@ immutable Segment a::Number b::Number I - E::Real + E end isless(i::Segment, j::Segment) = isless(i.E, j.E) diff --git a/test/math.jl b/test/math.jl index e3ae942dc4664..4b9678e805fb6 100644 --- a/test/math.jl +++ b/test/math.jl @@ -760,6 +760,32 @@ end @test quadgk(cos, 0,0.7,1, norm=abs)[1] ≈ sin(1) end +module Test19626 + using Base.Test + + # Define a mock physical quantity type + immutable MockQuantity <: Number + val::Float64 + end + + # Following definitions needed for quadgk to work with MockQuantity + import Base: +, -, *, abs, isnan, isinf, isless + +(a::MockQuantity, b::MockQuantity) = MockQuantity(a.val+b.val) + -(a::MockQuantity, b::MockQuantity) = MockQuantity(a.val-b.val) + *(a::MockQuantity, b::Number) = MockQuantity(a.val*b) + abs(a::MockQuantity) = MockQuantity(abs(a.val)) + isnan(a::MockQuantity) = isnan(a.val) + isinf(a::MockQuantity) = isinf(a.val) + isless(a::MockQuantity, b::MockQuantity) = isless(a.val, b.val) + + # isapprox only needed for test purposes + Base.isapprox(a::MockQuantity, b::MockQuantity) = isapprox(a.val, b.val) + + # Test physical quantity-valued functions + @test quadgk(x->MockQuantity(x), 0.0, 1.0, abstol=MockQuantity(0.0))[1] ≈ + MockQuantity(0.5) +end + @testset "subnormal flags" begin # Ensure subnormal flags functions don't segfault @test any(set_zero_subnormals(true) .== [false,true])