diff options
| -rw-r--r-- | space_wolff.hpp | 41 | 
1 files changed, 21 insertions, 20 deletions
| diff --git a/space_wolff.hpp b/space_wolff.hpp index 6ac9788..4c02406 100644 --- a/space_wolff.hpp +++ b/space_wolff.hpp @@ -29,12 +29,12 @@ const std::array<std::array<unsigned, 16>, 16> smiley = {       {{0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}},       {{0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0}}}}; -template <class T, int D> using vector = Eigen::Matrix<T, D, 1>; +template <class U, unsigned D> using vector = Eigen::Matrix<U, D, 1>; -template <class T, int D> using matrix = Eigen::Matrix<T, D, D>; +template <class U, unsigned D> using matrix = Eigen::Matrix<U, D, D>; -template <class T, int D> vector<T, D> diff(T L, vector<T, D> v1, vector<T, D> v2) { -  vector<T, D> v; +template <class U, unsigned D> vector<U, D> diff(U L, vector<U, D> v1, vector<U, D> v2) { +  vector<U, D> v;    for (unsigned i = 0; i < D; i++) {      v(i) = std::abs(v1(i) - v2(i)); @@ -46,20 +46,20 @@ template <class T, int D> vector<T, D> diff(T L, vector<T, D> v1, vector<T, D> v    return v;  } -template <class T, int D, class state> class spin { +template <class U, unsigned D, class state> class spin {  public: -  vector<T, D> x; +  vector<U, D> x;    state s;  }; -template <class T, int D> class euclidean { +template <class U, unsigned D> class euclidean {  private: -  T L; +  U L;  public: -  vector<T, D> t; -  matrix<T, D> r; -  euclidean(T L) : L(L) { +  vector<U, D> t; +  matrix<U, D> r; +  euclidean(U L) : L(L) {      for (unsigned i = 0; i < D; i++) {        t(i) = 0;        r(i, i) = 1; @@ -69,13 +69,14 @@ public:      }    } -  euclidean(T L, vector<T, D> t0, matrix<T, D> r0) : L(L) { +  euclidean(U L, vector<U, D> t0, matrix<U, D> r0) : L(L) {      t = t0;      r = r0;    } -  template <class state> spin<T, D, state> act(const spin<T, D, state>& s) const { -    spin<T, D, state> s_new; +  template <class state> +  spin<U, D, state> act(const spin<U, D, state> &s) const { +    spin<U, D, state> s_new;      s_new.x = t + r * s.x;      s_new.s = s.s; @@ -88,8 +89,8 @@ public:    }    euclidean act(const euclidean& x) const { -    vector<T, D> tnew = r * x.t + t; -    matrix<T, D> rnew = r * x.r; +    vector<U, D> tnew = r * x.t + t; +    matrix<U, D> rnew = r * x.r;      for (unsigned i = 0; i < D; i++) {        tnew(i) = fmod(L + tnew(i), L); @@ -101,8 +102,8 @@ public:    }    euclidean inverse() const { -    vector<T, D> tnew = -r.transpose() * t; -    matrix<T, D> rnew = r.transpose(); +    vector<U, D> tnew = -r.transpose() * t; +    matrix<U, D> rnew = r.transpose();      euclidean pnew(this->L, tnew, rnew); @@ -110,7 +111,7 @@ public:    }  }; -template <class T, int D> class dictionary { +template <class T, unsigned D> class dictionary {  private:    unsigned N;    T L; @@ -243,7 +244,7 @@ public:    unsigned num_added() const { return n - wait; }  }; -template <class U, int D, class state> class model { +template <class U, unsigned D, class state> class model {  public:    U L;    euclidean<U, D> s0; | 
