Template jacobian.h on Scalar type
This makes it so that we can run numerical Jacobian calculations on
single-precision floats when we want to.
Change-Id: If45ea95366a772883872321c99c14acc8eec7eca
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/frc971/control_loops/jacobian_test.cc b/frc971/control_loops/jacobian_test.cc
index 5606004..92a15a3 100644
--- a/frc971/control_loops/jacobian_test.cc
+++ b/frc971/control_loops/jacobian_test.cc
@@ -19,17 +19,17 @@
// Test that we can recover A from AxBufn pretty accurately.
TEST(RungeKuttaTest, Ax) {
- ::Eigen::Matrix<double, 4, 4> NewA =
- NumericalJacobianX<4, 2>(AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
- ::Eigen::Matrix<double, 2, 1>::Zero());
+ ::Eigen::Matrix<double, 4, 4> NewA = NumericalJacobianX<4, 2, double>(
+ AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
+ ::Eigen::Matrix<double, 2, 1>::Zero());
EXPECT_TRUE(NewA.isApprox(A));
}
// Test that we can recover B from AxBufn pretty accurately.
TEST(RungeKuttaTest, Bu) {
- ::Eigen::Matrix<double, 4, 2> NewB =
- NumericalJacobianU<4, 2>(AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
- ::Eigen::Matrix<double, 2, 1>::Zero());
+ ::Eigen::Matrix<double, 4, 2> NewB = NumericalJacobianU<4, 2, double>(
+ AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
+ ::Eigen::Matrix<double, 2, 1>::Zero());
EXPECT_TRUE(NewB.isApprox(B));
}