diff options
author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-11-05 17:31:10 +0100 |
---|---|---|
committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-11-05 17:31:10 +0100 |
commit | c60430fc1c5d90ae06d1fd019257474c8f395bef (patch) | |
tree | 3e54f263dd676b7e563d4a1388c5da122df59c1e /tensor.hpp | |
parent | 8209ca60b99594f26f3e9b21ccdbc8695526eb93 (diff) | |
download | code-c60430fc1c5d90ae06d1fd019257474c8f395bef.tar.gz code-c60430fc1c5d90ae06d1fd019257474c8f395bef.tar.bz2 code-c60430fc1c5d90ae06d1fd019257474c8f395bef.zip |
Lots of progress towards Hessian implementation.
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); +} |