reuse expm1 result for differential

We can reuse the expm1 result to compute the differential and eliminate
the extra exp call.

Change-Id: Ibd4f0564ab6da99fc23fbf6462408cfc3408fda1
diff --git a/include/ceres/jet.h b/include/ceres/jet.h
index 4f3b144..62e9828 100644
--- a/include/ceres/jet.h
+++ b/include/ceres/jet.h
@@ -490,7 +490,9 @@
 // expm1(a + h) ~= expm1(a) + exp(a) h
 template <typename T, int N>
 inline Jet<T, N> expm1(const Jet<T, N>& f) {
-  return Jet<T, N>(expm1(f.a), exp(f.a) * f.v);
+  const T tmp = expm1(f.a);
+  const T expa = tmp + T(1.0);  // exp(a) = expm1(a) + 1
+  return Jet<T, N>(tmp, expa * f.v);
 }
 
 // sqrt(a + h) ~= sqrt(a) + h / (2 sqrt(a))