36 template<
class Matrix,
class SymmGroup>
39 std::size_t Mmax,
double cutoff,
45 typedef typename alps::numeric::associated_real_diagonal_matrix<Matrix>::type dmt;
52 mps[p].replace_left_paired(u,
Lnorm);
55 mps[p+1].replace_right_paired(u);
60 template<
class Matrix,
class SymmGroup>
63 std::size_t Mmax,
double cutoff,
69 typedef typename alps::numeric::associated_real_diagonal_matrix<Matrix>::type dmt;
76 mps[p+1].replace_right_paired(v,
Rnorm);
79 mps[p].replace_left_paired(v);
84 template<
class Matrix,
class SymmGroup>
86 std::size_t Mmax,
double cutoff,
91 mps[p].make_left_paired();
92 mps[p+1].make_right_paired();
99 template<
class Matrix,
class SymmGroup>
102 std::size_t Mmax,
double cutoff,
103 bool verbose =
false)
105 std::size_t L = mps.
length();
106 std::vector<double> ret;
112 if (verbose) maquis::cout <<
"Compressing @ ";
113 for (std::size_t p = 1; p < L; ++p)
116 maquis::cout << p <<
" ";
117 maquis::cout.flush();
125 mps[p+1].multiply_from_left(t);
127 maquis::cout <<
"Norm reduction: " <<
trace(t) << std::endl;
133 template<
class Matrix,
class SymmGroup>
136 std::size_t Mmax,
double cutoff,
137 bool verbose =
false)
139 std::size_t L = mps.
length();
140 std::vector<double> ret;
146 if (verbose) maquis::cout <<
"Compressing @ ";
147 for (std::size_t p = L-1; p > 0; --p)
150 maquis::cout << p <<
" ";
151 maquis::cout.flush();
159 mps[p-2].multiply_from_right(t);
161 maquis::cout <<
"Norm reduction: " <<
trace(t) << std::endl;
static void compress_two_sites(MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, std::size_t p)
declaration of the MPS class (vector of MPSTensor)
static truncation_results replace_two_sites_l2r(MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, block_matrix< Matrix, SymmGroup > const &t, std::size_t p)
static MPS< Matrix, SymmGroup > r2l_compress(MPS< Matrix, SymmGroup > mps, std::size_t Mmax, double cutoff, bool verbose=false)
block_matrix< Matrix, SymmGroup >::scalar_type trace(block_matrix< Matrix, SymmGroup > const &m)
include one of the Index class definitions
truncation_results svd_truncate(block_matrix< Matrix, SymmGroup > const &M, block_matrix< Matrix, SymmGroup > &U, block_matrix< Matrix, SymmGroup > &V, block_matrix< DiagMatrix, SymmGroup > &S, double rel_tol, std::size_t Mmax, bool verbose=true)
static truncation_results replace_two_sites_r2l(MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, block_matrix< Matrix, SymmGroup > const &t, std::size_t p)
functions to reshape the representation of data in MPSTensor
void gemm(block_matrix< Matrix1, SymmGroup > const &A, block_matrix< Matrix2, SymmGroup > const &B, block_matrix< Matrix3, SymmGroup > &C)
void canonize(size_t center, DecompMethod method=DefaultSolver())
static MPS< Matrix, SymmGroup > l2r_compress(MPS< Matrix, SymmGroup > mps, std::size_t Mmax, double cutoff, bool verbose=false)