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

A \ B never completes when B is a `Normalized` basis

Open DanielVandH opened this issue 9 months ago • 1 comments

julia> using ClassicalOrthogonalPolynomials

julia> P = Jacobi(2.0, 0.5); Q = Jacobi(3.0, 0.5);

julia> P \ Q; # works fine

julia> Normalized(P) \ Q; # works fine

julia> P \ Normalized(Q); # :(
ERROR: InterruptException:
Stacktrace:
  [1] cache_filldata!(::LazyArrays.CachedArray{…}, ::UnitRange{…}, ::Base.OneTo{…})
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:222
  [2] resizedata!(::ArrayLayouts.DenseColumnMajor, ::ArrayLayouts.ZerosLayout, ::LazyArrays.CachedArray{…}, ::Int64, ::Int64)
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:263
  [3] resizedata!
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:218 [inlined]
  [4] setindex!
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:82 [inlined]
  [5] _setindex!
    @ .\abstractarray.jl:1426 [inlined]
  [6] setindex!
    @ .\abstractarray.jl:1396 [inlined]
  [7] copyto_unaliased!(deststyle::IndexCartesian, dest::LazyArrays.CachedArray{…}, srcstyle::IndexCartesian, src::LinearAlgebra.Diagonal{…})
    @ Base .\abstractarray.jl:1102
  [8] copyto!(dest::LazyArrays.CachedArray{…}, src::LinearAlgebra.Diagonal{…})
    @ Base .\abstractarray.jl:1068
  [9] _copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:255 [inlined]
 [10] _copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:259 [inlined]
 [11] copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:262 [inlined]
 [12] copyto!(dest::LazyArrays.CachedArray{…}, M::ArrayLayouts.Ldiv{…})
    @ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\triangular.jl:209
 [13] copy
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:21 [inlined]
 [14] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:22 [inlined]
 [15] ldiv
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98 [inlined]
 [16] copy(M::ArrayLayouts.Mul{…})
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:90
 [17] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\mul.jl:127 [inlined]
 [18] mul
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\mul.jl:128 [inlined]
 [19] *(A::LazyArrays.ApplyArray{…}, B::LinearAlgebra.Diagonal{…})
    @ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:219
 [20] _copy_ldiv_mul
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:112 [inlined]
 [21] copy
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:116 [inlined]
 [22] copy
    @ C:\Users\User\.julia\packages\ClassicalOrthogonalPolynomials\Hdhud\src\normalized.jl:123 [inlined]
 [23] basis_ldiv_size
    @ C:\Users\User\.julia\packages\ContinuumArrays\0grIp\src\bases\bases.jl:327 [inlined]
 [24] copy
    @ C:\Users\User\.julia\packages\ContinuumArrays\0grIp\src\bases\bases.jl:323 [inlined]
 [25] copy
    @ C:\Users\User\.julia\packages\ClassicalOrthogonalPolynomials\Hdhud\src\normalized.jl:125 [inlined]
 [26] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:22 [inlined]
 [27] ldiv
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98 [inlined]
 [28] \(A::Jacobi{Float64}, B::Normalized{Float64, Jacobi{…}, LazyArrays.Accumulate{…}})
    @ QuasiArrays C:\Users\User\.julia\packages\QuasiArrays\ZCn0F\src\matmul.jl:34
 [29] top-level scope
    @ REPL[27]:1
Some type information was truncated. Use `show(err)` to see complete types.
julia> Normalized(P) \ Normalized(Q); # :(
ERROR: InterruptException:
Stacktrace:
  [1] cache_filldata!(::LazyArrays.CachedArray{…}, ::UnitRange{…}, ::Base.OneTo{…})
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:222
  [2] resizedata!(::ArrayLayouts.DenseColumnMajor, ::ArrayLayouts.ZerosLayout, ::LazyArrays.CachedArray{…}, ::Int64, ::Int64)
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:263
  [3] resizedata!
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:218 [inlined]
  [4] setindex!
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:82 [inlined]
  [5] _setindex!
    @ .\abstractarray.jl:1426 [inlined]
  [6] setindex!
    @ .\abstractarray.jl:1396 [inlined]
  [7] copyto_unaliased!(deststyle::IndexCartesian, dest::LazyArrays.CachedArray{…}, srcstyle::IndexCartesian, src::LinearAlgebra.Diagonal{…})
    @ Base .\abstractarray.jl:1102
  [8] copyto!(dest::LazyArrays.CachedArray{…}, src::LinearAlgebra.Diagonal{…})
    @ Base .\abstractarray.jl:1068
  [9] _copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:255 [inlined]
 [10] _copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:259 [inlined]
 [11] copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:262 [inlined]
 [12] copyto!(dest::LazyArrays.CachedArray{…}, M::ArrayLayouts.Ldiv{…})
    @ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\triangular.jl:209
 [13] copy
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:21 [inlined]
 [14] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:22 [inlined]
 [15] ldiv
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98 [inlined]
 [16] copy(M::ArrayLayouts.Mul{…})
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:90
 [17] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\mul.jl:127 [inlined]
 [18] mul
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\mul.jl:128 [inlined]
 [19] *
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:219 [inlined]
 [20] _normalized_ldiv(An::LinearAlgebra.Diagonal{…}, C::LazyArrays.ApplyArray{…}, Bn::LinearAlgebra.Diagonal{…})
    @ ClassicalOrthogonalPolynomials C:\Users\User\.julia\packages\ClassicalOrthogonalPolynomials\Hdhud\src\normalized.jl:117
 [21] copy
    @ C:\Users\User\.julia\packages\ClassicalOrthogonalPolynomials\Hdhud\src\normalized.jl:121 [inlined]
 [22] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:22 [inlined]
 [23] ldiv
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98 [inlined]
 [24] \(A::Normalized{…}, B::Normalized{…})
    @ QuasiArrays C:\Users\User\.julia\packages\QuasiArrays\ZCn0F\src\matmul.jl:34
 [25] top-level scope
    @ REPL[28]:1
Some type information was truncated. Use `show(err)` to see complete types.
julia> Chebyshev() \ Normalized(ChebyshevU()); # :(
ERROR: InterruptException:
Stacktrace:
  [1] cache_filldata!(::LazyArrays.CachedArray{…}, ::UnitRange{…}, ::Base.OneTo{…})
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:222
  [2] resizedata!(::ArrayLayouts.DenseColumnMajor, ::ArrayLayouts.ZerosLayout, ::LazyArrays.CachedArray{…}, ::Int64, ::Int64)
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:263
  [3] resizedata!
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:218 [inlined]
  [4] setindex!
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\cache.jl:82 [inlined]
  [5] setindex!
    @ .\subarray.jl:331 [inlined]
  [6] _setindex!
    @ .\abstractarray.jl:1426 [inlined]
  [7] setindex!
    @ .\abstractarray.jl:1396 [inlined]
  [8] copyto_unaliased!(deststyle::IndexCartesian, dest::SubArray{…}, srcstyle::IndexCartesian, src::SubArray{…})
    @ Base .\abstractarray.jl:1102
  [9] copyto!
    @ .\abstractarray.jl:1068 [inlined]
 [10] _copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:255 [inlined]
 [11] _copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:259 [inlined]
 [12] copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:267 [inlined]
 [13] ldiv!(Y::LazyArrays.CachedArray{…}, A::MatrixFactorizations.QR{…}, B::LinearAlgebra.Diagonal{…})
    @ LinearAlgebra C:\Users\User\.julia\juliaup\julia-1.10.3+0.x64.w64.mingw32\share\julia\stdlib\v1.10\LinearAlgebra\src\factorization.jl:179
 [14] _ldiv!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:84 [inlined]
 [15] copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:113 [inlined]
 [16] ldiv!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:104 [inlined]
 [17] _ldiv!(dest::LazyArrays.CachedArray{…}, A::BandedMatrices.BandedMatrix{…}, B::LinearAlgebra.Diagonal{…}; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:83
 [18] _ldiv!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:83 [inlined]
 [19] copyto!
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:113 [inlined]
 [20] copy
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:21 [inlined]
 [21] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:22 [inlined]
 [22] ldiv
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98 [inlined]
 [23] copy(M::ArrayLayouts.Mul{…})
    @ LazyArrays C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:90
 [24] materialize
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\mul.jl:127 [inlined]
 [25] mul
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\mul.jl:128 [inlined]
 [26] *
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ArrayLayouts.jl:219 [inlined]
 [27] _copy_ldiv_mul
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:112 [inlined]
 [28] copy
    @ C:\Users\User\.julia\packages\LazyArrays\JNdsG\src\linalg\inv.jl:116 [inlined]
 [29] copy
    @ C:\Users\User\.julia\packages\ClassicalOrthogonalPolynomials\Hdhud\src\normalized.jl:123 [inlined]
 [30] basis_ldiv_size
    @ C:\Users\User\.julia\packages\ContinuumArrays\0grIp\src\bases\bases.jl:327 [inlined]
 [31] copy
    @ C:\Users\User\.julia\packages\ContinuumArrays\0grIp\src\bases\bases.jl:323 [inlined]
 [32] copy
    @ C:\Users\User\.julia\packages\ClassicalOrthogonalPolynomials\Hdhud\src\normalized.jl:125 [inlined]
 [33] materialize(M::ArrayLayouts.Ldiv{…}; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:22
 [34] ldiv(A::ChebyshevT{Float64}, B::Normalized{Float64, ChebyshevU{…}, LazyArrays.Accumulate{…}}; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98
 [35] ldiv
    @ C:\Users\User\.julia\packages\ArrayLayouts\ccyJu\src\ldiv.jl:98 [inlined]
 [36] \(A::ChebyshevT{Float64}, B::Normalized{Float64, ChebyshevU{…}, LazyArrays.Accumulate{…}})
    @ QuasiArrays C:\Users\User\.julia\packages\QuasiArrays\ZCn0F\src\matmul.jl:34
 [37] top-level scope
    @ REPL[29]:1
Some type information was truncated. Use `show(err)` to see complete types.

DanielVandH avatar May 14 '24 17:05 DanielVandH