diff --git a/Project.toml b/Project.toml index 783d167..01cfba3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "ITensorMPS" uuid = "0d1a4710-d33b-49a5-8f18-73bdf49b47e2" authors = ["Matthew Fishman ", "Miles Stoudenmire "] -version = "0.3.20" +version = "0.3.21" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" diff --git a/test/ext/ITensorMPSChainRulesCoreExt/test_chainrules.jl b/test/ext/ITensorMPSChainRulesCoreExt/test_chainrules.jl index e3fd2f5..b563f08 100644 --- a/test/ext/ITensorMPSChainRulesCoreExt/test_chainrules.jl +++ b/test/ext/ITensorMPSChainRulesCoreExt/test_chainrules.jl @@ -293,39 +293,49 @@ Random.seed!(1234) @test f(y) ≈ g(y_itensor) @test contract(f'(y)) ≈ g'(y_itensor) - f = - x -> inner(replaceprime(contract(x, y), 2 => 1), replaceprime(contract(x, y), 2 => 1)) - g = - x -> inner( - replaceprime(contract(x, y_itensor), 2 => 1), - replaceprime(contract(x, y_itensor), 2 => 1), - ) - @test f(x) ≈ g(x_itensor) - @test contract(f'(x)) ≈ g'(x_itensor) - - f = - y -> inner(replaceprime(contract(x, y), 2 => 1), replaceprime(contract(x, y), 2 => 1)) - g = - y -> inner( - replaceprime(contract(x_itensor, y), 2 => 1), - replaceprime(contract(x_itensor, y), 2 => 1), - ) - @test f(y) ≈ g(y_itensor) - @test contract(f'(y)) ≈ g'(y_itensor) - - f = x -> inner(replaceprime(*(x, y), 2 => 1), replaceprime(*(x, y), 2 => 1)) - g = - x -> - inner(replaceprime(*(x, y_itensor), 2 => 1), replaceprime(*(x, y_itensor), 2 => 1)) - @test f(x) ≈ g(x_itensor) - @test contract(f'(x)) ≈ g'(x_itensor) - - f = y -> inner(replaceprime(*(x, y), 2 => 1), replaceprime(*(x, y), 2 => 1)) - g = - y -> - inner(replaceprime(*(x_itensor, y), 2 => 1), replaceprime(*(x_itensor, y), 2 => 1)) - @test f(y) ≈ g(y_itensor) - @test contract(f'(y)) ≈ g'(y_itensor) + # These tests are broken in Julia v1.12. See: + # https://github.com/ITensor/ITensorMPS.jl/pull/161 + # https://github.com/JuliaLang/julia/issues/59138 + # https://github.com/FluxML/Zygote.jl/issues/1580 + if VERSION ≤ v"1.12-" + f = + x -> + inner(replaceprime(contract(x, y), 2 => 1), replaceprime(contract(x, y), 2 => 1)) + g = + x -> inner( + replaceprime(contract(x, y_itensor), 2 => 1), + replaceprime(contract(x, y_itensor), 2 => 1), + ) + @test f(x) ≈ g(x_itensor) + @test contract(f'(x)) ≈ g'(x_itensor) + + f = + y -> + inner(replaceprime(contract(x, y), 2 => 1), replaceprime(contract(x, y), 2 => 1)) + g = + y -> inner( + replaceprime(contract(x_itensor, y), 2 => 1), + replaceprime(contract(x_itensor, y), 2 => 1), + ) + @test f(y) ≈ g(y_itensor) + @test contract(f'(y)) ≈ g'(y_itensor) + + f = x -> inner(replaceprime(*(x, y), 2 => 1), replaceprime(*(x, y), 2 => 1)) + g = + x -> inner( + replaceprime(*(x, y_itensor), 2 => 1), replaceprime(*(x, y_itensor), 2 => 1) + ) + @test f(x) ≈ g(x_itensor) + @test contract(f'(x)) ≈ g'(x_itensor) + + f = y -> inner(replaceprime(*(x, y), 2 => 1), replaceprime(*(x, y), 2 => 1)) + g = + y -> inner( + replaceprime(*(x_itensor, y), 2 => 1), replaceprime(*(x_itensor, y), 2 => 1) + ) + @test f(y) ≈ g(y_itensor) + @test contract(f'(y)) ≈ g'(y_itensor) + end end @testset "Calling apply multiple times (ITensors #924 regression test)" begin n = 1