class MPS_Tensor
#include <MPSTensor.h>
class MPS_Tensor
{
public:
// fields
std::vector<cmatrix_t> m_physical_index;
// construction
MPS_Tensor();
MPS_Tensor(
const cmatrix_t& data0,
const cmatrix_t& data1
);
// methods
size_t get_dim() const;
std::vector<cmatrix_t> get_data() const;
cmatrix_t get_data(size_t i) const;
void apply_swap();
void apply_matrix(
const cmatrix_t& mat,
bool swapped = false
);
void mul_gamma_by_left_lambda(const rvector_t& Lambda);
void mul_gamma_by_right_lambda(const rvector_t& Lambda);
void div_gamma_by_left_lambda(const rvector_t& Lambda);
void div_gamma_by_right_lambda(const rvector_t& Lambda);
void apply_pauli(GateType gate);
static MPS_Tensor contract(
const MPS_Tensor& left_gamma,
const rvector_t& lambda,
const MPS_Tensor& right_gamma
);
static void decompose(
MPS_Tensor& temp,
MPS_Tensor& left_gamma,
rvector_t& lambda,
MPS_Tensor& right_gamma
);
static void contract_2_dimensions(
const MPS_Tensor& left_gamma,
const MPS_Tensor& right_gamma,
cmatrix_t& result
);
};