diff --git a/Project.toml b/Project.toml index 434f94d..24fcf73 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DiagonalArrays" uuid = "74fd4be6-21e2-4f6f-823a-4360d37c7a77" authors = ["ITensor developers and contributors"] -version = "0.2.5" +version = "0.2.6" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" @@ -15,5 +15,5 @@ ArrayLayouts = "1.10.4" DerivableInterfaces = "0.3.7" FillArrays = "1.13.0" LinearAlgebra = "1.10.0" -SparseArraysBase = "0.2.1, 0.3" +SparseArraysBase = "0.4" julia = "1.10" diff --git a/src/DiagonalArrays.jl b/src/DiagonalArrays.jl index 6a7921a..51550ac 100644 --- a/src/DiagonalArrays.jl +++ b/src/DiagonalArrays.jl @@ -1,6 +1,5 @@ module DiagonalArrays -include("diaginterface/defaults.jl") include("diaginterface/diaginterface.jl") include("diaginterface/diagindex.jl") include("diaginterface/diagindices.jl") diff --git a/src/diaginterface/defaults.jl b/src/diaginterface/defaults.jl deleted file mode 100644 index 3b1ed5d..0000000 --- a/src/diaginterface/defaults.jl +++ /dev/null @@ -1 +0,0 @@ -default_size(diag::AbstractVector, n) = ntuple(Returns(length(diag)), n) diff --git a/src/diagonalarray/diagonalarray.jl b/src/diagonalarray/diagonalarray.jl index 20b1954..fcb098e 100644 --- a/src/diagonalarray/diagonalarray.jl +++ b/src/diagonalarray/diagonalarray.jl @@ -1,4 +1,6 @@ -using SparseArraysBase: SparseArraysBase, SparseArrayDOK, default_getunstoredindex ## , Zero, getindex_zero_function +function getzero(a::AbstractArray{<:Any,N}, I::Vararg{Int,N}) where {N} + return zero(eltype(a)) +end struct DiagonalArray{T,N,Diag<:AbstractVector{T},F} <: AbstractDiagonalArray{T,N} diag::Diag @@ -7,15 +9,13 @@ struct DiagonalArray{T,N,Diag<:AbstractVector{T},F} <: AbstractDiagonalArray{T,N end function DiagonalArray{T,N}( - diag::AbstractVector{T}, - d::Tuple{Vararg{Int,N}}, - getunstoredindex=default_getunstoredindex, + diag::AbstractVector{T}, d::Tuple{Vararg{Int,N}}, getunstoredindex=getzero ) where {T,N} return DiagonalArray{T,N,typeof(diag),typeof(getunstoredindex)}(diag, d, getunstoredindex) end function DiagonalArray{T,N}( - diag::AbstractVector, d::Tuple{Vararg{Int,N}}, getunstoredindex=default_getunstoredindex + diag::AbstractVector, d::Tuple{Vararg{Int,N}}, getunstoredindex=getzero ) where {T,N} return DiagonalArray{T,N}(T.(diag), d, getunstoredindex) end @@ -25,7 +25,7 @@ function DiagonalArray{T,N}(diag::AbstractVector, d::Vararg{Int,N}) where {T,N} end function DiagonalArray{T}( - diag::AbstractVector, d::Tuple{Vararg{Int,N}}, getunstoredindex=default_getunstoredindex + diag::AbstractVector, d::Tuple{Vararg{Int,N}}, getunstoredindex=getzero ) where {T,N} return DiagonalArray{T,N}(diag, d, getunstoredindex) end @@ -44,7 +44,7 @@ end # Infer size from diagonal function DiagonalArray{T,N}(diag::AbstractVector) where {T,N} - return DiagonalArray{T,N}(diag, default_size(diag, N)) + return DiagonalArray{T,N}(diag, ntuple(Returns(length(diag)), N)) end function DiagonalArray{<:Any,N}(diag::AbstractVector{T}) where {T,N} @@ -53,7 +53,7 @@ end # undef function DiagonalArray{T,N}( - ::UndefInitializer, d::Tuple{Vararg{Int,N}}, getunstoredindex=default_getunstoredindex + ::UndefInitializer, d::Tuple{Vararg{Int,N}}, getunstoredindex=getzero ) where {T,N} return DiagonalArray{T,N}(Vector{T}(undef, minimum(d)), d, getunstoredindex) end @@ -63,16 +63,14 @@ function DiagonalArray{T,N}(::UndefInitializer, d::Vararg{Int,N}) where {T,N} end function DiagonalArray{T}( - ::UndefInitializer, d::Tuple{Vararg{Int,N}}, getunstoredindex=default_getunstoredindex + ::UndefInitializer, d::Tuple{Vararg{Int,N}}, getunstoredindex=getzero ) where {T,N} return DiagonalArray{T,N}(undef, d, getunstoredindex) end # Axes version function DiagonalArray{T}( - ::UndefInitializer, - axes::Tuple{Vararg{AbstractUnitRange,N}}, - getunstoredindex=default_getunstoredindex, + ::UndefInitializer, axes::Tuple{Vararg{AbstractUnitRange,N}}, getunstoredindex=getzero ) where {T,N} @assert all(isone, first.(axes)) return DiagonalArray{T,N}(undef, length.(axes), getunstoredindex) diff --git a/test/Project.toml b/test/Project.toml index dc08e6c..053c41f 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -14,6 +14,6 @@ DiagonalArrays = "0.2" FillArrays = "1" LinearAlgebra = "1" SafeTestsets = "0.1" -SparseArraysBase = "0.3" +SparseArraysBase = "0.4" Suppressor = "0.2" Test = "1"