This is a major reorganization with the Fortran library put into its own git repository, https://github.com/geographiclib/geographiclib-fortran. 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.
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 the unroll* flag set 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 area. 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.
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°).
The sample programs, geoddirect and geodinverse, enforce the restriction of latitude to [−90°, 90°].
The inverse calculation sets s12 to zero for coincident points at pole (instead of returning a tiny quantity).