ApproxFun.jl icon indicating copy to clipboard operation
ApproxFun.jl copied to clipboard

issue about composition of functions

Open rveltz opened this issue 5 years ago • 0 comments

Hi,

Here is an issue regarding the composition of two functions.

d = Interval(-0.5,0.5)^2
sol = Fun((x,y)->0,d)

Then computing exp(sol) gives:

julia> exp.(sol)
ERROR: MethodError: no method matching (::ProductFun{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64},TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64})(::Float64)
Closest candidates are:
  ProductFun(::Any, ::Any) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Multivariate/ProductFun.jl:176
  ProductFun(::Any, ::Any, ::Any) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Multivariate/ProductFun.jl:177
Stacktrace:
 [1] evaluate(::Array{Float64,1}, ::TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64}, ::Float64) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Multivariate/TensorSpace.jl:631
 [2] evaluate(::Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}}, ::Float64) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/Fun.jl:212
 [3] (::Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}})(::Float64) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/Fun.jl:216
 [4] broadcasteval(::Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}}, ::Float64) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/Fun.jl:577
 [5] macro expansion at /Users/rveltz/.julia/packages/StaticArrays/Ze5H3/src/broadcast.jl:133 [inlined]
 [6] _broadcast at /Users/rveltz/.julia/packages/StaticArrays/Ze5H3/src/broadcast.jl:94 [inlined]
 [7] copy at /Users/rveltz/.julia/packages/StaticArrays/Ze5H3/src/broadcast.jl:24 [inlined]
 [8] materialize at ./broadcast.jl:724 [inlined]
 [9] broadcasteval(::Base.Broadcast.Broadcasted{ApproxFun.FunStyle,Tuple{},typeof(exp),Tuple{Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}}}}, ::StaticArrays.SArray{Tuple{2},Float64,1,2}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/Fun.jl:580
 [10] (::getfield(ApproxFun, Symbol("##32#33")){Base.Broadcast.Broadcasted{ApproxFun.FunStyle,Tuple{},typeof(exp),Tuple{Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}}}}})(::StaticArrays.SArray{Tuple{2},Float64,1,2}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/Fun.jl:585
 [11] (::ApproxFun.DFunction)(::StaticArrays.SArray{Tuple{2},Float64,1,2}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/LinearAlgebra/helper.jl:1264
 [12] default_Fun(::ApproxFun.DFunction, ::TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/constructors.jl:110
 [13] Fun(::Function, ::TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/constructors.jl:180
 [14] Fun(::Function, ::ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/constructors.jl:176
 [15] copy(::Base.Broadcast.Broadcasted{ApproxFun.FunStyle,Tuple{},typeof(exp),Tuple{Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}}}}) at /Users/rveltz/.julia/packages/ApproxFun/xeZRT/src/Fun/Fun.jl:585
 [16] materialize(::Base.Broadcast.Broadcasted{ApproxFun.FunStyle,Nothing,typeof(exp),Tuple{Fun{TensorSpace{Tuple{Chebyshev{Segment{Float64},Float64},Chebyshev{Segment{Float64},Float64}},ProductDomain{Tuple{Segment{Float64},Segment{Float64}},StaticArrays.SArray{Tuple{2},Float64,1,2}},Float64},Float64,Array{Float64,1}}}}) at ./broadcast.jl:724
 [17] top-level scope at none:0

rveltz avatar Sep 25 '18 21:09 rveltz