JuliaApproximation / ApproxFun.jl

Julia package for function approximation
http://juliaapproximation.github.io/ApproxFun.jl/
Other
528 stars 70 forks source link

Cumsum fails when used on the output of sign() #905

Closed macd closed 10 months ago

macd commented 10 months ago

I am fairly certain that this used to work: (ApproxFun v0.13.22)

macd@macd-NUC9:~/jlang/BaryRational.jl/examples$ julia19
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.9.2 (2023-07-05)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia @v1.9> using ApproxFun

julia @v1.9> x = Fun()
Fun(Chebyshev(), [0.0, 1.0])

julia @v1.9> cumsum(sign(x))
ERROR: MethodError: Cannot `convert` an object of type Vector{Float64} to an object of type SubArray{Float64, 1, Vector{Float64}, Tuple{StepRange{Int64, Int64}}, true}

Closest candidates are:
  convert(::Type{T}, ::Factorization) where T<:AbstractArray
   @ LinearAlgebra ~/julia-versions/julia-1.9.2/share/julia/stdlib/v1.9/LinearAlgebra/src/factorization.jl:59
  convert(::Type{AA}, ::Operator) where AA<:AbstractArray
   @ ApproxFunBase ~/julia-versions/dot_julia/packages/ApproxFunBase/aO3TG/src/Operators/Operator.jl:931
  convert(::Type{T}, ::T) where T<:AbstractArray
   @ Base abstractarray.jl:16
  ...

Stacktrace:
 [1] strictconvert(T::Type, x::Vector{Float64})
   @ ApproxFunBase ~/julia-versions/dot_julia/packages/ApproxFunBase/aO3TG/src/ApproxFunBase.jl:115
 [2] convert(#unused#::Type{Fun{Chebyshev{Segment{Float64}, Float64}, Float64, SubArray{Float64, 1, Vector{Float64}, Tuple{StepRange{Int64, Int64}}, true}}}, f::Fun{Chebyshev{Segment{Float64}, Float64}, Float64, Vector{Float64}})
   @ ApproxFunBase ~/julia-versions/dot_julia/packages/ApproxFunBase/aO3TG/src/Fun.jl:165
 [3] setindex!(A::Vector{Fun{Chebyshev{Segment{Float64}, Float64}, Float64, SubArray{Float64, 1, Vector{Float64}, Tuple{StepRange{Int64, Int64}}, true}}}, x::Function, i1::Int64)
   @ Base ./array.jl:969
 [4] cumsum(f::Fun{PiecewiseSpace{Tuple{Chebyshev{Segment{Float64}, Float64}, Chebyshev{Segment{Float64}, Float64}}, DomainSets.UnionDomain{Float64, Tuple{Segment{Float64}, Segment{Float64}}}, Float64}, Float64, Vector{Float64}})
   @ ApproxFunBase ~/julia-versions/dot_julia/packages/ApproxFunBase/aO3TG/src/Spaces/SumSpace.jl:326
 [5] top-level scope
   @ REPL[3]:1

julia @v1.9>