[Geographiclib-announce] GeographicLib 1.50 (released 2019-09-24)
Geographic library
Brought to you by:
karney
From: Charles K. <ch...@ka...> - 2019-09-24 16:27:55
|
GeographicLib 1.50 (released 2019-09-24) * BUG fixes: + Java + JavaScript implementations of PolygonArea::TestEdge counted the pole encirclings wrong. + Fix typo in JavaScript implementation which affected unsigned areas. + Adding edges to a polygon counted pole encirclings inconsistent with the way the adding point counted them. This might have caused an incorrect result if a polygon vertex had longitude = 0. This affected all implementations except Fortran and MATLAB). + GARS::Forward: fix BUG in handling of longitude = +/-180d. + Fix bug in Rhumb class and RhumbSolve(1) utiity which caused incorrect area to be reported if an endpoint is at a pole. Thanks to Natalia Sabourova for reporting this. + Fix bug in MATLAB routine mgrs_inv which resulted in incorrect results for UPS zones with prec = -1. + In geodreckon.m geoddistance.m, suppress (innocuous) "warning: division by zero" messages from Octave. + In python implementation, work around problems caused by sin(inf) and fmod(inf) raising exceptions. + Geoid class, fix the use of streamoff. * The PolygonArea class, the Planimeter utility, and their equivalents in C, Fortran, MATLAB, Java, JavaScript, Python, and Maxima can now handle arbitrarily complex polygons. 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. * Changes in gravity and magnetic model handling + SphericalEngine::coeff::readcoeffs takes new optional argument truncate. + The constructors for GravityModel and MagneticModel allow the maximum degree and order to be specified. The array of coefficients will then be truncated if necessary. + GravityModel::Degree(), GravityModel::Order(), MagneticModel::Degree(), MagneticModel::Order() return the maximum degree and order of all the components of a GravityModel or MagneticModel. + Gravity and MagneticField utilities accept -N and -M options to to allow the maximum degree and order to be specified. * The GeodSolve allows fractional distances to be entered as fractions (with the -F flag). * MajorRadius() methods are now called EquatorialRadius() for the C++, Java, and .NET libraries. "Equatorial" is more descriptive in the case of prolate ellipsoids. MajorRadius() is retained for backward compatibility for C++ and Java but is deprecated. * Minimum version updates: + CMake = 3.1.0, released 2014-12-15. + Minimum g++ version = 4.8.0, released 2013-03-22. + Visual Studio 10 2010 (haven't been able to check Visual Studio 2008 for a long time). + WARNING: The next version of GeographicLib will require a C++11 compliant compiler. This means that the minimum version of Visual Studio will be Visual Studio 12 2013. + Minimum boost version = 1.64 needed for GEOGRAPHICLIB_PRECISION = 4. + Java = 1.6; this allows the removal of epsilon, min, hypot, log1p, copysign, cbrt from GeoMath. * CMake updates: + Fine tune Visual Studio compatibility check in find_package(GeographicLib); this allows GeographicLib compiled with Visual Studio 14 2015 to be used with a project compiled with Visual Studio 15 2017 and 16 2019. + Suppress warnings with dotnet build. + Change CMake target names and add an interface library (thanks to Matthew Woehlke). + Remove pre-3.1.0 cruft and update the documentation to remove the need to call include_dirctories. + Add _d suffix to example and test programs. + Changer installation path for binary installer to the Windows default. + Add support for Intel compiler (for C++, C, Fortran). This entails supplying the -fp-model precise flag to prevent the compiler from incorrectly simplying (a + b) + c and 0.0 + x. * Add version 2 of the World Magnetic Model 2015, wmm2015v2. This is now the default magnetic model for MagneticField (replacing wmm2015 which is now deprecated). Coming in 2019-12: the wmm2020 model. * The -f flag in the scripts geographiclib-get-geoids, geographiclib-get-gravity, and geographiclib-get-magnetic, allows you to load new models (not yet in the set defined by "all"). This is in addition to its original role of allowing you to overwrite existing models. * Changes in math function support: + Move some of the functionality from Math.hpp to Math.cpp to make compilation of package which depend on GeographicLib less sensitive to the current compiler environment. + Add Math::remainder, Math::remquo, Math::round, and Math::lround. Also add implementations of remainder, remquo to C implementation. + Math::cbrt, Math::atanh, and Math::asinh now preserve the sign of -0. (Also: C, Java, JavaScript, Python, MATLAB. Not necessary: Fortran because sign is a built-in function.) + JavaScript: fall back to Math.hypot, Math.cbrt, Math.log1p, Math.atanh if they are available. * When parsing DMS strings ignore various non-breaking spaces (C++ and JavaScript). * Improve code coverage in the tests of geodesic algorithms (C++, C, Java, JavaScript, Python, MATLAB, Fortran). * Old deprecated NormalGravity::NormalGravity constructor removed. * Additions to the documentation: + add documentation links to ge{distance,reckon}.m; + clarify which solution is returned for Geocentric::Reverse. |