Skip to content

Error in iszero in Julia v1.10  #647

@andreasvarga

Description

@andreasvarga

The following works well in Julia 1.9 but fails in Julia 1.10

In Julia 1.9:

julia> Af = Fun(t -> [0  1; -10*cos(t)-1 -24-19*sin(t)],Fourier(0..2pi));
julia> iszero(Af)
false

The old definition of iszero is

iszero(f::Fun) = all(iszero,f.coefficients)

In Julia 1.10:

julia> Af = Fun(t -> [0  1; -10*cos(t)-1 -24-19*sin(t)],Fourier(0..2pi));
julia> iszero(Af)
ERROR: Override for ApproxFunBase.ArraySpace(ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫); Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)])
Stacktrace:
 [1] error(s::String)
   @ Base .\error.jl:35
 [2] checkcanonicalspace(sp::ApproxFunBase.ArraySpace{ApproxFunBase.SumSpace{…}, 2, PeriodicSegment{…}, Float64, Matrix{…}})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:478
 [3] ApproxFunBase.ICanonicalTransformPlan(space::ApproxFunBase.ArraySpace{…}, v::Vector{…}, ip::Val{…})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:493
 [4] plan_itransform(sp::ApproxFunBase.ArraySpace{…}, v::Vector{…})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:497
 [5] itransform(S::ApproxFunBase.ArraySpace{…}, cfs::Vector{…})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:564
 [6] _values
   @ C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Fun.jl:428 [inlined]
 [7] values
   @ C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Fun.jl:426 [inlined]
 [8] iszero(f::Fun{ApproxFunBase.ArraySpace{…}, Float64, Vector{…}})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Fun.jl:776
 [9] top-level scope
   @ REPL[90]:1
Some type information was truncated. Use `show(err)` to see complete types.

The new definition of iszero is

iszero(f::Fun) = all(iszero, coefficients(f)) || all(iszero, values(f))

so, the failure is caused by

julia> values(Af)
ERROR: Override for ApproxFunBase.ArraySpace(ApproxFunBase.SumSpace{Tuple{CosSpace{PeriodicSegment{Float64}, Float64}, SinSpace{PeriodicSegment{Float64}, Float64}}, PeriodicSegment{Float64}, Float64}[Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫); Fourier(【0.0,6.283185307179586❫) Fourier(【0.0,6.283185307179586❫)])
Stacktrace:
 [1] error(s::String)
   @ Base .\error.jl:35
 [2] checkcanonicalspace(sp::ApproxFunBase.ArraySpace{ApproxFunBase.SumSpace{…}, 2, PeriodicSegment{…}, Float64, Matrix{…}})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:478
 [3] ApproxFunBase.ICanonicalTransformPlan(space::ApproxFunBase.ArraySpace{…}, v::Vector{…}, ip::Val{…})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:493
 [4] plan_itransform(sp::ApproxFunBase.ArraySpace{…}, v::Vector{…})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:497
 [5] itransform(S::ApproxFunBase.ArraySpace{…}, cfs::Vector{…})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Space.jl:564
 [6] _values
   @ C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Fun.jl:428 [inlined]
 [7] values(::Fun{ApproxFunBase.ArraySpace{…}, Float64, Vector{…}})
   @ ApproxFunBase C:\Users\Andreas\.julia\packages\ApproxFunBase\sJBXX\src\Fun.jl:426
 [8] top-level scope
   @ REPL[91]:1
Some type information was truncated. Use `show(err)` to see complete types.

I wonder why the second test involving all(iszero, values(f)) is necessary!

I would appreciate very much if the fix for this very basic function can be done in a short time. Thanks in advance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions