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

Closed
devmotion opened this issue Feb 6, 2025 · 5 comments
Closed

Regressions of ConstantInterpolation reported by JET.@report_opt #389

devmotion opened this issue Feb 6, 2025 · 5 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...

@ChrisRackauckas
Copy link
Member

I think it could make sense to make a SimpleInterpolations.jl... we end up with this at every library. There are 20 billion things someone wants to do and the 5 main things. Trying to accomplish both tasks with one implementation can be very difficult, sometimes just splitting it can be easier. Keep the same interface, but having a set of implementations that is just very basic and handles the 99% is helpful in a different way. This is how we ended up with SimpleDiffEq.jl, SimpleNonlinearSolve.jl, SimpleOptimization.jl, etc.

@devmotion
Copy link
Member Author

It seems #392 and #393 fixed this particular issue here. On the master branch I get

julia> using DataInterpolations, JET

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

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

Is it possible to make a new release?

I'll report back and open a new issue if I encounter additional regressions when updating my package.

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