Skip to content

Commit

Permalink
Delta tensors (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
mtfishman authored Jan 28, 2025
1 parent fa39f45 commit f82ada8
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 2 deletions.
4 changes: 3 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
name = "DiagonalArrays"
uuid = "74fd4be6-21e2-4f6f-823a-4360d37c7a77"
authors = ["ITensor developers <support@itensor.org> and contributors"]
version = "0.2.2"
version = "0.2.3"

[deps]
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
DerivableInterfaces = "6c5e35bf-e59e-4898-b73c-732dcc4ba65f"
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"

[compat]
ArrayLayouts = "1.10.4"
DerivableInterfaces = "0.3.7"
FillArrays = "1.13.0"
LinearAlgebra = "1.10.0"
SparseArraysBase = "0.2.1"
julia = "1.10"
1 change: 1 addition & 0 deletions src/DiagonalArrays.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ include("diagonalarray/diagonalarray.jl")
include("diagonalarray/diagonalmatrix.jl")
include("diagonalarray/diagonalvector.jl")
include("diagonalarray/arraylayouts.jl")
include("diagonalarray/delta.jl")

end
26 changes: 26 additions & 0 deletions src/diagonalarray/delta.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using FillArrays: Ones

function delta(elt::Type, size::Tuple{Vararg{Int}})
return DiagonalArray(Ones{elt}(minimum(size)), size)
end
function δ(elt::Type, size::Tuple{Vararg{Int}})
return delta(elt, size)
end
function delta(elt::Type, size::Int...)
return delta(elt, size)
end
function δ(elt::Type, size::Int...)
return delta(elt, size...)
end
function delta(size::Tuple{Vararg{Int}})
return delta(Float64, size)
end
function δ(size::Tuple{Vararg{Int}})
return delta(size)
end
function delta(size::Int...)
return delta(size)
end
function δ(size::Int...)
return delta(size...)
end
1 change: 1 addition & 0 deletions test/Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[deps]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
DiagonalArrays = "74fd4be6-21e2-4f6f-823a-4360d37c7a77"
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"
Expand Down
37 changes: 36 additions & 1 deletion test/test_basics.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using Test: @test, @testset, @test_broken, @inferred
using DiagonalArrays: DiagonalArrays, DiagonalArray, DiagonalMatrix, diaglength, diagonal
using DiagonalArrays:
DiagonalArrays, DiagonalArray, DiagonalMatrix, δ, delta, diaglength, diagonal, diagview
using FillArrays: Fill, Ones
using SparseArraysBase: SparseArrayDOK, storedlength
using LinearAlgebra: Diagonal

Expand Down Expand Up @@ -52,5 +54,38 @@ using LinearAlgebra: Diagonal
@test @inferred(diagonal(rand(2))) isa AbstractMatrix
@test diagonal(zeros(Int, 2)) isa Diagonal
end
@testset "delta" begin
for (a, elt′) in (
(delta(2, 3), Float64),
(δ(2, 3), Float64),
(delta((2, 3)), Float64),
(δ((2, 3)), Float64),
(delta(Bool, 2, 3), Bool),
(δ(Bool, 2, 3), Bool),
(delta(Bool, (2, 3)), Bool),
(δ(Bool, (2, 3)), Bool),
)
@test eltype(a) === elt′
@test diaglength(a) == 2
@test a isa DiagonalArray{elt′}
@test size(a) == (2, 3)
@test diaglength(a) == 2
@test storedlength(a) == 2
@test a == DiagonalArray(ones(2), (2, 3))
@test diagview(a) == ones(2)
@test diagview(a) isa Ones{elt′}

a′ = 2a
@test diagview(a′) == 2ones(2)
# TODO: Fix this. Mapping doesn't preserve
# the diagonal structure properly.
# https://github.com/ITensor/DiagonalArrays.jl/issues/7
@test_broken diagview(a′) isa Fill

b = randn(elt, (3, 4))
a_dest = a * b
@test a_dest Array(a) * Array(b)
end
end
end
end

0 comments on commit f82ada8

Please sign in to comment.