summaryrefslogtreecommitdiff
path: root/tensor.hpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2021-01-05 11:20:03 +0100
committerJaron Kent-Dobias <jaron@kent-dobias.com>2021-01-05 11:20:03 +0100
commitc0cbb233d16306fec19c7c4325d61ae4b1248c1c (patch)
treebce665ba5c4e43336adf44b9f36361c212049557 /tensor.hpp
parent40499ac858485c63b64b0ecaa892b10b62dbe8a7 (diff)
downloadcode-c0cbb233d16306fec19c7c4325d61ae4b1248c1c.tar.gz
code-c0cbb233d16306fec19c7c4325d61ae4b1248c1c.tar.bz2
code-c0cbb233d16306fec19c7c4325d61ae4b1248c1c.zip
Ran clang-format.
Diffstat (limited to 'tensor.hpp')
-rw-r--r--tensor.hpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/tensor.hpp b/tensor.hpp
index 8345d83..9e860d9 100644
--- a/tensor.hpp
+++ b/tensor.hpp
@@ -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);
}