kwcall ambiguity for lu(Symmetric(BandedMatrix))
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
使用 issue 中的 Julia 和 BandedMatrices 示例复现该歧义,然后检查 src/factorizations.jl 中第 314 行和第 427-429 行附近的代码,并结合 stacktrace 中显示的 LinearAlgebra 的 lu.jl 方法进行分析。当 lu(Symmetric(A)) 不再引发 kwcall 歧义,同时现有的 lu(A) 行为仍然有效时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
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
- 主要语言
- Julia
- 星标
- 57
- 派生
- 10
- 平均合并
- 1 天 9 小时
- 30 天内合并 PR
- 11
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
JuliaLinearAlgebra/ArrayLayouts.jl 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 45/100
JuliaLinearAlgebra/ArrayLayouts.jl#277 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 38/100
JuliaLinearAlgebra/ArrayLayouts.jl#253 · 5 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 15/100
JuliaLinearAlgebra/ArrayLayouts.jl#185 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 35/100
JuliaLinearAlgebra/ArrayLayouts.jl#157 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 28/100
JuliaLinearAlgebra/ArrayLayouts.jl#155 · 1 条评论 ·
维护者通常 1 天内回复
查看 JuliaLinearAlgebra/ArrayLayouts.jl 的全部 Issue
相似的 Issue
-
mul! with a Symmetric or Hermitian factor throws for a matrix view whose columns are not contiguous未关闭
难度 2/5 1-3 小时 新手友好度 72/100
JuliaLang/LinearAlgebra.jl#1829 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
MagneticResonanceImaging/MRIReco.jl#320 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
rfordatascience/tidytuesday#1098 ·
-
ci system:windows test
难度 1/5 1 小时以内 新手友好度 76/100
维护者通常 1 天内回复
-
Single-column TKE example: boundary-layer depth description doesn't match Han & Bretherton (2019)未关闭
难度 1/5 1-3 小时 新手友好度 82/100
NumericalEarth/Breeze.jl#1143 ·
维护者通常 1 天内回复