diff --git a/Project.toml b/Project.toml index 6d271cb..aefec8a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DerivableInterfaces" uuid = "6c5e35bf-e59e-4898-b73c-732dcc4ba65f" authors = ["ITensor developers and contributors"] -version = "0.5.2" +version = "0.5.3" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" diff --git a/src/DerivableInterfaces.jl b/src/DerivableInterfaces.jl index cf37149..c26cccb 100644 --- a/src/DerivableInterfaces.jl +++ b/src/DerivableInterfaces.jl @@ -14,4 +14,6 @@ include("concatenate.jl") include("defaultarrayinterface.jl") include("traits.jl") +include("permuteddims.jl") + end diff --git a/src/permuteddims.jl b/src/permuteddims.jl new file mode 100644 index 0000000..e276ab8 --- /dev/null +++ b/src/permuteddims.jl @@ -0,0 +1,8 @@ +""" + permuteddims(a::AbstractArray, perm) + +Lazy version of `permutedims`. Defaults to constructing a `Base.PermutedDimsArray` +but can be customized to output a different type of array. +""" +permuteddims(a::AbstractArray, perm) = PermutedDimsArray(a, perm) +# See: https://github.com/JuliaLang/julia/issues/53188 diff --git a/test/test_permuteddims.jl b/test/test_permuteddims.jl new file mode 100644 index 0000000..12a1691 --- /dev/null +++ b/test/test_permuteddims.jl @@ -0,0 +1,7 @@ +using DerivableInterfaces: permuteddims +using Test: @test, @testset + +@testset "permuteddims" begin + a = randn(2, 3, 4) + @test permuteddims(a, (2, 1, 3)) ≡ PermutedDimsArray(a, (2, 1, 3)) +end