[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. |