13 namespace doci {
class DM2; }
26 friend std::ostream &::operator<<(std::ostream &,
doci::DM2 &);
29 DM2(
unsigned int,
unsigned int);
31 DM2(
const Molecule &);
37 virtual ~DM2() =
default;
57 void Build(Permutation &, std::vector<double> &);
61 double Dot(
const DM2 &)
const;
65 std::pair<double,bool>
find_min_angle(
int k,
int l,
double start_angle, std::function<
double(
int,
int)> &T, std::function<
double(
int,
int,
int,
int)> &V)
const;
67 double calc_rotate(
int k,
int l,
double theta, std::function<
double(
int,
int)> &T, std::function<
double(
int,
int,
int,
int)> &V)
const;
71 void build_iter(Permutation& , std::vector<double> &,
unsigned int ,
unsigned int ,
DM2 &);
73 void fill_lists(
unsigned int);
76 static std::unique_ptr<helpers::matrix> sp2tp;
79 static std::unique_ptr<helpers::matrix> tp2sp;
82 std::unique_ptr<helpers::matrix> block;
85 std::vector<double> diag;
std::pair< double, bool > find_min_angle(int k, int l, double start_angle, std::function< double(int, int)> &T, std::function< double(int, int, int, int)> &V) const
static DM2 ReadFromFile(const std::string)
double calc_rotate(int k, int l, double theta, std::function< double(int, int)> &T, std::function< double(int, int, int, int)> &V) const
void WriteToFile(const std::string) const
double operator()(int, int, int, int) const
unsigned int get_n_sp() const
void Build(Permutation &, std::vector< double > &)
void BuildHamiltonian(const Molecule &)
DM2(unsigned int, unsigned int)
std::ostream & operator<<(std::ostream &, doci::DM2 &)
DM2 & operator=(const DM2 &)
unsigned int get_n_electrons() const
double Dot(const DM2 &) const
DM2 & operator+=(const DM2 &)