Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regressions of ConstantInterpolation reported by JET.@report_opt #389

Open
devmotion opened this issue Feb 6, 2025 · 3 comments
Open

Regressions of ConstantInterpolation reported by JET.@report_opt #389

devmotion opened this issue Feb 6, 2025 · 3 comments
Labels
bug Something isn't working

Comments

@devmotion
Copy link
Member

Describe the bug 🐞

I'm upgrading from DataInterpolations 5.0.0 to the latest release and tests with JET.@test_opt started to fail.

Expected behavior

No regression should occur when updating DataInterpolations.

Minimal Reproducible Example 👇

With DataInterpolations 5.0.0:

julia> using DataInterpolations, JET

julia> @report_opt ConstantInterpolation(["A", "B", "C"], [0.1, 0.2, 0.3])
No errors detected

On the master branch:

julia> using DataInterpolations, JET

julia> @report_opt ConstantInterpolation(["A", "B", "C"], [0.1, 0.2, 0.3])
┌ Warning: skipping (::Base.var"#56#57")(x) @ Base promotion.jl:425 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#show_bound#659")(io::IO, b) @ Base show.jl:2772 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#show_bound#659")(io::IO, b) @ Base show.jl:2772 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#133#134")() @ Base array.jl:1116 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#cvt1#1"{T})(n) where T @ Base essentials.jl:607 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping var"#_#113"(kw::Base.Pairs{Symbol, V, NTuple{N, Symbol}, NamedTuple{names, T}} where {V, N, names, T<:NTuple{N, Any}}, c::ComposedFunction, x...) @ Base operators.jl:1050
│ to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping var"#_#113"(kw::Base.Pairs{Symbol, V, NTuple{N, Symbol}, NamedTuple{names, T}} where {V, N, names, T<:NTuple{N, Any}}, c::ComposedFunction, x...) @ Base operators.jl:1050
│ to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#cvt1#1"{T})(n) where T @ Base essentials.jl:607 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#cvt1#1"{T})(n) where T @ Base essentials.jl:607 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
┌ Warning: skipping (::Base.var"#cvt1#1"{T})(n) where T @ Base essentials.jl:607 to avoid parsing too much code
└ @ Revise /Users/david/.julia/packages/Revise/tTIBp/src/packagedef.jl:1163
═════ 103 possible errors found ═════
┌ ConstantInterpolation(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:353
│┌ ConstantInterpolation(u::Vector{…}, t::Vector{…}; dir::Symbol, extrapolation::DataInterpolations.ExtrapolationType.T, extrapolation_left::DataInterpolations.ExtrapolationType.T, extrapolation_right::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:360
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:115
│││┌ (::Colon)(a::Int64, b::Real) @ Base ./range.jl:3
││││┌ promote(x::Int64, y::Real) @ Base ./promotion.jl:400
│││││┌ _promote(x::Int64, y::Real) @ Base ./promotion.jl:374
││││││┌ promote_type(::Type{Int64}, ::Type{S} where S<:Real) @ Base ./promotion.jl:318
│││││││┌ promote_result(::Type{Int64}, ::Type{S} where S<:Real, ::Type{T}, ::Type{S}) where {T, S} @ Base ./promotion.jl:338
││││││││ runtime dispatch detected: promote_type(%1::Type, %2::Type)::Any
│││││││└────────────────────
││││┌ promote(x::Int64, y::Real) @ Base ./promotion.jl:401
│││││┌ not_sametype(x::T, y::T) where T<:Tuple{Int64, Real} @ Base ./promotion.jl:418
││││││┌ sametype_error(input::Tuple{Int64, Real}) @ Base ./promotion.jl:424
│││││││┌ map(f::Base.var"#56#57", t::Tuple{Int64, Real}) @ Base ./tuple.jl:356
││││││││┌ (::Base.var"#56#57")(x::Int64) @ Base ./promotion.jl:425
│││││││││┌ string(xs::Type{Int64}) @ Base ./strings/io.jl:189
││││││││││┌ print_to_string(xs::Type{Int64}) @ Base ./strings/io.jl:148
│││││││││││┌ print(io::IOBuffer, x::Type{Int64}) @ Base ./strings/io.jl:35
││││││││││││┌ show(io::IOBuffer, x::Type{Int64}) @ Base ./show.jl:965
│││││││││││││┌ _show_type(io::IOBuffer, x::Type) @ Base ./show.jl:970
││││││││││││││┌ show_typealias(io::IOBuffer, x::Type) @ Base ./show.jl:805
│││││││││││││││┌ make_typealias(x::Type) @ Base ./show.jl:615
││││││││││││││││┌ modulesof!(s::Set{Module}, x::Type) @ Base ./show.jl:590
│││││││││││││││││ runtime dispatch detected: Base.modulesof!(s::Set{Module}, %20::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ modulesof!(s::Set{Module}, x::Type) @ Base ./show.jl:591
│││││││││││││││││ runtime dispatch detected: Base.modulesof!(s::Set{Module}, %34::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ modulesof!(s::Set{Module}, x::TypeVar) @ Base ./show.jl:584
│││││││││││││││││ runtime dispatch detected: Base.modulesof!(s::Set{Module}, %1::Any)::Set{Module}
││││││││││││││││└────────────────────
││││││││││││││┌ show_typealias(io::IOBuffer, x::Type) @ Base ./show.jl:808
│││││││││││││││┌ show_typealias(io::IOBuffer, name::GlobalRef, x::Type, env::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:755
││││││││││││││││┌ show_typeparams(io::IOContext{IOBuffer}, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:719
│││││││││││││││││┌ show(io::IOContext{IOBuffer}, tv::TypeVar) @ Base ./show.jl:2783
││││││││││││││││││┌ (::Base.var"#show_bound#659")(io::IOContext{IOBuffer}, b::Any) @ Base ./show.jl:2775
│││││││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, b::Any)::Any
││││││││││││││││││└────────────────────
││││││││││││││││┌ show_typeparams(io::IOContext{IOBuffer}, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:714
│││││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %252::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ show_typeparams(io::IOContext{IOBuffer}, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:717
│││││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %313::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ show_typeparams(io::IOContext{IOBuffer}, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:722
│││││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %191::Any)::Any
││││││││││││││││└────────────────────
│││││││││││││┌ _show_type(io::IOBuffer, x::Type) @ Base ./show.jl:973
││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType) @ Base ./show.jl:1089
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1092
││││││││││││││││┌ maybe_kws_nt(x::DataType) @ Base ./show.jl:1080
│││││││││││││││││ runtime dispatch detected: eltype(%76::DataType)::Any
││││││││││││││││└────────────────────
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1181
││││││││││││││││┌ show_typeparams(io::IOBuffer, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:719
│││││││││││││││││┌ show(io::IOBuffer, tv::TypeVar) @ Base ./show.jl:2783
││││││││││││││││││┌ (::Base.var"#show_bound#659")(io::IOBuffer, b::Any) @ Base ./show.jl:2775
│││││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, b::Any)::Any
││││││││││││││││││└────────────────────
││││││││││││││││┌ show_typeparams(io::IOBuffer, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:714
│││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %250::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ show_typeparams(io::IOBuffer, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:717
│││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %310::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ show_typeparams(io::IOBuffer, env::Core.SimpleVector, orig::Core.SimpleVector, wheres::Vector{TypeVar}) @ Base ./show.jl:722
│││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %190::Any)::Any
││││││││││││││││└────────────────────
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1152
││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %224::Any)::Any
│││││││││││││││└────────────────────
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1157
││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %54::Any)::Any
│││││││││││││││└────────────────────
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1143
││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %57::Any)::Any
│││││││││││││││└────────────────────
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1145
││││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %54::Any)::Any
│││││││││││││││└────────────────────
│││││││││││││││┌ show_datatype(io::IOBuffer, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1167
││││││││││││││││ runtime dispatch detected: Base.show_at_namedtuple(io::IOBuffer, %329::Tuple, %328::DataType)::Any
│││││││││││││││└────────────────────
│││││││││││││┌ _show_type(io::IOBuffer, x::Type) @ Base ./show.jl:976
││││││││││││││┌ show_unionaliases(io::IOBuffer, x::Union) @ Base ./show.jl:896
│││││││││││││││┌ make_typealiases(x::Union) @ Base ./show.jl:817
││││││││││││││││┌ modulesof!(s::Set{Module}, x::Union) @ Base ./show.jl:590
│││││││││││││││││ runtime dispatch detected: Base.modulesof!(s::Set{Module}, %3::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ modulesof!(s::Set{Module}, x::Union) @ Base ./show.jl:591
│││││││││││││││││ runtime dispatch detected: Base.modulesof!(s::Set{Module}, %17::Any)::Any
││││││││││││││││└────────────────────
││││││││││││││┌ show_unionaliases(io::IOBuffer, x::Union) @ Base ./show.jl:909
│││││││││││││││ runtime dispatch detected: show(io::IOBuffer, %67::Any)::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_unionaliases(io::IOBuffer, x::Union) @ Base ./show.jl:915
│││││││││││││││ runtime dispatch detected: Base.show_typealias(io::IOBuffer, %184::Any, x::Union, %182::Core.SimpleVector, %183::Vector{TypeVar})::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_unionaliases(io::IOBuffer, x::Union) @ Base ./show.jl:923
│││││││││││││││ runtime dispatch detected: Base.show_typealias(io::IOBuffer, %247::Any, x::Union, %245::Core.SimpleVector, %246::Vector{TypeVar})::Any
││││││││││││││└────────────────────
│││││││││││││┌ _show_type(io::IOBuffer, x::Type) @ Base ./show.jl:980
││││││││││││││┌ show_delim_array(io::IOBuffer, itr::Vector{Any}, op::Char, delim::Char, cl::Char, delim_one::Bool) @ Base ./show.jl:1387
│││││││││││││││┌ show_delim_array(io::IOBuffer, itr::Vector{Any}, op::Char, delim::Char, cl::Char, delim_one::Bool, i1::Int64, l::Int64) @ Base ./show.jl:1398
││││││││││││││││ runtime dispatch detected: show(%3::IOContext{IOBuffer}, %52::Any)::Any
│││││││││││││││└────────────────────
│││││││││││││┌ _show_type(io::IOBuffer, x::Type) @ Base ./show.jl:1007
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1180
│││││││││││││││┌ show_type_name(io::IOContext{IOBuffer}, tn::Core.TypeName) @ Base ./show.jl:1054
││││││││││││││││ runtime dispatch detected: Base.isvisible(%29::Symbol, %75::Module, %69::Any)::Bool
│││││││││││││││└────────────────────
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1152
│││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %227::Any)::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1157
│││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %55::Any)::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1143
│││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %58::Any)::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1145
│││││││││││││││ runtime dispatch detected: show(io::IOContext{IOBuffer}, %55::Any)::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1167
│││││││││││││││ runtime dispatch detected: Base.show_at_namedtuple(io::IOContext{IOBuffer}, %338::Tuple, %337::DataType)::Any
││││││││││││││└────────────────────
││││││││││││││┌ show_datatype(io::IOContext{IOBuffer}, x::DataType, wheres::Vector{TypeVar}) @ Base ./show.jl:1175
│││││││││││││││ runtime dispatch detected: Base.show_at_namedtuple(io::IOContext{IOBuffer}, %387::Tuple, %391::DataType)::Any
││││││││││││││└────────────────────
│││││││││││││┌ _show_type(io::IOBuffer, x::Type) @ Base ./show.jl:1009
││││││││││││││ runtime dispatch detected: show(%76::IOContext{IOBuffer}, %77::Any)::Any
│││││││││││││└────────────────────
││││││││││││┌ show(io::IOBuffer, x::Type{Int64}) @ Base ./show.jl:965
│││││││││││││ runtime dispatch detected: Base._show_type(io::IOBuffer, %1::Any)::Nothing
││││││││││││└────────────────────
││││┌ promote(x::Int64, y::Real) @ Base ./promotion.jl:400
│││││ runtime dispatch detected: Base._promote(x::Int64, y::Real)::Tuple{Any, Any}
││││└────────────────────
││││┌ promote(x::Int64, y::Real) @ Base ./promotion.jl:401
│││││ runtime dispatch detected: Base.not_sametype(%4::Tuple{Int64, Real}, %5::Tuple{Any, Any})::Any
││││└────────────────────
│││┌ collect(itr::Base.Generator{I, typeof(identity)} where I<:(Base.Iterators.Filter{DataInterpolations.var"#35#38"})) @ Base ./array.jl:768
││││┌ typejoin_union_tuple(T::DataType) @ Base ./promotion.jl:219
│││││ runtime dispatch detected: Base.promote_typejoin_union(%50::Any)::Type
││││└────────────────────
│││┌ collect(itr::Base.Generator{I, typeof(identity)} where I<:(Base.Iterators.Filter{DataInterpolations.var"#35#38"})) @ Base ./array.jl:788
││││┌ grow_to!(dest::Vector, itr::Base.Generator{…} where I<:(Base.Iterators.Filter{…})) @ Base ./array.jl:864
│││││┌ iterate(::Base.Generator{I, typeof(identity)} where I<:(Base.Iterators.Filter{DataInterpolations.var"#35#38"})) @ Base ./generator.jl:45
││││││ runtime dispatch detected: iterate(%1::Base.Iterators.Filter{DataInterpolations.var"#35#38"})::Any
│││││└────────────────────
││││┌ grow_to!(dest::Vector, itr::Base.Generator{…} where I<:(Base.Iterators.Filter{…})) @ Base ./array.jl:867
│││││┌ push!(a::Vector, item::Any) @ Base ./array.jl:1261
││││││┌ _growend!(a::Vector, delta::Int64) @ Base ./array.jl:1116
│││││││┌ (::Base.var"#133#134"{Vector{T}, Int64, Int64, Int64, Int64, Int64, Memory{T1}, MemoryRef{T2}} where {T, T1, T2})() @ Base ./array.jl:1133
││││││││┌ unsafe_copyto!(dest::MemoryRef{T}, src::MemoryRef{T}, n::Int64) where T @ Base ./genericmemory.jl:121
│││││││││┌ aligned_sizeof(T::Type) @ Base ./reflection.jl:476
││││││││││ runtime dispatch detected: Base.datatype_alignment(T::Type)::Int64
│││││││││└────────────────────
││││││││┌ unsafe_copyto!(dest::GenericMemoryRef, src::MemoryRef, n::Int64) @ Base ./genericmemory.jl:133
│││││││││┌ unsafe_copyto!(dest::Memory, doffs::Int64, src::Memory, soffs::Int64, n::Int64) @ Base ./genericmemory.jl:147
││││││││││┌ pointer(x::Memory, i::Int64) @ Base ./abstractarray.jl:1232
│││││││││││ runtime dispatch detected: Base._memory_offset(x::Memory, i::Int64)::Int64
││││││││││└────────────────────
││││┌ grow_to!(dest::Vector, itr::Base.Generator{…} where I<:(Base.Iterators.Filter{…})) @ Base ./array.jl:868
│││││┌ grow_to!(dest::Vector, itr::Base.Generator{…} where I<:(Base.Iterators.Filter{…}), st::Any) @ Base ./array.jl:886
││││││┌ iterate(g::Base.Generator{I, typeof(identity)} where I<:(Base.Iterators.Filter{DataInterpolations.var"#35#38"}), s::Any) @ Base ./generator.jl:45
│││││││ runtime dispatch detected: iterate(%1::Base.Iterators.Filter{DataInterpolations.var"#35#38"}, %2::Any)::Any
││││││└────────────────────
│││││┌ grow_to!(dest::Vector, itr::Base.Generator{…} where I<:(Base.Iterators.Filter{…}), st::Any) @ Base ./array.jl:892
││││││┌ push_widen(dest::Vector, el::Any) @ Base ./array.jl:878
│││││││┌ append!(a::Vector, iter::Vector) @ Base ./array.jl:1329
││││││││┌ _append!(a::Vector, ::Base.HasShape{1}, iter::Vector) @ Base ./array.jl:1337
│││││││││┌ iterate(A::Vector) @ Base ./array.jl:902
││││││││││┌ iterate(A::Vector, i::Int64) @ Base ./array.jl:902
│││││││││││ runtime dispatch detected: (A::Vector)[i::Int64]::Any
││││││││││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:120
│││┌ collect(itr::Base.Generator{I, DataInterpolations.var"#36#39"} where I<:(Vector)) @ Base ./array.jl:791
││││┌ iterate(::Base.Generator{I, DataInterpolations.var"#36#39"} where I<:(Vector)) @ Base ./generator.jl:48
│││││ runtime dispatch detected: %20::DataInterpolations.var"#36#39"(%15::Any)::Any
││││└────────────────────
│││┌ collect(itr::Base.Generator{I, DataInterpolations.var"#36#39"} where I<:(Vector)) @ Base ./array.jl:801
││││┌ collect_to_with_first!(dest::Vector, v1::Any, itr::Base.Generator{…} where I<:(Vector), st::Int64) @ Base ./array.jl:827
│││││┌ collect_to!(dest::Vector, itr::Base.Generator{…} where I<:(Vector), offs::Int64, st::Int64) @ Base ./array.jl:849
││││││┌ iterate(g::Base.Generator{I, DataInterpolations.var"#36#39"} where I<:(Vector), s::Int64) @ Base ./generator.jl:48
│││││││ runtime dispatch detected: %20::DataInterpolations.var"#36#39"(%16::Any)::Any
││││││└────────────────────
│││┌ broadcasted(::Base.Broadcast.BroadcastStyle, ::F) where F<:(Vector) @ Base.Broadcast ./broadcast.jl:1333
││││ runtime dispatch detected: Base.Broadcast.Broadcasted(style::Base.Broadcast.BroadcastStyle, f::Vector, args::Tuple{})::Base.Broadcast.Broadcasted{…} where {}
│││└────────────────────
│││┌ broadcasted(::Any, ::Vector) @ Base.Broadcast ./broadcast.jl:1325
││││┌ broadcasted(style::Base.Broadcast.DefaultArrayStyle{1}, f::Any, args::Vector) @ Base.Broadcast ./broadcast.jl:1333
│││││┌ Base.Broadcast.Broadcasted(style::Base.Broadcast.DefaultArrayStyle{1}, f::Any, args::Tuple{Vector}) @ Base.Broadcast ./broadcast.jl:178
││││││┌ Base.Broadcast.Broadcasted(style::Base.Broadcast.DefaultArrayStyle{1}, f::Any, args::Tuple{Vector}, axes::Nothing) @ Base.Broadcast ./broadcast.jl:178
│││││││┌ convert(::Type{<:Tuple{Vector}}, x::Tuple{Vector}) @ Base ./essentials.jl:614
││││││││┌ ntuple(f::Base.var"#cvt1#1"{<:Tuple{Vector}, <:Tuple{Vector}}, ::Val{1}) @ Base ./ntuple.jl:48
│││││││││┌ (::Base.var"#cvt1#1"{<:Tuple{Vector}, <:Tuple{Vector}})(n::Int64) @ Base ./essentials.jl:612
││││││││││ runtime dispatch detected: convert(%2::Type{<:Vector}, %4::Vector)::Vector
│││││││││└────────────────────
││││┌ broadcasted(style::Base.Broadcast.DefaultArrayStyle{1}, f::Any, args::Vector) @ Base.Broadcast ./broadcast.jl:1333
│││││ runtime dispatch detected: Base.Broadcast.Broadcasted(style::Base.Broadcast.DefaultArrayStyle{1}, f::Any, args::Tuple{Vector})::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, _A, <:Tuple{Vector}} where _A
││││└────────────────────
│││┌ materialize(bc::Base.Broadcast.Broadcasted{…} where {}) @ Base.Broadcast ./broadcast.jl:872
││││┌ instantiate(bc::Base.Broadcast.Broadcasted{…} where {}) @ Base.Broadcast ./broadcast.jl:307
│││││ runtime dispatch detected: Base.Broadcast.combine_axes()
││││└────────────────────
││││┌ copy(bc::Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, Vector{T}, Tuple{}} where T) @ Base.Broadcast ./broadcast.jl:1099
│││││┌ axes(bc::Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, Vector{T}, Tuple{}} where T) @ Base.Broadcast ./broadcast.jl:234
││││││┌ _axes(bc::Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, Vector{T}, Tuple{}} where T, ::Nothing) @ Base.Broadcast ./broadcast.jl:236
│││││││ runtime dispatch detected: Base.Broadcast.combine_axes()
││││││└────────────────────
││││┌ copy(bc::Base.Broadcast.Broadcasted{…} where {}) @ Base.Broadcast ./broadcast.jl:887
│││││┌ getindex(bc::Base.Broadcast.Broadcasted{…} where {}, Is::CartesianIndex{…}) @ Base.Broadcast ./broadcast.jl:610
││││││┌ _broadcast_getindex(bc::Base.Broadcast.Broadcasted{…} where {}, I::CartesianIndex{…}) @ Base.Broadcast ./broadcast.jl:651
│││││││┌ _broadcast_getindex_evalf(::Vector) @ Base.Broadcast ./broadcast.jl:678
││││││││ runtime dispatch detected: f::Vector()::Any
│││││││└────────────────────
│││┌ materialize(bc::Base.Broadcast.Broadcasted{…} where {}) @ Base.Broadcast ./broadcast.jl:872
││││ runtime dispatch detected: Base.Broadcast.copy(%12::Union{Base.Broadcast.Broadcasted{…} where T, Base.Broadcast.Broadcasted{…} where {…}})::Any
│││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:121
│││┌ collect(itr::Base.Generator{I, DataInterpolations.var"#37#40"} where I<:(Vector)) @ Base ./array.jl:791
││││┌ iterate(::Base.Generator{I, DataInterpolations.var"#37#40"} where I<:(Vector)) @ Base ./generator.jl:48
│││││ runtime dispatch detected: %20::DataInterpolations.var"#37#40"(%15::Any)::Any
││││└────────────────────
│││┌ collect(itr::Base.Generator{I, DataInterpolations.var"#37#40"} where I<:(Vector)) @ Base ./array.jl:801
││││┌ collect_to_with_first!(dest::Vector, v1::Any, itr::Base.Generator{…} where I<:(Vector), st::Int64) @ Base ./array.jl:827
│││││┌ collect_to!(dest::Vector, itr::Base.Generator{…} where I<:(Vector), offs::Int64, st::Int64) @ Base ./array.jl:849
││││││┌ iterate(g::Base.Generator{I, DataInterpolations.var"#37#40"} where I<:(Vector), s::Int64) @ Base ./generator.jl:48
│││││││ runtime dispatch detected: %20::DataInterpolations.var"#37#40"(%16::Any)::Any
││││││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:112
│││ captured variable `u` detected
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:112
│││ captured variable `t` detected
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:112
│││ runtime dispatch detected: DataInterpolations.eltype(%6::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:112
│││ runtime dispatch detected: nonmissingtype(%7::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:113
│││ runtime dispatch detected: DataInterpolations.eltype(%12::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:113
│││ runtime dispatch detected: nonmissingtype(%13::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:114
│││ runtime dispatch detected: DataInterpolations.length(%18::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:114
│││ runtime dispatch detected: DataInterpolations.length(%23::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:114
│││ runtime dispatch detected: (%19::Any DataInterpolations.:(==) %24::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:115
│││ runtime dispatch detected: DataInterpolations.length(%32::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:115
│││ runtime dispatch detected: (1 DataInterpolations.:(:) %33::Any)::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:115
│││ runtime dispatch detected: DataInterpolations.collect(%65::Base.Generator{I, typeof(identity)} where I<:(Base.Iterators.Filter{DataInterpolations.var"#35#38"}))::Vector
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:120
│││ runtime dispatch detected: collect(%75::Base.Generator{I, DataInterpolations.var"#36#39"} where I<:(Vector))::Vector
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:120
│││ runtime dispatch detected: Base.broadcasted(%8::Any, %76::Vector)::Union{Base.Broadcast.Broadcasted{…} where {…}, Base.Broadcast.Broadcasted{…} where _A}
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:120
│││ runtime dispatch detected: Base.materialize(%77::Union{Base.Broadcast.Broadcasted{…} where {…}, Base.Broadcast.Broadcasted{…} where _A})::Any
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:121
│││ runtime dispatch detected: collect(%88::Base.Generator{I, DataInterpolations.var"#37#40"} where I<:(Vector))::Vector
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:121
│││ runtime dispatch detected: Base.broadcasted(%14::Any, %89::Vector)::Union{Base.Broadcast.Broadcasted{…} where {…}, Base.Broadcast.Broadcasted{…} where _A}
││└────────────────────
││┌ munge_data(u::Vector{String}, t::Vector{Float64}) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:121
│││ runtime dispatch detected: Base.materialize(%90::Union{Base.Broadcast.Broadcasted{…} where {…}, Base.Broadcast.Broadcasted{…} where _A})::Any
││└────────────────────
│┌ ConstantInterpolation(u::Vector{…}, t::Vector{…}; dir::Symbol, extrapolation::DataInterpolations.ExtrapolationType.T, extrapolation_left::DataInterpolations.ExtrapolationType.T, extrapolation_right::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:361
││┌  @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:345
│││┌ seems_linear(assume_linear_t::Float64, t::Any) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:157
││││┌ kwcall(::@NamedTuple{threshold::Float64}, ::typeof(DataInterpolations.looks_linear), t::Any) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:168
│││││┌ looks_linear(t::Any; threshold::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:173
││││││┌ sum(a::Base.Generator{I, F} where {I<:Base.Iterators.Enumerate, F<:DataInterpolations.var"#54#55"}) @ Base ./reduce.jl:561
│││││││┌ sum(a::Base.Generator{I, F} where {I<:Base.Iterators.Enumerate, F<:DataInterpolations.var"#54#55"}; kw::@Kwargs{}) @ Base ./reduce.jl:561
││││││││┌ sum(f::typeof(identity), a::Base.Generator{I, F} where {I<:Base.Iterators.Enumerate, F<:DataInterpolations.var"#54#55"}) @ Base ./reduce.jl:532
│││││││││┌ sum(f::typeof(identity), a::Base.Generator{…} where {}; kw::@Kwargs{}) @ Base ./reduce.jl:532
││││││││││┌ mapreduce(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}) @ Base ./reduce.jl:307
│││││││││││┌ mapreduce(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}; kw::@Kwargs{}) @ Base ./reduce.jl:307
││││││││││││┌ mapfoldl(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}) @ Base ./reduce.jl:175
│││││││││││││┌ mapfoldl(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}; init::Base._InitialValue) @ Base ./reduce.jl:175
││││││││││││││┌ mapfoldl_impl(f::typeof(identity), op::typeof(Base.add_sum), nt::Base._InitialValue, itr::Base.Generator{…} where {}) @ Base ./reduce.jl:43
│││││││││││││││┌ _xfadjoint(op::Base.BottomRF{…}, itr::Base.Generator{…} where I<:(Base.Generator{…} where {…})) @ Base ./reduce.jl:149
││││││││││││││││┌ _xfadjoint_unwrap(itr::Base.Generator{…} where I<:(Base.Generator{…} where {…})) @ Base ./reduce.jl:155
│││││││││││││││││┌ _xfadjoint_unwrap(itr::Base.Generator{I, F} where {I<:Base.Iterators.Enumerate, F<:DataInterpolations.var"#54#55"}) @ Base ./reduce.jl:157
││││││││││││││││││┌ Base.Fix1(f::Type{Base.MappingRF}, x::DataInterpolations.var"#54#55") @ Base ./operators.jl:1124
│││││││││││││││││││ runtime dispatch detected: convert(%4::Type{<:DataInterpolations.var"#54#55"}, x::DataInterpolations.var"#54#55")::DataInterpolations.var"#54#55"
││││││││││││││││││└────────────────────
││││││││││││││││││┌ (f::typeof(identity), g::Base.Fix1{Type{…}, DataInterpolations.var"#54#55"{…}} where {tspan_over_N, t_0}) @ Base ./operators.jl:1062
│││││││││││││││││││┌ ComposedFunction(outer::typeof(identity), inner::Base.Fix1{…} where {}) @ Base ./operators.jl:1047
││││││││││││││││││││ runtime dispatch detected: convert(%4::Type{<:Base.Fix1{Type{Base.MappingRF}, DataInterpolations.var"#54#55"{tspan_over_N, t_0}} where {tspan_over_N, t_0}}, inner::Base.Fix1{Type{Base.MappingRF}, DataInterpolations.var"#54#55"{tspan_over_N, t_0}} where {tspan_over_N, t_0})::Base.Fix1{Type{Base.MappingRF}, DataInterpolations.var"#54#55"{tspan_over_N, t_0}} where {tspan_over_N, t_0}
│││││││││││││││││││└────────────────────
│││││││││││││││┌ _xfadjoint(op::Base.BottomRF{…}, itr::Base.Generator{…} where I<:(Base.Generator{…} where {…})) @ Base ./reduce.jl:150
││││││││││││││││┌ (::ComposedFunction{typeof(identity), Base.Fix1{…}} where {tspan_over_N, t_0})(x::Base.BottomRF{typeof(Base.add_sum)}) @ Base ./operators.jl:1050
│││││││││││││││││┌ (::ComposedFunction{…} where {})(x::Base.BottomRF{…}; kw::@Kwargs{}) @ Base ./operators.jl:1050
││││││││││││││││││┌ call_composed(fs::Tuple{typeof(identity), Base.Fix1{…} where {…}}, x::Tuple{Base.BottomRF{…}}, kw::@Kwargs{}) @ Base ./operators.jl:1053
│││││││││││││││││││ runtime dispatch detected: Base.call_composed(%2::Tuple{Base.Fix1{Type{Base.MappingRF}, DataInterpolations.var"#54#55"{tspan_over_N, t_0}} where {tspan_over_N, t_0}}, x::Tuple{Base.BottomRF{typeof(Base.add_sum)}}, kw::@Kwargs{})::Any
││││││││││││││││││└────────────────────
││││││││││││││┌ mapfoldl_impl(f::typeof(identity), op::typeof(Base.add_sum), nt::Base._InitialValue, itr::Base.Generator{…} where {}) @ Base ./reduce.jl:44
│││││││││││││││┌ foldl_impl(op::Any, nt::Base._InitialValue, itr::Base.Iterators.Enumerate) @ Base ./reduce.jl:48
││││││││││││││││┌ _foldl_impl(op::Any, init::Base._InitialValue, itr::Base.Iterators.Enumerate) @ Base ./reduce.jl:56
│││││││││││││││││┌ iterate(e::Base.Iterators.Enumerate) @ Base.Iterators ./iterators.jl:205
││││││││││││││││││ runtime dispatch detected: #self#::typeof(iterate)(e::Base.Iterators.Enumerate, (1,))::Union{Nothing, Tuple{Tuple{Int64, Any}, Tuple{Int64, Any}}}
│││││││││││││││││└────────────────────
│││││││││││││││┌ foldl_impl(op::Any, nt::Base._InitialValue, itr::Base.Iterators.Enumerate) @ Base ./reduce.jl:49
││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate) @ Base ./reduce.jl:380
│││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate, ::Base.HasEltype) @ Base ./reduce.jl:381
││││││││││││││││││ runtime dispatch detected: eltype(itr::Base.Iterators.Enumerate)::Type{<:Tuple{Int64, Vararg}}
│││││││││││││││││└────────────────────
│││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate, ::Base.HasEltype) @ Base ./reduce.jl:381
││││││││││││││││││ runtime dispatch detected: Base.reduce_empty(op::Any, %1::Type{<:Tuple{Int64, Vararg}})::Any
│││││││││││││││││└────────────────────
││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate) @ Base ./reduce.jl:380
│││││││││││││││││ runtime dispatch detected: Base.IteratorEltype(itr::Base.Iterators.Enumerate)::Any
││││││││││││││││└────────────────────
││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate) @ Base ./reduce.jl:380
│││││││││││││││││ runtime dispatch detected: Base.reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate, %1::Any)::Any
││││││││││││││││└────────────────────
││┌  @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:347
│││┌ FindFirstFunctions.Guesser(v::AbstractVector) @ FindFirstFunctions /Users/david/.julia/packages/FindFirstFunctions/n3FjO/src/FindFirstFunctions.jl:229
││││┌ FindFirstFunctions.Guesser(v::AbstractVector; looks_linear_threshold::Float64) @ FindFirstFunctions /Users/david/.julia/packages/FindFirstFunctions/n3FjO/src/FindFirstFunctions.jl:230
│││││┌ kwcall(::@NamedTuple{threshold::Float64}, ::typeof(FindFirstFunctions.looks_linear), v::AbstractVector) @ FindFirstFunctions /Users/david/.julia/packages/FindFirstFunctions/n3FjO/src/FindFirstFunctions.jl:203
││││││┌ looks_linear(v::AbstractVector; threshold::Float64) @ FindFirstFunctions /Users/david/.julia/packages/FindFirstFunctions/n3FjO/src/FindFirstFunctions.jl:209
│││││││┌ sum(a::Base.Generator{…} where {}) @ Base ./reduce.jl:561
││││││││┌ sum(a::Base.Generator{…} where {}; kw::@Kwargs{}) @ Base ./reduce.jl:561
│││││││││┌ sum(f::typeof(identity), a::Base.Generator{…} where {}) @ Base ./reduce.jl:532
││││││││││┌ sum(f::typeof(identity), a::Base.Generator{…} where {}; kw::@Kwargs{}) @ Base ./reduce.jl:532
│││││││││││┌ mapreduce(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}) @ Base ./reduce.jl:307
││││││││││││┌ mapreduce(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}; kw::@Kwargs{}) @ Base ./reduce.jl:307
│││││││││││││┌ mapfoldl(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}) @ Base ./reduce.jl:175
││││││││││││││┌ mapfoldl(f::typeof(identity), op::typeof(Base.add_sum), itr::Base.Generator{…} where {}; init::Base._InitialValue) @ Base ./reduce.jl:175
│││││││││││││││┌ mapfoldl_impl(f::typeof(identity), op::typeof(Base.add_sum), nt::Base._InitialValue, itr::Base.Generator{…} where {}) @ Base ./reduce.jl:43
││││││││││││││││┌ _xfadjoint(op::Base.BottomRF{…}, itr::Base.Generator{…} where I<:(Base.Generator{…} where {…})) @ Base ./reduce.jl:149
│││││││││││││││││┌ _xfadjoint_unwrap(itr::Base.Generator{…} where I<:(Base.Generator{…} where {…})) @ Base ./reduce.jl:155
││││││││││││││││││┌ _xfadjoint_unwrap(itr::Base.Generator{…} where {}) @ Base ./reduce.jl:157
│││││││││││││││││││┌ Base.Fix1(f::Type{Base.MappingRF}, x::FindFirstFunctions.var"#2#3") @ Base ./operators.jl:1124
││││││││││││││││││││ runtime dispatch detected: convert(%4::Type{<:FindFirstFunctions.var"#2#3"}, x::FindFirstFunctions.var"#2#3")::FindFirstFunctions.var"#2#3"
│││││││││││││││││││└────────────────────
│││││││││││││││││││┌ (f::typeof(identity), g::Base.Fix1{Type{…}, FindFirstFunctions.var"#2#3"{…}} where {mean_x_dist, x_0}) @ Base ./operators.jl:1062
││││││││││││││││││││┌ ComposedFunction(outer::typeof(identity), inner::Base.Fix1{…} where {}) @ Base ./operators.jl:1047
│││││││││││││││││││││ runtime dispatch detected: convert(%4::Type{<:Base.Fix1{Type{Base.MappingRF}, FindFirstFunctions.var"#2#3"{mean_x_dist, x_0}} where {mean_x_dist, x_0}}, inner::Base.Fix1{Type{Base.MappingRF}, FindFirstFunctions.var"#2#3"{mean_x_dist, x_0}} where {mean_x_dist, x_0})::Base.Fix1{Type{Base.MappingRF}, FindFirstFunctions.var"#2#3"{mean_x_dist, x_0}} where {mean_x_dist, x_0}
││││││││││││││││││││└────────────────────
││││││││││││││││┌ _xfadjoint(op::Base.BottomRF{…}, itr::Base.Generator{…} where I<:(Base.Generator{…} where {…})) @ Base ./reduce.jl:150
│││││││││││││││││┌ (::ComposedFunction{typeof(identity), Base.Fix1{…}} where {mean_x_dist, x_0})(x::Base.BottomRF{typeof(Base.add_sum)}) @ Base ./operators.jl:1050
││││││││││││││││││┌ (::ComposedFunction{…} where {})(x::Base.BottomRF{…}; kw::@Kwargs{}) @ Base ./operators.jl:1050
│││││││││││││││││││┌ call_composed(fs::Tuple{typeof(identity), Base.Fix1{…} where {…}}, x::Tuple{Base.BottomRF{…}}, kw::@Kwargs{}) @ Base ./operators.jl:1053
││││││││││││││││││││ runtime dispatch detected: Base.call_composed(%2::Tuple{Base.Fix1{Type{Base.MappingRF}, FindFirstFunctions.var"#2#3"{mean_x_dist, x_0}} where {mean_x_dist, x_0}}, x::Tuple{Base.BottomRF{typeof(Base.add_sum)}}, kw::@Kwargs{})::Any
│││││││││││││││││││└────────────────────
│││││││││││││││┌ mapfoldl_impl(f::typeof(identity), op::typeof(Base.add_sum), nt::Base._InitialValue, itr::Base.Generator{…} where {}) @ Base ./reduce.jl:44
││││││││││││││││┌ foldl_impl(op::Any, nt::Base._InitialValue, itr::Base.Iterators.Enumerate{I} where I<:(AbstractVector)) @ Base ./reduce.jl:48
│││││││││││││││││┌ _foldl_impl(op::Any, init::Base._InitialValue, itr::Base.Iterators.Enumerate{I} where I<:(AbstractVector)) @ Base ./reduce.jl:56
││││││││││││││││││┌ iterate(e::Base.Iterators.Enumerate{I} where I<:(AbstractVector)) @ Base.Iterators ./iterators.jl:205
│││││││││││││││││││ runtime dispatch detected: #self#::typeof(iterate)(e::Base.Iterators.Enumerate{I} where I<:(AbstractVector), (1,))::Union{Nothing, Tuple{Tuple{Int64, Any}, Tuple{Int64, Any}}}
││││││││││││││││││└────────────────────
││││││││││││││││┌ foldl_impl(op::Any, nt::Base._InitialValue, itr::Base.Iterators.Enumerate{I} where I<:(AbstractVector)) @ Base ./reduce.jl:49
│││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate{I} where I<:(AbstractVector)) @ Base ./reduce.jl:380
││││││││││││││││││┌ reduce_empty_iter(op::Any, itr::Base.Iterators.Enumerate{I} where I<:(AbstractVector), ::Base.HasEltype) @ Base ./reduce.jl:381
│││││││││││││││││││ runtime dispatch detected: eltype(itr::Base.Iterators.Enumerate{I} where I<:(AbstractVector))::Type{<:Tuple{Int64, Vararg}}
││││││││││││││││││└────────────────────
│┌ ConstantInterpolation(u::Vector{…}, t::Vector{…}; dir::Symbol, extrapolation::DataInterpolations.ExtrapolationType.T, extrapolation_left::DataInterpolations.ExtrapolationType.T, extrapolation_right::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:364
││┌ cumulative_integral(A::ConstantInterpolation{_A, _B, Nothing} where {_A, _B}, cache_parameters::Bool) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:193
│││┌ hasmethod(f::typeof(DataInterpolations._integral), t::Type{<:Tuple{…}}) @ Base ./reflection.jl:2347
││││ runtime dispatch detected: Core._hasmethod(f::typeof(DataInterpolations._integral), t::Type{<:Tuple{ConstantInterpolation{_A, _B, Nothing} where {_A, _B}, Number, Number, Number}})::Bool
│││└────────────────────
││┌ cumulative_integral(A::ConstantInterpolation{_A, _B, Nothing} where {_A, _B}, cache_parameters::Bool) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:194
│││┌ broadcasted(::typeof(DataInterpolations._integral), ::Base.RefValue{…} where T<:(ConstantInterpolation{…} where {…}), ::Any, ::Any, ::Any) @ Base.Broadcast ./broadcast.jl:1330
││││┌ map(f::typeof(Base.Broadcast.broadcastable), t::Tuple{Any, Any}) @ Base ./tuple.jl:356
│││││ runtime dispatch detected: f::typeof(Base.Broadcast.broadcastable)(%2::Any)::Any
││││└────────────────────
││││┌ map(f::typeof(Base.Broadcast.broadcastable), t::Tuple{Any, Any}) @ Base ./tuple.jl:356
│││││ runtime dispatch detected: f::typeof(Base.Broadcast.broadcastable)(%5::Any)::Any
││││└────────────────────
│││┌ broadcasted(::typeof(DataInterpolations._integral), ::Base.RefValue{…} where T<:(ConstantInterpolation{…} where {…}), ::Any, ::Any, ::Any) @ Base.Broadcast ./broadcast.jl:1331
││││┌ combine_styles(::Base.RefValue{T} where T<:(ConstantInterpolation{_A, _B, Nothing} where {_A, _B}), ::Any, ::Any, ::Any) @ Base.Broadcast ./broadcast.jl:432
│││││┌ combine_styles(c1::Any, c2::Any, cs::Any) @ Base.Broadcast ./broadcast.jl:432
││││││┌ combine_styles(c1::Any, c2::Any) @ Base.Broadcast ./broadcast.jl:431
│││││││┌ result_style(s1::Nothing, s2::Nothing) @ Base.Broadcast ./broadcast.jl:457
││││││││ runtime dispatch detected: BroadcastStyle(s1::Nothing, s2::Nothing)
│││││││└────────────────────
││││┌ broadcasted(::Base.Broadcast.BroadcastStyle, ::typeof(DataInterpolations._integral), ::Base.RefValue{…} where T<:(ConstantInterpolation{…} where {…}), ::Any, ::Any, ::Any) @ Base.Broadcast ./broadcast.jl:1333
│││││┌ Base.Broadcast.Broadcasted(style::Base.Broadcast.BroadcastStyle, f::typeof(DataInterpolations._integral), args::Tuple{…}) @ Base.Broadcast ./broadcast.jl:178
││││││┌ Base.Broadcast.Broadcasted(style::Base.Broadcast.BroadcastStyle, f::typeof(DataInterpolations._integral), args::Tuple{…}, axes::Nothing) @ Base.Broadcast ./broadcast.jl:178
│││││││┌ convert(::Type{<:Tuple{…}}, x::Tuple{Base.RefValue{…} where T<:(ConstantInterpolation{…} where {…}), Any, Any, Any}) @ Base ./essentials.jl:614
││││││││┌ ntuple(f::Base.var"#cvt1#1"{<:Tuple{…}, <:Tuple{…}}, ::Val{4}) @ Base ./ntuple.jl:72
│││││││││┌ (::Base.var"#cvt1#1"{<:Tuple{…}, <:Tuple{…}})(n::Int64) @ Base ./essentials.jl:612
││││││││││ runtime dispatch detected: convert(%2::Any, %4::Any)::Any
│││││││││└────────────────────
││││┌ broadcasted(::Base.Broadcast.BroadcastStyle, ::typeof(DataInterpolations._integral), ::Base.RefValue{…} where T<:(ConstantInterpolation{…} where {…}), ::Any, ::Any, ::Any) @ Base.Broadcast ./broadcast.jl:1333
│││││ runtime dispatch detected: Base.Broadcast.Broadcasted(style::Base.Broadcast.BroadcastStyle, f::typeof(DataInterpolations._integral), args::Tuple{Base.RefValue{T} where T<:(ConstantInterpolation{_A, _B, Nothing} where {_A, _B}), Any, Any, Any})::Base.Broadcast.Broadcasted{<:Base.Broadcast.BroadcastStyle, Nothing, typeof(DataInterpolations._integral), <:Tuple{…}}
││││└────────────────────
││││┌ broadcasted(::Any, ::typeof(DataInterpolations._integral), ::Base.RefValue, ::Any, ::Vararg{Any}) @ Base.Broadcast ./broadcast.jl:1331
│││││┌ combine_styles(c1::Base.RefValue{typeof(DataInterpolations._integral)}, c2::Base.RefValue, cs::Vararg{Any}) @ Base.Broadcast ./broadcast.jl:432
││││││┌ combine_styles(c1::Base.RefValue, c2::Any) @ Base.Broadcast ./broadcast.jl:431
│││││││┌ result_style(s1::Base.Broadcast.DefaultArrayStyle{0}, s2::Nothing) @ Base.Broadcast ./broadcast.jl:457
││││││││ runtime dispatch detected: BroadcastStyle(s1::Base.Broadcast.DefaultArrayStyle{0}, s2::Nothing)
│││││││└────────────────────
│││││┌ combine_styles(c1::Base.RefValue{typeof(DataInterpolations._integral)}, c2::Base.RefValue, cs::Vararg{Any}) @ Base.Broadcast ./broadcast.jl:432
││││││ runtime dispatch detected: Base.Broadcast.result_style([quote]::Base.Broadcast.DefaultArrayStyle{0}, %2::Any)::Any
│││││└────────────────────
│││││┌ broadcasted(::Base.Broadcast.BroadcastStyle, ::F, ::Base.RefValue{…}, ::Base.RefValue, ::Vararg{…}) where F @ Base.Broadcast ./broadcast.jl:1333
││││││ runtime dispatch detected: Base.Broadcast.Broadcasted(style::Base.Broadcast.BroadcastStyle, f::Any, args::Tuple{Base.RefValue{typeof(DataInterpolations._integral)}, Base.RefValue, Vararg{Any}})::Base.Broadcast.Broadcasted{var"#s182", Nothing, _A, <:Tuple{…}} where {var"#s182"<:Base.Broadcast.BroadcastStyle, _A}
│││││└────────────────────
│││││┌ broadcasted(::Any, ::Any, ::Base.RefValue, ::Base.RefValue, ::Vararg{Any}) @ Base.Broadcast ./broadcast.jl:1331
││││││┌ combine_styles(c1::Any, c2::Base.RefValue) @ Base.Broadcast ./broadcast.jl:431
│││││││┌ result_style(s1::Nothing, s2::Base.Broadcast.DefaultArrayStyle{0}) @ Base.Broadcast ./broadcast.jl:457
││││││││ runtime dispatch detected: BroadcastStyle(s1::Nothing, s2::Base.Broadcast.DefaultArrayStyle{0})
│││││││└────────────────────
││││││┌ broadcasted(::Base.Broadcast.BroadcastStyle, ::F, ::Any, ::Base.RefValue, ::Vararg{Any}) where F @ Base.Broadcast ./broadcast.jl:1333
│││││││ runtime dispatch detected: Base.Broadcast.Broadcasted(style::Base.Broadcast.BroadcastStyle, f::Any, args::Tuple{Any, Base.RefValue, Vararg{Any}})::Base.Broadcast.Broadcasted{var"#s182", Nothing, _A, <:Tuple{…}} where {var"#s182"<:Base.Broadcast.BroadcastStyle, _A}
││││││└────────────────────
│││┌ materialize(bc::Base.Broadcast.Broadcasted) @ Base.Broadcast ./broadcast.jl:872
││││ runtime dispatch detected: Base.Broadcast.instantiate(bc::Base.Broadcast.Broadcasted)::Any
│││└────────────────────
│││┌ materialize(bc::Base.Broadcast.Broadcasted) @ Base.Broadcast ./broadcast.jl:872
││││ runtime dispatch detected: Base.Broadcast.copy(%1::Any)::Any
│││└────────────────────
││┌ cumulative_integral(A::ConstantInterpolation{_A, _B, Nothing} where {_A, _B}, cache_parameters::Bool) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_utils.jl:196
│││┌ cumsum(x::AbstractVector) @ Base ./accumulate.jl:146
││││┌ kwcall(::@NamedTuple{dims::Int64}, ::typeof(cumsum), A::AbstractVector) @ Base ./accumulate.jl:113
│││││┌ cumsum(A::AbstractVector; dims::Int64) @ Base ./accumulate.jl:114
││││││┌ promote_op(::typeof(Base.add_sum), ::Type, ::Type) @ Base ./promotion.jl:618
│││││││ runtime dispatch detected: Base._return_type(f::typeof(Base.add_sum), %51::Type{<:Tuple{Any, Vararg}})::Type
││││││└────────────────────
│││││┌ cumsum(A::AbstractVector; dims::Int64) @ Base ./accumulate.jl:115
││││││┌ kwcall(::@NamedTuple{dims::Int64}, ::typeof(cumsum!), out::AbstractArray, v::AbstractVector) @ Base ./accumulate.jl:51
│││││││┌ cumsum!(out::AbstractArray, v::AbstractVector; dims::Int64) @ Base ./accumulate.jl:53
││││││││┌ _cumsum!(out::AbstractArray, v::AbstractVector, dim::Int64, ::Base.ArithmeticUnknown) @ Base ./accumulate.jl:60
│││││││││┌ _cumsum!(out::AbstractArray, v::AbstractVector, dim::Int64, ::Base.ArithmeticRounds) @ Base ./accumulate.jl:57
││││││││││┌ accumulate_pairwise!(op::typeof(Base.add_sum), result::AbstractVector, v::AbstractVector) @ Base ./accumulate.jl:24
│││││││││││┌ LinearIndices(inds::CartesianIndices{1, R}) where R<:Tuple{AbstractUnitRange} @ Base.IteratorsMD ./multidimensional.jl:582
││││││││││││┌ (::Type{LinearIndices{1, R}} where R<:Tuple{AbstractUnitRange{Int64}})(indices::Tuple{AbstractUnitRange}) @ Base ./indices.jl:484
│││││││││││││┌ convert(::Type{<:Tuple{AbstractUnitRange{Int64}}}, x::Tuple{AbstractUnitRange}) @ Base ./essentials.jl:614
││││││││││││││┌ ntuple(f::Base.var"#cvt1#1"{<:Tuple{AbstractUnitRange{Int64}}, <:Tuple{AbstractUnitRange}}, ::Val{1}) @ Base ./ntuple.jl:48
│││││││││││││││┌ (::Base.var"#cvt1#1"{<:Tuple{AbstractUnitRange{Int64}}, <:Tuple{AbstractUnitRange}})(n::Int64) @ Base ./essentials.jl:612
││││││││││││││││ runtime dispatch detected: convert(%2::Type{<:AbstractUnitRange{Int64}}, %4::AbstractUnitRange)::AbstractUnitRange
│││││││││││││││└────────────────────
│││││││││││┌ LinearIndices(inds::CartesianIndices{1, R} where R<:Tuple{OrdinalRange{Int64, Int64}}) @ Base.IteratorsMD ./multidimensional.jl:587
││││││││││││┌ map(f::Base.IteratorsMD.var"#24#26", t::Tuple{OrdinalRange{Int64, Int64}}) @ Base ./tuple.jl:355
│││││││││││││ runtime dispatch detected: f::Base.IteratorsMD.var"#24#26"(%2::OrdinalRange{Int64, Int64})::Any
││││││││││││└────────────────────
│││││││││││┌ LinearIndices(inds::CartesianIndices{1, R} where R<:Tuple{OrdinalRange{Int64, Int64}}) @ Base.IteratorsMD ./multidimensional.jl:588
││││││││││││┌ (::Type{LinearIndices{1, var"#s182"}} where var"#s182"<:Tuple{AbstractUnitRange{Int64}})(indices::Tuple{Any}) @ Base ./indices.jl:484
│││││││││││││┌ convert(::Type{<:Tuple{AbstractUnitRange{Int64}}}, x::Tuple{Any}) @ Base ./essentials.jl:614
││││││││││││││┌ ntuple(f::Base.var"#cvt1#1"{<:Tuple{AbstractUnitRange{Int64}}, <:Tuple{Any}}, ::Val{1}) @ Base ./ntuple.jl:48
│││││││││││││││┌ (::Base.var"#cvt1#1"{<:Tuple{AbstractUnitRange{Int64}}, <:Tuple{Any}})(n::Int64) @ Base ./essentials.jl:612
││││││││││││││││ runtime dispatch detected: convert(%2::Type{<:AbstractUnitRange{Int64}}, %4::Any)::Any
│││││││││││││││└────────────────────
│┌ ConstantInterpolation(u::Vector{…}, t::Vector{…}; dir::Symbol, extrapolation::DataInterpolations.ExtrapolationType.T, extrapolation_left::DataInterpolations.ExtrapolationType.T, extrapolation_right::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:361
││ runtime dispatch detected: ConstantInterpolation(%9::Any, %10::Any, DataInterpolations.nothing, dir::Symbol, %6::DataInterpolations.ExtrapolationType.T, %7::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64)::ConstantInterpolation{_A, _B, Nothing} where {_A, _B}
│└────────────────────
│┌ ConstantInterpolation(u::Vector{…}, t::Vector{…}; dir::Symbol, extrapolation::DataInterpolations.ExtrapolationType.T, extrapolation_left::DataInterpolations.ExtrapolationType.T, extrapolation_right::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:364
││ runtime dispatch detected: DataInterpolations.cumulative_integral(%11::ConstantInterpolation{_A, _B, Nothing} where {_A, _B}, cache_parameters::Bool)::Any
│└────────────────────
│┌ ConstantInterpolation(u::Vector{…}, t::Vector{…}; dir::Symbol, extrapolation::DataInterpolations.ExtrapolationType.T, extrapolation_left::DataInterpolations.ExtrapolationType.T, extrapolation_right::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64) @ DataInterpolations /Users/david/.julia/packages/DataInterpolations/dFVzN/src/interpolation_caches.jl:365
││ runtime dispatch detected: ConstantInterpolation(%9::Any, %10::Any, %12::Any, dir::Symbol, %6::DataInterpolations.ExtrapolationType.T, %7::DataInterpolations.ExtrapolationType.T, cache_parameters::Bool, assume_linear_t::Float64)::ConstantInterpolation
│└────────────────────

Environment (please complete the following information):

The example above was run with Julia 1.11.3 but regressions also show up on Julia 1.10.

julia> versioninfo()
Julia Version 1.11.3
Commit d63adeda50d (2025-01-21 19:42 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin24.0.0)
  CPU: 10 × Apple M2 Pro
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, apple-m2)
Threads: 1 default, 0 interactive, 1 GC (on 6 virtual cores)
Environment:
  JULIA_PKG_USE_CLI_GIT = true
  JULIA_PKG_PRESERVE_TIERED_INSTALLED = true
@devmotion devmotion added the bug Something isn't working label Feb 6, 2025
@ChrisRackauckas
Copy link
Member

@DaniGlez or @SouthEndMusic got a second for a bit of clean up?

@DaniGlez
Copy link
Contributor

DaniGlez commented Feb 6, 2025

I can maybe take a look tomorrow, from a quick glance I see that at least IType (the parameter for the integral data points, from cumulative_integral) gets inferred as Vector{Any} at construction time.

@devmotion
Copy link
Member Author

Looking at the diff v5.0.0...master makes me actually wonder whether I should get rid of DataInterpolations in my code base... The type became much more complex but I'm only ever interested in the simple interpolation functionality.

In my case u is not necessarily numeric as shown in the example above but for these types integrals etc are not defined at all. In addition to I it seems also N (and maybe other parts?) can't be inferred in general.

The Any element type in cumulative_integral originates from the else branch since promote_type(String, Float64) = Any. But since integrals don't make sense for non-numeric types anyway, probably the function should just return nothing for non-numeric u (IMO the hasmethod call also seems to indicate a design problem). Possibly the same applies to get_output_dim.

But for numeric u, get_output_dim would still be problematic since something like length(first(u)) is not known statically for non-static array types. Maybe it should not be deduced but required to be provided by users. And in my case I would like to disable it completely...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants