Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

kwcall ambiguity for lu(Symmetric(BandedMatrix))

Aperta
#243 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
julia
Ambito
tooling

Direzione di ricerca

Riproduci l’ambiguità con l’esempio di Julia e BandedMatrices nell’issue, quindi esamina src/factorizations.jl intorno alle righe 314 e 427-429 insieme ai metodi di LinearAlgebra in lu.jl mostrati nello stacktrace. Il lavoro è completato quando lu(Symmetric(A)) non genera più l’ambiguità di kwcall e il comportamento esistente di lu(A) rimane valido.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

julia> using BandedMatrices, LinearAlgebra

julia> A = brand(10, 10, 2, 2);

julia> lu(A) # seems fine
BandedMatrices.BandedLU{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}
L factor:
10×10 Matrix{Float64}:
  1.0          0.0           0.0           0.0          …   0.0           0.0          0.0        0.0       0.0
  0.130262     1.0           0.0           0.0              0.0           0.0          0.0        0.0       0.0
  0.628091     0.925623      1.0           0.0              0.0           0.0          0.0        0.0       0.0
  6.56551e-17  4.66203e-16  -0.930112      1.0              0.0           0.0          0.0        0.0       0.0
  9.48947e-17  5.10714e-16   1.70639e-16  -1.66186e-16      0.0           0.0          0.0        0.0       0.0
  1.09378e-16  4.08892e-16   2.02321e-16  -1.53524e-16  …   1.0           0.0          0.0        0.0       0.0
 -1.48462e-17  3.74493e-16   3.01977e-17  -4.18909e-17      9.42525e-17   1.0          0.0        0.0       0.0
  2.69952e-17  3.59865e-16   1.39717e-16  -3.46407e-16     -1.07228e-16   1.46833e-16  1.0        0.0       0.0
 -2.07649e-16  1.52132e-16  -2.19689e-16   0.506627         0.014214      0.34169      0.447224   1.0       0.0
  5.26367e-17  0.19874      -0.121982      0.26927         -0.108379     -0.76199      0.820067  -0.405123  1.0
U factor:
10×10 BandedMatrix{Float64} with bandwidths (2, 4):
 0.958321  0.64343    0.0950425  0.0        0.0         ⋅         ⋅          ⋅          ⋅          ⋅
 0.0       0.605374   0.924089   0.18638    0.976283   0.0        ⋅          ⋅          ⋅          ⋅
 0.0       0.0       -0.800624   0.233672  -0.903669   0.0       0.0         ⋅          ⋅          ⋅
  ⋅        0.0        0.0        0.535959   0.0770822  0.474611  0.370779   0.0         ⋅          ⋅
  ⋅         ⋅         0.0        0.0        0.843502   0.38096   0.934787   0.113725   0.571547    ⋅
  ⋅         ⋅          ⋅         0.0        0.0        0.82845   0.0961225  0.264537   0.542442   0.620033
  ⋅         ⋅          ⋅          ⋅         0.0        0.0       0.481825   0.520846   0.993578   0.448423
  ⋅         ⋅          ⋅          ⋅          ⋅         0.0       0.0        0.47772    0.384355   0.59676
  ⋅         ⋅          ⋅          ⋅          ⋅          ⋅        0.0        0.0       -0.816749  -0.42892
  ⋅         ⋅          ⋅          ⋅          ⋅          ⋅         ⋅         0.0        0.0       -0.254256

julia> lu(Symmetric(A))
MethodError: kwcall(::@NamedTuple{check::Bool}, ::typeof(lu!), ::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, ::RowMaximum) is ambiguous.

Candidates:
  kwcall(::NamedTuple, ::typeof(lu!), A::AbstractMatrix, pivot::Union{NoPivot, RowMaximum, RowNonZero})
    @ LinearAlgebra C:\Users\danjv\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\LinearAlgebra\src\lu.jl:132
  kwcall(::NamedTuple, ::typeof(lu!), A::Union{Hermitian{var"#s6993", var"#s6994"}, Hermitian{Complex{var"#s6993"}, var"#s6994"}, Symmetric{var"#s6993", var"#s6994"}} where {var"#s6993"<:Real, var"#s6994"<:(ArrayLayouts.LayoutMatrix)}, args...)
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:429
  kwcall(::NamedTuple, ::typeof(lu!), A::Union{Hermitian{T, S}, Symmetric{T, S}} where S, pivot::Union{NoPivot, RowMaximum, RowNonZero}) where T
    @ LinearAlgebra C:\Users\danjv\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\LinearAlgebra\src\lu.jl:86

Possible fix, define
  kwcall(::NamedTuple, ::typeof(lu!), ::Union{Hermitian{var"#s6993", var"#s6994"}, Hermitian{Complex{var"#s6993"}, var"#s6994"}, Symmetric{var"#s6993", var"#s6994"}} where {var"#s6993"<:Real, var"#s6994"<:(ArrayLayouts.LayoutMatrix)}, ::Union{NoPivot, RowMaximum, RowNonZero})

Stacktrace:
  [1] lu(A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, pivot::RowMaximum; check::Bool)
    @ LinearAlgebra C:\Users\danjv\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\LinearAlgebra\src\lu.jl:300
  [2] lu(A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, pivot::RowMaximum)
    @ LinearAlgebra C:\Users\danjv\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\LinearAlgebra\src\lu.jl:299
  [3] lu_layout(layout::ArrayLayouts.SymmetricLayout{BandedMatrices.BandedColumns{ArrayLayouts.DenseColumnMajor}}, axes::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, pivot::RowMaximum; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:315
  [4] lu_layout(layout::ArrayLayouts.SymmetricLayout{BandedMatrices.BandedColumns{ArrayLayouts.DenseColumnMajor}}, axes::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, pivot::RowMaximum)
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:315
  [5] lu(A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, pivot::RowMaximum; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:427
  [6] lu(A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}})
    @ LinearAlgebra C:\Users\danjv\.julia\juliaup\julia-1.10.4+0.x64.w64.mingw32\share\julia\stdlib\v1.10\LinearAlgebra\src\lu.jl:299
  [7] lu_layout(layout::ArrayLayouts.SymmetricLayout{BandedMatrices.BandedColumns{ArrayLayouts.DenseColumnMajor}}, axes::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:314
  [8] lu(A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}; kwds::@Kwargs{})
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:428
  [9] lu(A::Symmetric{Float64, BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}})
    @ ArrayLayouts C:\Users\danjv\.julia\packages\ArrayLayouts\31idh\src\factorizations.jl:428
 [10] top-level scope
    @ REPL[7]:1
Lingua principale
Julia
Stelle
57
Fork
10
Merge medio
1g 9h
PR unite (30g)
11

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di JuliaLinearAlgebra/ArrayLayouts.jl

Tutte le issue di JuliaLinearAlgebra/ArrayLayouts.jl

Issue simili

Altre issue su Julia

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.