@@ -240,22 +240,22 @@ end
240240 @test_throws DimensionMismatch error_contract (phi, K, badpsi)
241241 end
242242
243- @testset " contract" begin
243+ @testset " contract(::MPO, ::MPS) " for method in [ " densitymatrix " , " naive " , " zipup " ]
244244 phi = random_mps (sites)
245245 K = random_mpo (sites)
246246 @test maxlinkdim (K) == 1
247247 psi = random_mps (sites)
248- psi_out = contract (K, psi; maxdim= 1 )
248+ psi_out = contract (K, psi; method, maxdim= 1 )
249249 @test inner (phi' , psi_out) ≈ inner (phi' , K, psi)
250- psi_out = contract (psi, K; maxdim= 1 )
250+ psi_out = contract (psi, K; method, maxdim= 1 )
251251 @test inner (phi' , psi_out) ≈ inner (phi' , K, psi)
252252 psi_out = psi * K
253253 @test inner (phi' , psi_out) ≈ inner (phi' , K, psi)
254254 @test_throws MethodError contract (K, psi; method= " fakemethod" )
255255
256256 badsites = [Index (2 , " Site" ) for n in 1 : (N + 1 )]
257257 badpsi = random_mps (badsites)
258- @test_throws DimensionMismatch contract (K, badpsi)
258+ @test_throws DimensionMismatch contract (K, badpsi; method )
259259
260260 # make bigger random MPO...
261261 for link_dim in 2 : 5
287287 orthogonalize! (psi, 1 ; maxdim= link_dim)
288288 orthogonalize! (K, 1 ; maxdim= link_dim)
289289 orthogonalize! (phi, 1 ; normalize= true , maxdim= link_dim)
290- psi_out = contract (deepcopy (K), deepcopy (psi); maxdim= 10 * link_dim, cutoff= 0.0 )
290+ psi_out = contract (deepcopy (K), deepcopy (psi); method, maxdim= 10 * link_dim, cutoff= 0.0 )
291291 @test inner (phi' , psi_out) ≈ inner (phi' , K, psi)
292292 end
293293 end
@@ -354,14 +354,14 @@ end
354354 @test maxlinkdim (H) ≤ maxlinkdim (H₁) + maxlinkdim (H₂)
355355 end
356356
357- @testset " contract(::MPO, ::MPO)" begin
357+ @testset " contract(::MPO, ::MPO)" for alg in [ " naive " , " zipup " ]
358358 psi = random_mps (sites)
359359 K = random_mpo (sites)
360360 L = random_mpo (sites)
361361 @test maxlinkdim (K) == 1
362362 @test maxlinkdim (L) == 1
363- KL = contract (prime (K), L; maxdim= 1 )
364- psi_kl_out = contract (prime (K), contract (L, psi; maxdim= 1 ); maxdim= 1 )
363+ KL = contract (prime (K), L; alg, maxdim= 1 )
364+ psi_kl_out = contract (prime (K), contract (L, psi; alg, maxdim= 1 ); alg, maxdim= 1 )
365365 @test inner (psi'' , KL, psi) ≈ inner (psi'' , psi_kl_out) atol = 5e-3
366366
367367 # where both K and L have differently labelled sites
@@ -373,15 +373,15 @@ end
373373 replaceind! (K[ii], sites[ii]' , othersitesk[ii])
374374 replaceind! (L[ii], sites[ii]' , othersitesl[ii])
375375 end
376- KL = contract (K, L; maxdim= 1 )
376+ KL = contract (K, L; alg, maxdim= 1 )
377377 psik = random_mps (othersitesk)
378378 psil = random_mps (othersitesl)
379- psi_kl_out = contract (K, contract (L, psil; maxdim= 1 ); maxdim= 1 )
379+ psi_kl_out = contract (K, contract (L, psil; alg, maxdim= 1 ); alg, maxdim= 1 )
380380 @test inner (psik, KL, psil) ≈ inner (psik, psi_kl_out) atol = 5e-3
381381
382382 badsites = [Index (2 , " Site" ) for n in 1 : (N + 1 )]
383383 badL = random_mpo (badsites)
384- @test_throws DimensionMismatch contract (K, badL)
384+ @test_throws DimensionMismatch contract (K, badL; alg )
385385 end
386386
387387 @testset " *(::MPO, ::MPO)" begin
0 commit comments