summaryrefslogtreecommitdiff
path: root/tensor.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'tensor.hpp')
-rw-r--r--tensor.hpp18
1 files changed, 3 insertions, 15 deletions
diff --git a/tensor.hpp b/tensor.hpp
index aa33069..fc99042 100644
--- a/tensor.hpp
+++ b/tensor.hpp
@@ -111,27 +111,15 @@ Tensor<Scalar, p> plantState(const Tensor<Scalar, p>& J, const Vector<Scalar>& z
}
template <class Scalar>
-Matrix<Scalar> contractDown(const Tensor<Scalar, 2>& J, const Vector<Scalar>& z) {
- return Eigen::Map<const Matrix<Scalar>>(J.data(), z.size(), z.size());
+Tensor<Scalar, 3> contractDown(const Tensor<Scalar, 3>& J, const Vector<Scalar>& z) {
+ return J;
}
const std::array<Eigen::IndexPair<int>, 1> ip00 = {Eigen::IndexPair<int>(0, 0)};
template <class Scalar, int r>
-Matrix<Scalar> contractDown(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) {
+Tensor<Scalar, 3> contractDown(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) {
Tensor<Scalar, 1> zT = Eigen::TensorMap<Tensor<const Scalar, 1>>(z.data(), {z.size()});
Tensor<Scalar, r - 1> Jz = J.contract(zT, ip00);
return contractDown(Jz, z);
}
-
-template <int f, class Scalar>
-Tensor<Scalar, f> contractDownTo(const Tensor<Scalar, f>& J, const Vector<Scalar>& z) {
- return J;
-}
-
-template <int f, class Scalar, int r>
-Tensor<Scalar, f> contractDownTo(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) {
- Tensor<Scalar, 1> zT = Eigen::TensorMap<Tensor<const Scalar, 1>>(z.data(), {z.size()});
- Tensor<Scalar, r - 1> Jz = J.contract(zT, ip00);
- return contractDownTo<f>(Jz, z);
-}