Skip to content

Base.quadgk fails with Unitful #44

@ggggggggg

Description

@ggggggggg

My guess is that this issue actually arises from Base, but it seems worth having someone with more knowledge look at it first. The docs for quadgk claim that it should work with any type that implements, +, -, multiplication by real values, and norm; all of which seem to work with Quantity.

julia> using Unitful

julia> quadgk(x->x*1u"mm",0,1)
ERROR: Unitful.DimensionError()
 in convfact(...) at /Users/oneilg/.julia/v0.5/Unitful/src/Conversion.jl:79
 in convert at /Users/oneilg/.julia/v0.5/Unitful/src/Conversion.jl:183 [inlined]
 in Base.QuadGK.Segment(::Float64, ::Float64, ::Unitful.Quantity{Float64,Unitful.Dimensions{(Unitful.Dimension{:Length}(1//1),)},Unitful.Units{(Unitful.Unit{:Meter}(-3,1//1),),Unitful.Dimensions{(Unitful.Dimension{:Length}(1//1),)}}}, ::Unitful.Quantity{Float64,Unitful.Dimensions{(Unitful.Dimension{:Length}(1//1),)},Unitful.Units{(Unitful.Unit{:Meter}(-3,1//1),),Unitful.Dimensions{(Unitful.Dimension{:Length}(1//1),)}}}) at ./quadgk.jl:40
 in evalrule(::##1#2, ::Float64, ::Float64, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Base.LinAlg.#vecnorm) at ./quadgk.jl:79
 in do_quadgk(::##1#2, ::Array{Float64,1}, ::Int64, ::Type{Float64}, ::Float64, ::Float64, ::Int64, ::Base.LinAlg.#vecnorm) at ./quadgk.jl:120
 in #quadgk#15(::Array{Any,1}, ::Function, ::Function, ::Int64, ::Int64) at ./quadgk.jl:230
 in quadgk(::Function, ::Int64, ::Int64) at ./quadgk.jl:225

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions