This is a major reorganization with the C library put into its own git repository, https://github.com/geographiclib/geographiclib-c. Despite this, there are only reasonably minor changes to the library itself.
Fix bug where the solution of the inverse geodesic problem with φ1 = 0 and φ2 = nan was treated as equatorial.
Add documentation and an example of using solving geodesic problems with PROJ.
More careful treatment of ±0° and ±180°.
These behave consistently with taking the limits
±0 means ±ε as ε → 0+
±180 means ±(180 − ε) as ε → 0+
As a consequence, azimuths of +0° and +180° are reckoned to be east-going, as far as tracking the longitude with GEOD_LONG_UNROLL and the area goes, while azimuths −0° and −180° are reckoned to be west-going.
When computing longitude differences, if λ2 − λ1 = ±180° (mod 360°), then the sign is picked depending on the sign of the difference.
The normal range for returned longitudes and azimuths is [−180°, 180°].
A separate test suite geodsigntest has been added to check this treatment.
Allow arbitrarily complex polygons in geod_polygon_*. In the case of self-intersecting polygons the area is accumulated "algebraically", e.g., the areas of the 2 loops in a figure-8 polygon will partially cancel.
Workaround bugs in fmod and sin in Visual Studio 10, 11, and 12 and relax delta for GeodSolve59 in geodtest (tagged v1.49.1-c).
Fix bug in geod_polygon_addedge which caused the count of pole encirclings to be wrong, sometimes resulting in an incorrect area if a polygon vertex had longitude = 0 (tagged v1.49.2-c).
This is the version incorporated into proj.4 version 4.9.2.
Improve accuracy of calculations by evaluating trigonometric functions more carefully and replacing the series for the reduced length with one with a smaller truncation error.
The allowed ranges for longitudes and azimuths is now unlimited; it used to be [−540°, 540°).
Enforce the restriction of latitude to [−90°, 90°] by returning NaNs if the latitude is outside this range.
The inverse calculation sets s12 to zero for coincident points at pole (instead of returning a tiny quantity).