[Geographiclib-announce] GeographicLib 1.44 (released 2015-08-14)
Geographic library
Brought to you by:
karney
|
From: Charles K. <cha...@sr...> - 2015-08-14 22:07:11
|
Changes between 1.44 (released 2015-08-14) and 1.43 versions:
* Various changes to improve accuracy, e.g., by minimizing round-off
errors:
+ Add Math::sincosd, Math::sind, Math::cosd which take their
arguments in degrees. These functions do exact range reduction
and thus they obey exactly the elementary properties of the
trigonometric functions, e.g., sin 9d = cos 81d =
- sin 123456789d.
+ Math::AngNormalize now works for any angles, instead of angles in
the range [-540d, 540d); the function Math::AngNormalize2 is now
deprecated.
+ This means that there is now no restriction on longitudes and
azimuths; any values can be used.
+ Improve the accuracy of Math::atan2d.
+ DMS::Decode avoids unnecessary round-off errors; thus 7:33:36 and
7.56 result in identical values. DMS::Encode rounds ties to even.
These changes have also been made to DMS.js.
+ More accurate rounding in MGRS::Reverse and mgrs_inv.m; this
change only makes a difference at sub-meter precisions.
+ With MGRS::Forward and mgrs_fwd.m, ensure that digits in lower
precision results match those at higher precision; as a result,
strings of trailing 9s are less likely to be generated. This
change only makes a difference at sub-meter precisions.
+ Replace the series for A2 in the Geodesic class with one with
smaller truncation errors.
+ Geodesic::Inverse sets s12 to zero for coincident points at pole
(instead of returning a tiny quantity).
+ Math::LatFix returns its argument if it is in [-90d, 90d]; if not,
it returns NaN.
+ Using Math::LatFix, routines which don't check their arguments now
interpret a latitude outside the legal range of [-90d, 90d] as a
NaN; such routines will return NaNs instead of finite but
incorrect results; caution: code that (dangerously) relied on the
"reasonable" results being returned for values of the latitude
outside the allowed range will now malfunction.
* All the utility programs accept the -w option to swap the
latitude-longitude order on input and output (and where appropriate
on the command-line arguments). CartConvert now accepts the -p
option to set the precision; now all of the utilities except
GeoidEval accept -p.
* Add classes for GARS, the Global Area Reference System, and for
Georef, the World Geographic Reference System.
* Changes to DMS::Decode and DMS.js:
+ tighten up the rules:
o 30:70.0 and 30:60 are illegal (minutes and second must be
strictly less than 60), however
o 30:60.0 and 30:60. are legal (floating point 60 is OK, since it
might have been generated by rounding 59.99...);
+ generalize a+b concept, introduced in version 1.42, to any number
of pieces; thus 8+0:40-0:0:10 is interpreted as 8:39:50.
* Documentation fixes:
+ update man pages to refer to GeoConvert(1) on handling of
geographic coordinates;
+ document limitations of the series used for TransverseMercator;
+ hide the documentation of the computation of the gradient of the
geoid height (now deprecated) in the Geoid class;
+ warn about the possible misinterpretation of 7.0E+1 by
DMS::Decode;
+ swaplatlong optional argument of DMS::DecodeLatLon and various
functions in the GeoCoords class is now called longfirst;
+ require Doxygen 1.8.7 or later.
* More systematic treatment of version numbers:
+ Python: __init__.py defines __version__ and __version_info__;
+ JavaScript:
o Math.js defines Constants.version and Constants.version_string;
o version number included as comment in packed script
geographiclib.js;
o geod-calc.html and geod-google.html report the version number;
o http://geographiclib.sourceforge.net/scripts/ gives access to
earlier versions of geographiclib.js as geographiclib-m.nn.js;
+ Fortran: add geover subroutine to return version numbers;
+ Maxima: geodesic.mac defines geod_version;
+ CGI scripts: these report the version numbers of the utilities.
* BUG FIXES:
+ NormalGravity now works properly for a sphere (omega = f = J2 =
0), instead of returning NaNs (problem found by htallon);
+ CassiniSoldner::Forward and cassini_fwd.m now returns the correct
azimuth for points at the pole.
* MATLAB-specific fixes:
+ mgrs_fwd now treats treats prec > 11 as prec = 11;
+ illegal letter combinations are now correctly detected by
mgrs_inv;
+ fixed bug where mgrs_inv returned the wrong results for prec = 0
strings and center = 0;
+ mgrs_inv now decodes prec = 11 strings properly;
+ routines now return array results with the right shape;
+ routines now properly handle mixed scalar and array arguments.
* Add Accumulator<T>::operator*=(T y).
* Geohash uses "invalid" instead of "nan" when the latitude or
longitude is a nan.
|