Add test for Bessel functions.
Change-Id: Ief5881e8027643d7ef627e60a88fdbad17f3d884
diff --git a/internal/ceres/jet_test.cc b/internal/ceres/jet_test.cc
index ec43ef9..636018a 100644
--- a/internal/ceres/jet_test.cc
+++ b/internal/ceres/jet_test.cc
@@ -441,6 +441,34 @@
ExpectJetsClose(sin(asin(b)), b);
ExpectJetsClose(asin(sin(b)), b);
}
+
+ {
+ J zero = J(0.0);
+
+ // Check that J0(0) == 1.
+ ExpectJetsClose(BesselJ0(zero), J(1.0));
+
+ // Check that J1(0) == 0.
+ ExpectJetsClose(BesselJ1(zero), zero);
+
+ // Check that J2(0) == 0.
+ ExpectJetsClose(BesselJn(2, zero), zero);
+
+ // Check that J3(0) == 0.
+ ExpectJetsClose(BesselJn(3, zero), zero);
+
+ J z = MakeJet(0.1, -2.7, 1e-3);
+
+ // Check that J0(z) == Jn(0,z).
+ ExpectJetsClose(BesselJ0(z), BesselJn(0, z));
+
+ // Check that J1(z) == Jn(1,z).
+ ExpectJetsClose(BesselJ1(z), BesselJn(1, z));
+
+ // Check that J0(z)+J2(z) == (2/z)*J1(z).
+ // See formula http://dlmf.nist.gov/10.6.E1
+ ExpectJetsClose(BesselJ0(z) + BesselJn(2, z), (2.0 / z) * BesselJ1(z));
+ }
}
TEST(Jet, JetsInEigenMatrices) {