diff --git a/exercises/ex03_solution/trising_cpp/Makefile b/exercises/ex03_solution/trising_cpp/Makefile index e185a516ebe196b58364364c6c0f1253fd332cb4..388677d7f96084bc34a0d3dd20714fee9fb242de 100644 --- a/exercises/ex03_solution/trising_cpp/Makefile +++ b/exercises/ex03_solution/trising_cpp/Makefile @@ -8,3 +8,5 @@ magnetization.txt: trFieldIsingTimeEvolution.x trFieldIsingTimeEvolution.x: trFieldIsingTimeEvolution.cpp g++ -O2 -o trFieldIsingTimeEvolution.x trFieldIsingTimeEvolution.cpp +clean: + rm -f magnetization.png magnetization.txt trFieldIsingTimeEvolution.x diff --git a/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp b/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp index e34750ce94c8808b0a5ef1da2abe01c996bf1c96..6b4360cda38c655549b0c5697357a418ffa26d2d 100644 --- a/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp +++ b/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp @@ -32,7 +32,7 @@ param_vector_t precomputeCosines(const param_vector_t &hx, double dt){ for(int r = 0; r<hx.size(); ++r){ res[r] = std::cos(dt*hx[r]); } - + return res; } @@ -42,7 +42,7 @@ Vector precomputeSines(const param_vector_t &hx, double dt){ for(int r = 0; r<hx.size(); ++r){ res[r] = I * std::sin(dt*hx[r]); } - + return res; } @@ -57,7 +57,7 @@ void tstep_diag(unsigned l, const param_vector_t &j, double dt, Vector& x) for( int r = 0; r < l - 1; ++r ) { jtotal += ((s >> r)^(s >> (r+1)))&1 ? -j[r] : j[r]; // check if spins are parallel at site r and r+1 - } + } x[s] *= std::exp(I*jtotal*dt); } } @@ -80,7 +80,7 @@ void evolve(unsigned l, const param_vector_t &j, const param_vector_t &hx, doubl template <class Vector> void printMagnetization(unsigned l, const Vector& v, std::ostream& outputStream) -{ +{ state_t dim = 1 << l; for(int r=0; r<l; r++){ double m(0); @@ -107,14 +107,14 @@ int main(){ // Starting configuration state_t initialInd = 1<<5; state_vector_t x(0., 1 << l); - x[initialInd] = 1; + x[initialInd] = 1; printMagnetization(l,x,std::cout); // Do time evolution - for(int n=1; n<=nmeas; ++n){ + for(int n=1; n<=nmeas; ++n){ evolve(l, j, hx, dt, nstep, x); - printMagnetization(l,x,std::cout); + printMagnetization(l,x,std::cout); } - + return 0; } diff --git a/exercises/ex04_solution/heised_cpp/heised.cpp b/exercises/ex04_solution/heised_cpp/heised.cpp index cdea1fe1fd9e77812356729e0fff0c0d8bbaffd4..aafd46fd268bf95a45bfd357f5bad03e707eb046 100644 --- a/exercises/ex04_solution/heised_cpp/heised.cpp +++ b/exercises/ex04_solution/heised_cpp/heised.cpp @@ -21,8 +21,9 @@ class SpinHalfBasis { public: enum { NOT_FOUND=-1 }; - typedef unsigned State; - typedef unsigned Index; + typedef unsigned int State; + //~ typedef unsigned int Index; // C++ 98/03 + using Index = unsigned int; // C++ 11/14/17/... SpinHalfBasis(unsigned l, unsigned nups);