Closed
Description
MWE:
julia> using StaticArrays
julia> M = @SMatrix rand(3,3)
3×3 SMatrix{3, 3, Float64, 9} with indices SOneTo(3)×SOneTo(3):
0.0208401 0.45567 0.110421
0.918376 0.652122 0.399424
0.821561 0.418753 0.730901
julia> M / M
3×3 SMatrix{3, 3, Float64, 9} with indices SOneTo(3)×SOneTo(3):
1.0 -0.0 -0.0
1.24963e-16 1.0 -0.0
8.33088e-17 -3.33235e-16 1.0
julia> N = @SMatrix rand(BigFloat, 3,3)
3×3 SMatrix{3, 3, BigFloat, 9} with indices SOneTo(3)×SOneTo(3):
0.925296 0.56646 0.496179
0.483511 0.669458 0.31921
0.759881 0.802041 0.957391
julia> N / N
ERROR: setindex!() with non-isbitstype eltype is not supported by StaticArrays. Consider using SizedArray.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] setindex!
@ ~/.julia/dev/StaticArrays/src/MArray.jl:39 [inlined]
[3] macro expansion
@ ~/.julia/dev/StaticArrays/src/indexing.jl:66 [inlined]
[4] _setindex!_scalar
@ ~/.julia/dev/StaticArrays/src/indexing.jl:46 [inlined]
[5] setindex!
@ ~/.julia/dev/StaticArrays/src/indexing.jl:42 [inlined]
[6] macro expansion
@ ~/.julia/dev/StaticArrays/src/indexing.jl:357 [inlined]
[7] _setindex!
@ ~/.julia/dev/StaticArrays/src/indexing.jl:320 [inlined]
[8] setindex!
@ ~/.julia/dev/StaticArrays/src/indexing.jl:274 [inlined]
[9] _solve
@ ~/.julia/dev/StaticArrays/src/solve.jl:36 [inlined]
[10] \
@ ~/.julia/dev/StaticArrays/src/solve.jl:1 [inlined]
[11] /(A::SMatrix{3, 3, BigFloat, 9}, B::SMatrix{3, 3, BigFloat, 9})
@ LinearAlgebra ~/julia/julia-1.7.3/share/julia/stdlib/v1.7/LinearAlgebra/src/generic.jl:1152
[12] top-level scope
@ REPL[5]:1
This is because A/B
uses setindex
internally, and the method doesn't support non-isbitstypes. (x-ref: #883)
But is this error as expected?
I thought we can add a matrix division method for non-isbitstypes that does not use setindex
.
Metadata
Metadata
Assignees
Labels
No labels