From 541243f05f0830fab7dd874ce047bfe3bbe5cc4b Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Tue, 5 Jan 2021 11:30:23 +0100 Subject: Slightly better treatement of the global constant. --- langevin.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/langevin.cpp b/langevin.cpp index d704266..119a64b 100644 --- a/langevin.cpp +++ b/langevin.cpp @@ -13,13 +13,13 @@ #include "complex_normal.hpp" #include "tensor.hpp" -#define P_SPIN_P 3 -const unsigned p = P_SPIN_P; +#define PSPIN_P 3 +const unsigned p = PSPIN_P; // polynomial degree of Hamiltonian using Scalar = std::complex; using Vector = Eigen::VectorXcd; using Matrix = Eigen::MatrixXcd; -using Tensor = Eigen::Tensor; +using Tensor = Eigen::Tensor; using Rng = randutils::random_generator; @@ -40,9 +40,11 @@ std::tuple hamGradHess(const Tensor& J, const Vector& z) Matrix Jz = contractDown(J, z); Vector Jzz = Jz * z; - Matrix hessian = ((p - 1) * (double)p / factorial(p)) * Jz; - Vector gradient = ((double)p / factorial(p)) * Jzz; - Scalar hamiltonian = (1.0 / factorial(p)) * Jzz.dot(z); + double f = factorial(p); + + Matrix hessian = ((p - 1) * p / f) * Jz; + Vector gradient = (p / f) * Jzz; + Scalar hamiltonian = (1 / f) * Jzz.dot(z); return {hamiltonian, gradient, hessian}; } @@ -142,7 +144,7 @@ int main(int argc, char* argv[]) { Rng r; complex_normal_distribution<> d(0, σ, κ); - Tensor J = generateCouplings(N, d, r.engine()); + Tensor J = generateCouplings(N, d, r.engine()); Vector z = initializeVector(N, r); std::function findSaddle = [δ](double W, unsigned) { -- cgit v1.2.3-70-g09d2