summaryrefslogtreecommitdiff
path: root/tensor.hpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2021-01-07 11:23:20 +0100
committerJaron Kent-Dobias <jaron@kent-dobias.com>2021-01-07 11:23:20 +0100
commit2316044fd02bf22b5b6c0f414874dada2c7603e4 (patch)
tree4a44c9324a58bfa4d297e254aaf2cc9e63473663 /tensor.hpp
parent71e7c3a86a8ea99045f564a52535ed08c4172451 (diff)
downloadcode-2316044fd02bf22b5b6c0f414874dada2c7603e4.tar.gz
code-2316044fd02bf22b5b6c0f414874dada2c7603e4.tar.bz2
code-2316044fd02bf22b5b6c0f414874dada2c7603e4.zip
Implemented some lazy optimizations and C++17isms.
Diffstat (limited to 'tensor.hpp')
-rw-r--r--tensor.hpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/tensor.hpp b/tensor.hpp
index 41be3fd..f442f87 100644
--- a/tensor.hpp
+++ b/tensor.hpp
@@ -55,12 +55,12 @@ contractDown(const Eigen::Tensor<Scalar, 2>& J, const Eigen::Matrix<Scalar, Eige
return Eigen::Map<const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>>(J.data(), z.size(), z.size());
}
+const std::array<Eigen::IndexPair<int>, 1> ip00 = {Eigen::IndexPair<int>(0, 0)};
+
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::Tensor<Scalar, r - 1> Jz = J.contract(zT, ip);
+ Eigen::Tensor<Scalar, 1> zT = Eigen::TensorMap<Eigen::Tensor<const Scalar, 1>>(z.data(), {z.size()});
+ Eigen::Tensor<Scalar, r - 1> Jz = J.contract(zT, ip00);
return contractDown(Jz, z);
}