@@ -4,12 +4,17 @@ function rescale(tn::AbstractITensorNetwork; alg="exact", kwargs...)
44 return rescale (Algorithm (alg), tn; kwargs... )
55end
66
7- function rescale (alg:: Algorithm"exact" , tn:: AbstractITensorNetwork ; kwargs... )
7+ function rescale (
8+ alg:: Algorithm"exact" ,
9+ tn:: AbstractITensorNetwork ;
10+ verts_to_rescale= collect (vertices (tn)),
11+ kwargs... ,
12+ )
813 logn = logscalar (alg, tn; kwargs... )
914 vs = collect (vertices (tn))
10- c = inv (exp (logn / length (vs )))
15+ c = inv (exp (logn / length (verts_to_rescale )))
1116 tn = copy (tn)
12- for v in vs
17+ for v in verts_to_rescale
1318 tn[v] *= c
1419 end
1520 return tn
@@ -45,7 +50,11 @@ function LinearAlgebra.normalize(
4550 alg:: Algorithm"exact" , tn:: AbstractITensorNetwork ; kwargs...
4651)
4752 norm_tn = inner_network (tn, tn)
48- return ket_network (rescale (alg, norm_tn; kwargs... ))
53+ vs = collect (vertices (tn))
54+ verts_to_rescale = vcat (
55+ [ket_vertex (norm_tn, v) for v in vs], [bra_vertex (norm_tn, v) for v in vs]
56+ )
57+ return ket_network (rescale (alg, norm_tn; verts_to_rescale, kwargs... ))
4958end
5059
5160function LinearAlgebra. normalize (
0 commit comments