diff options
| author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-01-05 11:20:03 +0100 | 
|---|---|---|
| committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-01-05 11:20:03 +0100 | 
| commit | c0cbb233d16306fec19c7c4325d61ae4b1248c1c (patch) | |
| tree | bce665ba5c4e43336adf44b9f36361c212049557 /tensor.hpp | |
| parent | 40499ac858485c63b64b0ecaa892b10b62dbe8a7 (diff) | |
| download | code-c0cbb233d16306fec19c7c4325d61ae4b1248c1c.tar.gz code-c0cbb233d16306fec19c7c4325d61ae4b1248c1c.tar.bz2 code-c0cbb233d16306fec19c7c4325d61ae4b1248c1c.zip | |
Ran clang-format.
Diffstat (limited to 'tensor.hpp')
| -rw-r--r-- | tensor.hpp | 22 | 
1 files changed, 14 insertions, 8 deletions
| @@ -2,13 +2,14 @@  #include <algorithm>  #include <array> -#include <utility>  #include <eigen3/unsupported/Eigen/CXX11/Tensor> +#include <utility>  #include "factorial.hpp"  template <class Scalar, unsigned p, std::size_t... Indices> -void setJ(Scalar z, Eigen::Tensor<Scalar, p>& J, const std::array<unsigned, p>& is, std::index_sequence<Indices...>) { +void setJ(Scalar z, Eigen::Tensor<Scalar, p>& J, const std::array<unsigned, p>& is, +          std::index_sequence<Indices...>) {    J(std::get<Indices>(is)...) = z;  } @@ -20,7 +21,8 @@ Eigen::Tensor<Scalar, p> initializeJ(unsigned N, std::index_sequence<Indices...>  }  template <class Scalar, unsigned p, class Distribution, class Generator> -void populateCouplings(Eigen::Tensor<Scalar, p>& J, unsigned N, unsigned l, std::array<unsigned, p> is, Distribution d, Generator& r) { +void populateCouplings(Eigen::Tensor<Scalar, p>& J, unsigned N, unsigned l, +                       std::array<unsigned, p> is, Distribution d, Generator& r) {    if (l == 0) {      Scalar z = d(r);      do { @@ -52,14 +54,18 @@ Eigen::Tensor<Scalar, p> generateCouplings(unsigned N, Distribution d, Generator  }  template <class Scalar> -Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> contractDown(const Eigen::Tensor<Scalar, 2>& J, const Eigen::Matrix<Scalar, Eigen::Dynamic, 1>& z) { -  return Eigen::Map<const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>>(J.data(), z.size(), z.size()); +Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> +contractDown(const Eigen::Tensor<Scalar, 2>& J, const Eigen::Matrix<Scalar, Eigen::Dynamic, 1>& z) { +  return Eigen::Map<const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>>(J.data(), z.size(), +                                                                                 z.size());  }  template <class Scalar, int r> -Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> contractDown(const Eigen::Tensor<Scalar, r>& J, const Eigen::Matrix<Scalar, Eigen::Dynamic, 1>& z) { -  Eigen::Tensor<Scalar, 1> zT = Eigen::TensorMap<Eigen::Tensor<const Scalar, 1>>(z.data(), {z.size()}); -  std::array<Eigen::IndexPair<int>, 1> ip = {Eigen::IndexPair<int>(0,0)}; +Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> +contractDown(const Eigen::Tensor<Scalar, r>& J, const Eigen::Matrix<Scalar, Eigen::Dynamic, 1>& z) { +  Eigen::Tensor<Scalar, 1> zT = +      Eigen::TensorMap<Eigen::Tensor<const Scalar, 1>>(z.data(), {z.size()}); +  std::array<Eigen::IndexPair<int>, 1> ip = {Eigen::IndexPair<int>(0, 0)};    Eigen::Tensor<Scalar, r - 1> Jz = J.contract(zT, ip);    return contractDown(Jz, z);  } | 
