Skip to content

Error when inverting array view under certain conditions #878

@jmlawson

Description

@jmlawson

Matrix inversion of an a view of an array seems to throw a contiguous columns error, but only when there are no zeros in the matrix view:

julia> x
2×2×2 Array{Float64, 3}:
[:, :, 1] =
 0.0  0.0
 0.0  0.0

[:, :, 2] =
 0.0  0.0
 0.0  0.0

julia> x[1,:,:]=[1 0; 0 1]
2×2 Matrix{Int64}:
 1  0
 0  1

julia> inv(@view x[1,:,:])
ERROR: matrix does not have contiguous columns
Stacktrace:
 [1] error(s::String)
   @ Base .\error.jl:33
 [2] _chkstride1(ok::Bool)
   @ LinearAlgebra C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\LinearAlgebra.jl:203
 [3] _chkstride1
   @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\LinearAlgebra.jl:204 [inlined]
 [4] chkstride1
   @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\LinearAlgebra.jl:202 [inlined]
 [5] trtrs!(uplo::Char, trans::Char, diag::Char, A::SubArray{Float64, 2, Array{Float64, 3}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}, Base.Slice{Base.OneTo{Int64}}}, true}, B::Matrix{Float64})
   @ LinearAlgebra.LAPACK C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\lapack.jl:3412
 [6] ldiv!
   @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\triangular.jl:739 [inlined]
 [7] inv(A::LinearAlgebra.UpperTriangular{Float64, SubArray{Float64, 2, Array{Float64, 3}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}, Base.Slice{Base.OneTo{Int64}}}, true}})
   @ LinearAlgebra C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\triangular.jl:821
 [8] inv(A::SubArray{Float64, 2, Array{Float64, 3}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}, Base.Slice{Base.OneTo{Int64}}}, true})
   @ LinearAlgebra C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\LinearAlgebra\src\dense.jl:811
 [9] top-level scope
   @ none:1

julia> x[1,:,:]=[1 .5; .5 1]
2×2 Matrix{Float64}:
 1.0  0.5
 0.5  1.0

julia> inv(@view x[1,:,:])
2×2 Matrix{Float64}:
  1.33333   -0.666667
 -0.666667   1.33333

Thanks for your help! Apologies if this is not truly a bug.

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