diff options
Diffstat (limited to 'tensor.hpp')
-rw-r--r-- | tensor.hpp | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -123,3 +123,15 @@ Matrix<Scalar> contractDown(const Tensor<Scalar, r>& J, const Vector<Scalar>& z) 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); +} |