title: Why is this bearing calculation so inacurate?
body: <p>Is it even that inaccurate? I re-implented the whole thing with Apfloat arbitrary precision and it made no difference which I should have known to start with!!</p>
  
  <pre><code>public static double bearing(LatLng latLng1, LatLng latLng2) {
   double deltaLong = toRadians(latLng2.longitude - latLng1.longitude);
  
   double lat1 = toRadians(latLng1.latitude);
   double lat2 = toRadians(latLng2.latitude);
  
   double y = sin(deltaLong) * cos(lat2);
   double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(deltaLong);
   double result = toDegrees(atan2(y, x));
   return (result + 360.0) % 360.0;
  }
  
  @Test
   public void testBearing() {
  
    LatLng first = new LatLng(36.0, 174.0);
    LatLng second = new LatLng(36.0, 175.0);
    assertEquals(270.0, LatLng.bearing(second, first), 0.005);
    assertEquals(90.0, LatLng.bearing(first, second), 0.005);
   }
  </code></pre>
  
  <p>The first assertion in the test gives this:</p>
  
  <blockquote>
    <p>java.lang.AssertionError:
    expected:&lt;270.0> but
    was:&lt;270.29389750911355></p>
  </blockquote>
  
  <p>0.29 seems to quite a long way off? Is this the formula i chose to implement?</p>