Add compound with scalar operators for Jets.

Change-Id: Ie47771d8c9df22ddeb6b643ae8a751860d892d67
diff --git a/include/ceres/jet.h b/include/ceres/jet.h
index 27c39d3..934bc18 100644
--- a/include/ceres/jet.h
+++ b/include/ceres/jet.h
@@ -224,6 +224,27 @@
     return *this;
   }
 
+  // Compound with scalar operators.
+  Jet<T, N>& operator+=(const T& s) {
+    *this = *this + s;
+    return *this;
+  }
+
+  Jet<T, N>& operator-=(const T& s) {
+    *this = *this - s;
+    return *this;
+  }
+
+  Jet<T, N>& operator*=(const T& s) {
+    *this = *this * s;
+    return *this;
+  }
+
+  Jet<T, N>& operator/=(const T& s) {
+    *this = *this / s;
+    return *this;
+  }
+
   // The scalar part.
   T a;
 
diff --git a/internal/ceres/jet_test.cc b/internal/ceres/jet_test.cc
index 8576eb1..16d37c6 100644
--- a/internal/ceres/jet_test.cc
+++ b/internal/ceres/jet_test.cc
@@ -391,22 +391,34 @@
   { // Check that 1 + x == x + 1.
     J a = x + 1.0;
     J b = 1.0 + x;
+    J c = x;
+    c += 1.0;
 
     ExpectJetsClose(a, b);
+    ExpectJetsClose(a, c);
   }
 
   { // Check that 1 - x == -(x - 1).
     J a = 1.0 - x;
     J b = -(x - 1.0);
+    J c = x;
+    c -= 1.0;
 
     ExpectJetsClose(a, b);
+    ExpectJetsClose(a, -c);
   }
 
-  { // Check that x/s == x*s.
+  { // Check that (x/s)*s == (x*s)/s.
     J a = x / 5.0;
     J b = x * 5.0;
+    J c = x;
+    c /= 5.0;
+    J d = x;
+    d *= 5.0;
 
     ExpectJetsClose(5.0 * a, b / 5.0);
+    ExpectJetsClose(a, c);
+    ExpectJetsClose(b, d);
   }
 
   { // Check that x / y == 1 / (y / x).