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) {