1#ifndef __EVTSPINAMP_HH__
2#define __EVTSPINAMP_HH__
26 EvtSpinAmp(
const vector<EvtSpinType::spintype>& twospin );
28 EvtSpinAmp(
const vector<EvtSpinType::spintype>& twospin,
const vector<EvtComplex>& elem );
62 int rank()
const {
return _twospin.size(); }
65 const vector<int>&
dims()
const {
return _twospin; }
69 void addspin(
int twospin ) { _twospin.push_back( twospin ); }
70 void setelem(
const vector<EvtComplex>& elem ) { _elem = elem; }
72 bool iterate( vector<int>& index )
const;
75 bool allowed(
const vector<int>& index )
const;
80 void checkindexargs(
const vector<int>& index )
const;
81 void checktwospin(
const vector<int>& twospin )
const;
82 int findtrueindex(
const vector<int>& index )
const;
83 vector<int> calctwospin(
const vector<EvtSpinType::spintype>&
type )
const;
85 vector<EvtSpinType::spintype> _type;
87 vector<EvtComplex> _elem;
EvtSpinAmp operator*(const EvtComplex &, const EvtSpinAmp &)
EvtSpinAmp operator/(const EvtSpinAmp &, const EvtComplex &)
friend std::ostream & operator<<(std::ostream &, const EvtSpinAmp &)
EvtComplex & operator()(const vector< int > &)
EvtSpinAmp & operator-=(const EvtSpinAmp &)
EvtSpinAmp & operator=(const EvtSpinAmp &)
vector< int > iterinit() const
void assign(const EvtComplex &val)
bool iterate(vector< int > &index) const
void addspin(int twospin)
bool iterateallowed(vector< int > &index) const
EvtSpinAmp & operator*=(const EvtSpinAmp &)
EvtSpinAmp operator+(const EvtSpinAmp &) const
vector< int > iterallowedinit() const
EvtSpinAmp & operator+=(const EvtSpinAmp &)
bool allowed(const vector< int > &index) const
void setelem(const vector< EvtComplex > &elem)
EvtSpinAmp & operator/=(const EvtComplex &)
friend EvtSpinAmp operator*(const EvtComplex &, const EvtSpinAmp &)
void extcont(const EvtSpinAmp &, int, int)
EvtSpinAmp operator-(const EvtSpinAmp &) const
friend EvtSpinAmp operator/(const EvtSpinAmp &, const EvtComplex &)
const vector< int > & dims() const