Accumulator.hpp   Accumulator.hpp 
skipping to change at line 40 skipping to change at line 40
* - double: 2ns * - double: 2ns
* - Accumulator<double>: 23ns * - Accumulator<double>: 23ns
* *
* In the documentation of the member functions, \e sum stands for the va lue * In the documentation of the member functions, \e sum stands for the va lue
* currently held in the accumulator. * currently held in the accumulator.
* *
* Example of use: * Example of use:
* \include example-Accumulator.cpp * \include example-Accumulator.cpp
**********************************************************************/ **********************************************************************/
template<typename T = Math::real> template<typename T = Math::real>
class GEOGRAPHIC_EXPORT Accumulator { class GEOGRAPHICLIB_EXPORT Accumulator {
private: private:
// _s + _t accumulators for the sum. // _s + _t accumulators for the sum.
T _s, _t; T _s, _t;
// Same as Math::sum, but requires abs(u) >= abs(v). This isn't curren tly // Same as Math::sum, but requires abs(u) >= abs(v). This isn't curren tly
// used. // used.
static inline T fastsum(T u, T v, T& t) throw() { static inline T fastsum(T u, T v, T& t) throw() {
volatile T s = u + v; volatile T s = u + v;
volatile T vp = s - u; volatile T vp = s - u;
t = v - vp; t = v - vp;
return s; return s;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 AlbersEqualArea.hpp   AlbersEqualArea.hpp 
skipping to change at line 60 skipping to change at line 60
* for specifying a false easting or false northing or a different latitu de * for specifying a false easting or false northing or a different latitu de
* of origin. * of origin.
* *
* Example of use: * Example of use:
* \include example-AlbersEqualArea.cpp * \include example-AlbersEqualArea.cpp
* *
* <a href="ConicProj.1.html">ConicProj</a> is a command-line utility * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility
* providing access to the functionality of LambertConformalConic and * providing access to the functionality of LambertConformalConic and
* AlbersEqualArea. * AlbersEqualArea.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT AlbersEqualArea { class GEOGRAPHICLIB_EXPORT AlbersEqualArea {
private: private:
typedef Math::real real; typedef Math::real real;
real _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx; real _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx;
real _sign, _lat0, _k0; real _sign, _lat0, _k0;
real _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0; real _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0;
static const real eps_; static const real eps_;
static const real epsx_; static const real epsx_;
static const real epsx2_; static const real epsx2_;
static const real tol_; static const real tol_;
static const real tol0_; static const real tol0_;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 AzimuthalEquidistant.hpp   AzimuthalEquidistant.hpp 
skipping to change at line 42 skipping to change at line 42
* Geodesic::WGS84). For more information on geodesics see \ref geodesic . * Geodesic::WGS84). For more information on geodesics see \ref geodesic .
* *
* Example of use: * Example of use:
* \include example-AzimuthalEquidistant.cpp * \include example-AzimuthalEquidistant.cpp
* *
* <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utili ty * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utili ty
* providing access to the functionality of AzimuthalEquidistant, Gnomoni c, * providing access to the functionality of AzimuthalEquidistant, Gnomoni c,
* and CassiniSoldner. * and CassiniSoldner.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT AzimuthalEquidistant { class GEOGRAPHICLIB_EXPORT AzimuthalEquidistant {
private: private:
typedef Math::real real; typedef Math::real real;
Geodesic _earth; Geodesic _earth;
static const real eps_; static const real eps_;
public: public:
/** /**
* Constructor for AzimuthalEquidistant. * Constructor for AzimuthalEquidistant.
* *
* @param[in] earth the Geodesic object to use for geodesic calculation s. * @param[in] earth the Geodesic object to use for geodesic calculation s.
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 CassiniSoldner.hpp   CassiniSoldner.hpp 
skipping to change at line 69 skipping to change at line 69
* respectively, (\e lat1, \e lon1) and (\e lat, \e lon). * respectively, (\e lat1, \e lon1) and (\e lat, \e lon).
* *
* Example of use: * Example of use:
* \include example-CassiniSoldner.cpp * \include example-CassiniSoldner.cpp
* *
* <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utili ty * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utili ty
* providing access to the functionality of AzimuthalEquidistant, Gnomoni c, * providing access to the functionality of AzimuthalEquidistant, Gnomoni c,
* and CassiniSoldner. * and CassiniSoldner.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT CassiniSoldner { class GEOGRAPHICLIB_EXPORT CassiniSoldner {
private: private:
typedef Math::real real; typedef Math::real real;
Geodesic _earth; Geodesic _earth;
GeodesicLine _meridian; GeodesicLine _meridian;
real _sbet0, _cbet0; real _sbet0, _cbet0;
static const real eps1_; static const real eps1_;
static const real tiny_; static const real tiny_;
static const unsigned maxit_ = 10; static const unsigned maxit_ = 10;
// The following private helper functions are copied from Geodesic. // The following private helper functions are copied from Geodesic.
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 CircularEngine.hpp   CircularEngine.hpp 
skipping to change at line 52 skipping to change at line 52
* *
* CircularEngine stores the coefficients needed to allow the summation o ver * CircularEngine stores the coefficients needed to allow the summation o ver
* order to be performed in 2 or 6 vectors of length \e M + 1 (depending on * order to be performed in 2 or 6 vectors of length \e M + 1 (depending on
* whether gradients are to be calculated). For this reason the construc tor * whether gradients are to be calculated). For this reason the construc tor
* may throw a std::bad_alloc exception. * may throw a std::bad_alloc exception.
* *
* Example of use: * Example of use:
* \include example-CircularEngine.cpp * \include example-CircularEngine.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT CircularEngine { class GEOGRAPHICLIB_EXPORT CircularEngine {
private: private:
typedef Math::real real; typedef Math::real real;
enum normalization { enum normalization {
FULL = SphericalEngine::FULL, FULL = SphericalEngine::FULL,
SCHMIDT = SphericalEngine::SCHMIDT, SCHMIDT = SphericalEngine::SCHMIDT,
}; };
int _M; int _M;
bool _gradp; bool _gradp;
unsigned _norm; unsigned _norm;
real _a, _r, _u, _t; real _a, _r, _u, _t;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Config.h   Config.h 
#define GEOGRAPHICLIB_VERSION_MAJOR 1 #define GEOGRAPHICLIB_VERSION_MAJOR 1
#define GEOGRAPHICLIB_VERSION_MINOR 33 #define GEOGRAPHICLIB_VERSION_MINOR 34
#define GEOGRAPHICLIB_VERSION_PATCH 0 #define GEOGRAPHICLIB_VERSION_PATCH 0
#define HAVE_LONG_DOUBLE 1 #define HAVE_LONG_DOUBLE 1
#define GEOGRAPHICLIB_VERSION_STRING "1.33" #define GEOGRAPHICLIB_VERSION_STRING "1.34"
/* # undef WORDS_BIGENDIAN */ /* # undef WORDS_BIGENDIAN */
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 Constants.hpp   Constants.hpp 
skipping to change at line 19 skipping to change at line 19
#if !defined(GEOGRAPHICLIB_CONSTANTS_HPP) #if !defined(GEOGRAPHICLIB_CONSTANTS_HPP)
#define GEOGRAPHICLIB_CONSTANTS_HPP 1 #define GEOGRAPHICLIB_CONSTANTS_HPP 1
#include <GeographicLib/Config.h> #include <GeographicLib/Config.h>
/** /**
* A compile-time assert. Use C++11 static_assert, if available. * A compile-time assert. Use C++11 static_assert, if available.
**********************************************************************/ **********************************************************************/
#if !defined(STATIC_ASSERT) #if !defined(STATIC_ASSERT)
# if defined(__GXX_EXPERIMENTAL_CXX0X__) # if __cplusplus >= 201103
# define STATIC_ASSERT static_assert
# elif defined(__GXX_EXPERIMENTAL_CXX0X__)
# define STATIC_ASSERT static_assert # define STATIC_ASSERT static_assert
# elif defined(_MSC_VER) && _MSC_VER >= 1600 # elif defined(_MSC_VER) && _MSC_VER >= 1600
# define STATIC_ASSERT static_assert # define STATIC_ASSERT static_assert
# else # else
# define STATIC_ASSERT(cond,reason) \ # define STATIC_ASSERT(cond,reason) \
{ enum{ STATIC_ASSERT_ENUM = 1/int(cond) }; } { enum{ STATIC_ASSERT_ENUM = 1/int(cond) }; }
# endif # endif
#endif #endif
#if defined(_WIN32) && defined(GEOGRAPHIC_SHARED_LIB) && GEOGRAPHIC_SHARED_ #if defined(_MSC_VER) && defined(GEOGRAPHICLIB_SHARED_LIB) && \
LIB GEOGRAPHICLIB_SHARED_LIB
# if defined(Geographic_EXPORTS) # if GEOGRAPHICLIB_SHARED_LIB > 1
# define GEOGRAPHIC_EXPORT __declspec(dllexport) # error GEOGRAPHICLIB_SHARED_LIB must be 0 or 1
# elif defined(GeographicLib_EXPORTS)
# define GEOGRAPHICLIB_EXPORT __declspec(dllexport)
# else # else
# define GEOGRAPHIC_EXPORT __declspec(dllimport) # define GEOGRAPHICLIB_EXPORT __declspec(dllimport)
# endif # endif
#else #else
# define GEOGRAPHIC_EXPORT # define GEOGRAPHICLIB_EXPORT
#endif #endif
#include <stdexcept> #include <stdexcept>
#include <string> #include <string>
#include <GeographicLib/Math.hpp> #include <GeographicLib/Math.hpp>
/** /**
* \brief Namespace for %GeographicLib * \brief Namespace for %GeographicLib
* *
* All of %GeographicLib is defined within the GeographicLib namespace. In * All of %GeographicLib is defined within the GeographicLib namespace. In
skipping to change at line 61 skipping to change at line 66
/** /**
* \brief %Constants needed by %GeographicLib * \brief %Constants needed by %GeographicLib
* *
* Define constants specifying the WGS84 ellipsoid, the UTM and UPS * Define constants specifying the WGS84 ellipsoid, the UTM and UPS
* projections, and various unit conversions. * projections, and various unit conversions.
* *
* Example of use: * Example of use:
* \include example-Constants.cpp * \include example-Constants.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Constants { class GEOGRAPHICLIB_EXPORT Constants {
private: private:
typedef Math::real real; typedef Math::real real;
Constants(); // Disable constructor Constants(); // Disable constructor
public: public:
/** /**
* A synonym for Math::degree<real>(). * A synonym for Math::degree<real>().
********************************************************************** / ********************************************************************** /
static inline Math::real degree() throw() { return Math::degree<real>() ; } static inline Math::real degree() throw() { return Math::degree<real>() ; }
/** /**
 End of changes. 5 change blocks. 
8 lines changed or deleted 12 lines changed or added


 DMS.hpp   DMS.hpp 
skipping to change at line 34 skipping to change at line 34
/** /**
* \brief Convert between degrees and the %DMS representation * \brief Convert between degrees and the %DMS representation
* *
* Parse a string representing degree, minutes, and seconds and return th e * Parse a string representing degree, minutes, and seconds and return th e
* angle in degrees and format an angle in degrees as degree, minutes, an d * angle in degrees and format an angle in degrees as degree, minutes, an d
* seconds. In addition, handle NANs and infinities on input and output. * seconds. In addition, handle NANs and infinities on input and output.
* *
* Example of use: * Example of use:
* \include example-DMS.cpp * \include example-DMS.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT DMS { class GEOGRAPHICLIB_EXPORT DMS {
private: private:
typedef Math::real real; typedef Math::real real;
// Replace all occurrences of pat by c // Replace all occurrences of pat by c
static void replace(std::string& s, const std::string& pat, char c) { static void replace(std::string& s, const std::string& pat, char c) {
std::string::size_type p = 0; std::string::size_type p = 0;
while (true) { while (true) {
p = s.find(pat, p); p = s.find(pat, p);
if (p == std::string::npos) if (p == std::string::npos)
break; break;
s.replace(p, pat.length(), 1, c); s.replace(p, pat.length(), 1, c);
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Ellipsoid.hpp   Ellipsoid.hpp 
skipping to change at line 39 skipping to change at line 39
* provide functionality which can be provided by the Geodesic class. * provide functionality which can be provided by the Geodesic class.
* However Geodesic uses a series approximation (valid for abs \e f < 1/1 50), * However Geodesic uses a series approximation (valid for abs \e f < 1/1 50),
* whereas Ellipsoid computes these quantities using EllipticFunction whi ch * whereas Ellipsoid computes these quantities using EllipticFunction whi ch
* provides accurate results even when \e f is large. Use of this class * provides accurate results even when \e f is large. Use of this class
* should be limited to &minus;3 < \e f < 3/4 (i.e., 1/4 < b/a < 4). * should be limited to &minus;3 < \e f < 3/4 (i.e., 1/4 < b/a < 4).
* *
* Example of use: * Example of use:
* \include example-Ellipsoid.cpp * \include example-Ellipsoid.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Ellipsoid { class GEOGRAPHICLIB_EXPORT Ellipsoid {
private: private:
typedef Math::real real; typedef Math::real real;
static const int numit_ = 10; static const int numit_ = 10;
static const real stol_; static const real stol_;
real _a, _f, _f1, _f12, _e2, _e12, _n, _b; real _a, _f, _f1, _f12, _e2, _e12, _n, _b;
TransverseMercator _tm; TransverseMercator _tm;
EllipticFunction _ell; EllipticFunction _ell;
AlbersEqualArea _au; AlbersEqualArea _au;
static real tand(real x) throw() { static real tand(real x) throw() {
return return
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 EllipticFunction.hpp   EllipticFunction.hpp 
skipping to change at line 62 skipping to change at line 62
* - R. Bulirsch, * - R. Bulirsch,
* <a href="http://dx.doi.org/10.1007/BF01397975"> Numerical Calculatio n of * <a href="http://dx.doi.org/10.1007/BF01397975"> Numerical Calculatio n of
* Elliptic Integrals and Elliptic Functions</a>, Numericshe Mathematik 7, * Elliptic Integrals and Elliptic Functions</a>, Numericshe Mathematik 7,
* 78--90 (1965). * 78--90 (1965).
* . * .
* The notation follows http://dlmf.nist.gov/19 and http://dlmf.nist.gov/ 22 * The notation follows http://dlmf.nist.gov/19 and http://dlmf.nist.gov/ 22
* *
* Example of use: * Example of use:
* \include example-EllipticFunction.cpp * \include example-EllipticFunction.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT EllipticFunction { class GEOGRAPHICLIB_EXPORT EllipticFunction {
private: private:
typedef Math::real real; typedef Math::real real;
static const real tol_; static const real tol_;
static const real tolRF_; static const real tolRF_;
static const real tolRD_; static const real tolRD_;
static const real tolRG0_; static const real tolRG0_;
static const real tolJAC_; static const real tolJAC_;
enum { num_ = 13 }; // Max depth required for sncndn. Probably 5 is en ough. enum { num_ = 13 }; // Max depth required for sncndn. Probably 5 is en ough.
real _k2, _kp2, _alpha2, _alphap2, _eps; real _k2, _kp2, _alpha2, _alphap2, _eps;
mutable bool _init; mutable bool _init;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 GeoCoords.hpp   GeoCoords.hpp 
skipping to change at line 49 skipping to change at line 49
* *
* Once the input string has been parsed, you can print the result out in any * Once the input string has been parsed, you can print the result out in any
* of the formats, decimal degrees, degrees minutes seconds, MGRS, UTM/UP S. * of the formats, decimal degrees, degrees minutes seconds, MGRS, UTM/UP S.
* *
* Example of use: * Example of use:
* \include example-GeoCoords.cpp * \include example-GeoCoords.cpp
* *
* <a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility * <a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility
* providing access to the functionality of GeoCoords. * providing access to the functionality of GeoCoords.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT GeoCoords { class GEOGRAPHICLIB_EXPORT GeoCoords {
private: private:
typedef Math::real real; typedef Math::real real;
real _lat, _long, _easting, _northing, _gamma, _k; real _lat, _long, _easting, _northing, _gamma, _k;
bool _northp; bool _northp;
int _zone; // See UTMUPS::zonespec int _zone; // See UTMUPS::zonespec
mutable real _alt_easting, _alt_northing, _alt_gamma, _alt_k; mutable real _alt_easting, _alt_northing, _alt_gamma, _alt_k;
mutable int _alt_zone; mutable int _alt_zone;
void CopyToAlt() const throw() { void CopyToAlt() const throw() {
_alt_easting = _easting; _alt_easting = _easting;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Geocentric.hpp   Geocentric.hpp 
skipping to change at line 61 skipping to change at line 61
* the WGS84 ellipsoid. See \ref geocentric for further information on t he * the WGS84 ellipsoid. See \ref geocentric for further information on t he
* errors. * errors.
* *
* Example of use: * Example of use:
* \include example-Geocentric.cpp * \include example-Geocentric.cpp
* *
* <a href="CartConvert.1.html">CartConvert</a> is a command-line utility * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility
* providing access to the functionality of Geocentric and LocalCartesian . * providing access to the functionality of Geocentric and LocalCartesian .
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Geocentric { class GEOGRAPHICLIB_EXPORT Geocentric {
private: private:
typedef Math::real real; typedef Math::real real;
friend class LocalCartesian; friend class LocalCartesian;
friend class MagneticCircle; // MagneticCircle uses Rotation friend class MagneticCircle; // MagneticCircle uses Rotation
friend class MagneticModel; // MagneticModel uses IntForward friend class MagneticModel; // MagneticModel uses IntForward
friend class GravityCircle; // GravityCircle uses Rotation friend class GravityCircle; // GravityCircle uses Rotation
friend class GravityModel; // GravityModel uses IntForward friend class GravityModel; // GravityModel uses IntForward
friend class NormalGravity; // NormalGravity uses IntForward friend class NormalGravity; // NormalGravity uses IntForward
friend class SphericalHarmonic; friend class SphericalHarmonic;
friend class SphericalHarmonic1; friend class SphericalHarmonic1;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Geodesic.hpp   Geodesic.hpp 
skipping to change at line 169 skipping to change at line 169
* . * .
* For more information on geodesics see \ref geodesic. * For more information on geodesics see \ref geodesic.
* *
* Example of use: * Example of use:
* \include example-Geodesic.cpp * \include example-Geodesic.cpp
* *
* <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess * <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess
* to the functionality of Geodesic and GeodesicLine. * to the functionality of Geodesic and GeodesicLine.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Geodesic { class GEOGRAPHICLIB_EXPORT Geodesic {
private: private:
typedef Math::real real; typedef Math::real real;
friend class GeodesicLine; friend class GeodesicLine;
static const int nA1_ = GEOGRAPHICLIB_GEODESIC_ORDER; static const int nA1_ = GEOGRAPHICLIB_GEODESIC_ORDER;
static const int nC1_ = GEOGRAPHICLIB_GEODESIC_ORDER; static const int nC1_ = GEOGRAPHICLIB_GEODESIC_ORDER;
static const int nC1p_ = GEOGRAPHICLIB_GEODESIC_ORDER; static const int nC1p_ = GEOGRAPHICLIB_GEODESIC_ORDER;
static const int nA2_ = GEOGRAPHICLIB_GEODESIC_ORDER; static const int nA2_ = GEOGRAPHICLIB_GEODESIC_ORDER;
static const int nC2_ = GEOGRAPHICLIB_GEODESIC_ORDER; static const int nC2_ = GEOGRAPHICLIB_GEODESIC_ORDER;
static const int nA3_ = GEOGRAPHICLIB_GEODESIC_ORDER; static const int nA3_ = GEOGRAPHICLIB_GEODESIC_ORDER;
static const int nA3x_ = nA3_; static const int nA3x_ = nA3_;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 GeodesicExact.hpp   GeodesicExact.hpp 
skipping to change at line 80 skipping to change at line 80
* Geodesic class for additional information on the geodesics problems. * Geodesic class for additional information on the geodesics problems.
* *
* Example of use: * Example of use:
* \include example-GeodesicExact.cpp * \include example-GeodesicExact.cpp
* *
* <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess * <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess
* to the functionality of GeodesicExact and GeodesicLineExact (via the - E * to the functionality of GeodesicExact and GeodesicLineExact (via the - E
* option). * option).
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT GeodesicExact { class GEOGRAPHICLIB_EXPORT GeodesicExact {
private: private:
typedef Math::real real; typedef Math::real real;
friend class GeodesicLineExact; friend class GeodesicLineExact;
static const int nC4_ = GEOGRAPHICLIB_GEODESICEXACT_ORDER; static const int nC4_ = GEOGRAPHICLIB_GEODESICEXACT_ORDER;
static const int nC4x_ = (nC4_ * (nC4_ + 1)) / 2; static const int nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
static const unsigned maxit1_ = 20; static const unsigned maxit1_ = 20;
static const unsigned maxit2_ = maxit1_ + static const unsigned maxit2_ = maxit1_ +
std::numeric_limits<real>::digits + 10; std::numeric_limits<real>::digits + 10;
static const real tiny_; static const real tiny_;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 GeodesicLine.hpp   GeodesicLine.hpp 
skipping to change at line 59 skipping to change at line 59
* . * .
* For more information on geodesics see \ref geodesic. * For more information on geodesics see \ref geodesic.
* *
* Example of use: * Example of use:
* \include example-GeodesicLine.cpp * \include example-GeodesicLine.cpp
* *
* <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess * <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess
* to the functionality of Geodesic and GeodesicLine. * to the functionality of Geodesic and GeodesicLine.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT GeodesicLine { class GEOGRAPHICLIB_EXPORT GeodesicLine {
private: private:
typedef Math::real real; typedef Math::real real;
friend class Geodesic; friend class Geodesic;
static const int nC1_ = Geodesic::nC1_; static const int nC1_ = Geodesic::nC1_;
static const int nC1p_ = Geodesic::nC1p_; static const int nC1p_ = Geodesic::nC1p_;
static const int nC2_ = Geodesic::nC2_; static const int nC2_ = Geodesic::nC2_;
static const int nC3_ = Geodesic::nC3_; static const int nC3_ = Geodesic::nC3_;
static const int nC4_ = Geodesic::nC4_; static const int nC4_ = Geodesic::nC4_;
real _lat1, _lon1, _azi1; real _lat1, _lon1, _azi1;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 GeodesicLineExact.hpp   GeodesicLineExact.hpp 
skipping to change at line 35 skipping to change at line 35
* GeodesicLine class. * GeodesicLine class.
* *
* Example of use: * Example of use:
* \include example-GeodesicLineExact.cpp * \include example-GeodesicLineExact.cpp
* *
* <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess * <a href="Geod.1.html">Geod</a> is a command-line utility providing acc ess
* to the functionality of GeodesicExact and GeodesicLineExact (via the - E * to the functionality of GeodesicExact and GeodesicLineExact (via the - E
* option). * option).
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT GeodesicLineExact { class GEOGRAPHICLIB_EXPORT GeodesicLineExact {
private: private:
typedef Math::real real; typedef Math::real real;
friend class GeodesicExact; friend class GeodesicExact;
static const int nC4_ = GeodesicExact::nC4_; static const int nC4_ = GeodesicExact::nC4_;
real _lat1, _lon1, _azi1; real _lat1, _lon1, _azi1;
real _a, _f, _b, _c2, _f1, _e2, _salp0, _calp0, _k2, real _a, _f, _b, _c2, _f1, _e2, _salp0, _calp0, _k2,
_salp1, _calp1, _ssig1, _csig1, _dn1, _stau1, _ctau1, _salp1, _calp1, _ssig1, _csig1, _dn1, _stau1, _ctau1,
_somg1, _comg1, _cchi1, _somg1, _comg1, _cchi1,
_A4, _B41, _E0, _D0, _H0, _E1, _D1, _H1; _A4, _B41, _E0, _D0, _H0, _E1, _D1, _H1;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Geohash.hpp   Geohash.hpp 
skipping to change at line 39 skipping to change at line 39
* . * .
* They provide a compact string representation of a particular geographi c * They provide a compact string representation of a particular geographi c
* location (expressed as latitude and longitude), with the property that if * location (expressed as latitude and longitude), with the property that if
* trailing characters are dropped from the string the geographic locatio n * trailing characters are dropped from the string the geographic locatio n
* remains nearby. * remains nearby.
* *
* Example of use: * Example of use:
* \include example-Geohash.cpp * \include example-Geohash.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Geohash { class GEOGRAPHICLIB_EXPORT Geohash {
private: private:
typedef Math::real real; typedef Math::real real;
static const int maxlen_ = 18; static const int maxlen_ = 18;
static const unsigned long long mask_ = 1ULL << 45; static const unsigned long long mask_ = 1ULL << 45;
static const int decprec_[]; static const int decprec_[];
static const real loneps_; static const real loneps_;
static const real lateps_; static const real lateps_;
static const real shift_; static const real shift_;
static const std::string lcdigits_; static const std::string lcdigits_;
static const std::string ucdigits_; static const std::string ucdigits_;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Geoid.hpp   Geoid.hpp 
skipping to change at line 83 skipping to change at line 83
* single-cell caching which results in a Geoid object which \e is thread * single-cell caching which results in a Geoid object which \e is thread
* safe. * safe.
* *
* Example of use: * Example of use:
* \include example-Geoid.cpp * \include example-Geoid.cpp
* *
* <a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility * <a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility
* providing access to the functionality of Geoid. * providing access to the functionality of Geoid.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Geoid { class GEOGRAPHICLIB_EXPORT Geoid {
private: private:
typedef Math::real real; typedef Math::real real;
#if PGM_PIXEL_WIDTH != 4 #if PGM_PIXEL_WIDTH != 4
typedef unsigned short pixel_t; typedef unsigned short pixel_t;
static const unsigned pixel_size_ = 2; static const unsigned pixel_size_ = 2;
static const unsigned pixel_max_ = 0xffffu; static const unsigned pixel_max_ = 0xffffu;
#else #else
typedef unsigned pixel_t; typedef unsigned pixel_t;
static const unsigned pixel_size_ = 4; static const unsigned pixel_size_ = 4;
static const unsigned pixel_max_ = 0xffffffffu; static const unsigned pixel_max_ = 0xffffffffu;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Gnomonic.hpp   Gnomonic.hpp 
skipping to change at line 101 skipping to change at line 101
* generalizes the spherical great circle to a geodesic. * generalizes the spherical great circle to a geodesic.
* *
* Example of use: * Example of use:
* \include example-Gnomonic.cpp * \include example-Gnomonic.cpp
* *
* <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utili ty * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utili ty
* providing access to the functionality of AzimuthalEquidistant, Gnomoni c, * providing access to the functionality of AzimuthalEquidistant, Gnomoni c,
* and CassiniSoldner. * and CassiniSoldner.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Gnomonic { class GEOGRAPHICLIB_EXPORT Gnomonic {
private: private:
typedef Math::real real; typedef Math::real real;
Geodesic _earth; Geodesic _earth;
real _a, _f; real _a, _f;
static const real eps0_; static const real eps0_;
static const real eps_; static const real eps_;
static const int numit_ = 10; static const int numit_ = 10;
public: public:
/** /**
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 GravityCircle.hpp   GravityCircle.hpp 
skipping to change at line 41 skipping to change at line 41
* See \ref gravityparallel for an example of using GravityCircle (togeth er * See \ref gravityparallel for an example of using GravityCircle (togeth er
* with OpenMP) to speed up the computation of geoid heights. * with OpenMP) to speed up the computation of geoid heights.
* *
* Example of use: * Example of use:
* \include example-GravityCircle.cpp * \include example-GravityCircle.cpp
* *
* <a href="Gravity.1.html">Gravity</a> is a command-line utility providi ng * <a href="Gravity.1.html">Gravity</a> is a command-line utility providi ng
* access to the functionality of GravityModel and GravityCircle. * access to the functionality of GravityModel and GravityCircle.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT GravityCircle { class GEOGRAPHICLIB_EXPORT GravityCircle {
private: private:
typedef Math::real real; typedef Math::real real;
enum mask { enum mask {
NONE = GravityModel::NONE, NONE = GravityModel::NONE,
GRAVITY = GravityModel::GRAVITY, GRAVITY = GravityModel::GRAVITY,
DISTURBANCE = GravityModel::DISTURBANCE, DISTURBANCE = GravityModel::DISTURBANCE,
DISTURBING_POTENTIAL = GravityModel::DISTURBING_POTENTIAL, DISTURBING_POTENTIAL = GravityModel::DISTURBING_POTENTIAL,
GEOID_HEIGHT = GravityModel::GEOID_HEIGHT, GEOID_HEIGHT = GravityModel::GEOID_HEIGHT,
SPHERICAL_ANOMALY = GravityModel::SPHERICAL_ANOMALY, SPHERICAL_ANOMALY = GravityModel::SPHERICAL_ANOMALY,
ALL = GravityModel::ALL, ALL = GravityModel::ALL,
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 GravityModel.hpp   GravityModel.hpp 
skipping to change at line 83 skipping to change at line 83
* - W. A. Heiskanen and H. Moritz, Physical Geodesy (Freeman, San * - W. A. Heiskanen and H. Moritz, Physical Geodesy (Freeman, San
* Francisco, 1967). * Francisco, 1967).
* *
* Example of use: * Example of use:
* \include example-GravityModel.cpp * \include example-GravityModel.cpp
* *
* <a href="Gravity.1.html">Gravity</a> is a command-line utility providi ng * <a href="Gravity.1.html">Gravity</a> is a command-line utility providi ng
* access to the functionality of GravityModel and GravityCircle. * access to the functionality of GravityModel and GravityCircle.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT GravityModel { class GEOGRAPHICLIB_EXPORT GravityModel {
private: private:
typedef Math::real real; typedef Math::real real;
friend class GravityCircle; friend class GravityCircle;
static const int idlength_ = 8; static const int idlength_ = 8;
std::string _name, _dir, _description, _date, _filename, _id; std::string _name, _dir, _description, _date, _filename, _id;
real _amodel, _GMmodel, _zeta0, _corrmult; real _amodel, _GMmodel, _zeta0, _corrmult;
SphericalHarmonic::normalization _norm; SphericalHarmonic::normalization _norm;
NormalGravity _earth; NormalGravity _earth;
std::vector<real> _Cx, _Sx, _CC, _CS, _zonal; std::vector<real> _Cx, _Sx, _CC, _CS, _zonal;
real _dzonal0; // A left over contribution to _zonal. real _dzonal0; // A left over contribution to _zonal.
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 LambertConformalConic.hpp   LambertConformalConic.hpp 
skipping to change at line 57 skipping to change at line 57
* latitude of origin. However these are can be simply included by the * latitude of origin. However these are can be simply included by the
* calling function. For example the Pennsylvania South state coordinate * calling function. For example the Pennsylvania South state coordinate
* system (<a href="http://www.spatialreference.org/ref/epsg/3364/"> * system (<a href="http://www.spatialreference.org/ref/epsg/3364/">
* EPSG:3364</a>) is obtained by: * EPSG:3364</a>) is obtained by:
* \include example-LambertConformalConic.cpp * \include example-LambertConformalConic.cpp
* *
* <a href="ConicProj.1.html">ConicProj</a> is a command-line utility * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility
* providing access to the functionality of LambertConformalConic and * providing access to the functionality of LambertConformalConic and
* AlbersEqualArea. * AlbersEqualArea.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT LambertConformalConic { class GEOGRAPHICLIB_EXPORT LambertConformalConic {
private: private:
typedef Math::real real; typedef Math::real real;
real _a, _f, _fm, _e2, _e, _e2m; real _a, _f, _fm, _e2, _e, _e2m;
real _sign, _n, _nc, _t0nm1, _scale, _lat0, _k0; real _sign, _n, _nc, _t0nm1, _scale, _lat0, _k0;
real _scbet0, _tchi0, _scchi0, _psi0, _nrho0, _drhomax; real _scbet0, _tchi0, _scchi0, _psi0, _nrho0, _drhomax;
static const real eps_; static const real eps_;
static const real epsx_; static const real epsx_;
static const real tol_; static const real tol_;
static const real ahypover_; static const real ahypover_;
static const int numit_ = 5; static const int numit_ = 5;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 LocalCartesian.hpp   LocalCartesian.hpp 
skipping to change at line 38 skipping to change at line 38
* The conversions all take place via geocentric coordinates using a * The conversions all take place via geocentric coordinates using a
* Geocentric object (by default Geocentric::WGS84). * Geocentric object (by default Geocentric::WGS84).
* *
* Example of use: * Example of use:
* \include example-LocalCartesian.cpp * \include example-LocalCartesian.cpp
* *
* <a href="CartConvert.1.html">CartConvert</a> is a command-line utility * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility
* providing access to the functionality of Geocentric and LocalCartesian . * providing access to the functionality of Geocentric and LocalCartesian .
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT LocalCartesian { class GEOGRAPHICLIB_EXPORT LocalCartesian {
private: private:
typedef Math::real real; typedef Math::real real;
static const size_t dim_ = 3; static const size_t dim_ = 3;
static const size_t dim2_ = dim_ * dim_; static const size_t dim2_ = dim_ * dim_;
Geocentric _earth; Geocentric _earth;
real _lat0, _lon0, _h0; real _lat0, _lon0, _h0;
real _x0, _y0, _z0, _r[dim2_]; real _x0, _y0, _z0, _r[dim2_];
void IntForward(real lat, real lon, real h, real& x, real& y, real& z, void IntForward(real lat, real lon, real h, real& x, real& y, real& z,
real M[dim2_]) const throw(); real M[dim2_]) const throw();
void IntReverse(real x, real y, real z, real& lat, real& lon, real& h, void IntReverse(real x, real y, real z, real& lat, real& lon, real& h,
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 MGRS.hpp   MGRS.hpp 
skipping to change at line 62 skipping to change at line 62
* <a href="http://earth-info.nga.mil/GandG/geotrans/index.html">geotrans </a> * <a href="http://earth-info.nga.mil/GandG/geotrans/index.html">geotrans </a>
* also provides conversions to and from MGRS. Version 3.0 (and earlier) * also provides conversions to and from MGRS. Version 3.0 (and earlier)
* suffers from some drawbacks: * suffers from some drawbacks:
* - Inconsistent rules are used to determine the whether a particular MG RS * - Inconsistent rules are used to determine the whether a particular MG RS
* coordinate is legal. A more systematic approach is taken here. * coordinate is legal. A more systematic approach is taken here.
* - The underlying projections are not very accurately implemented. * - The underlying projections are not very accurately implemented.
* *
* Example of use: * Example of use:
* \include example-MGRS.cpp * \include example-MGRS.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT MGRS { class GEOGRAPHICLIB_EXPORT MGRS {
private: private:
typedef Math::real real; typedef Math::real real;
// The smallest length s.t., 1.0e7 - eps_ < 1.0e7 (approx 1.9 nm) // The smallest length s.t., 1.0e7 - eps_ < 1.0e7 (approx 1.9 nm)
static const real eps_; static const real eps_;
// The smallest angle s.t., 90 - eps_ < 90 (approx 50e-12 arcsec) // The smallest angle s.t., 90 - eps_ < 90 (approx 50e-12 arcsec)
static const real angeps_; static const real angeps_;
static const std::string hemispheres_; static const std::string hemispheres_;
static const std::string utmcols_[3]; static const std::string utmcols_[3];
static const std::string utmrow_; static const std::string utmrow_;
static const std::string upscols_[4]; static const std::string upscols_[4];
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 MagneticCircle.hpp   MagneticCircle.hpp 
skipping to change at line 37 skipping to change at line 37
* Use MagneticModel::Circle to create a MagneticCircle object. (The * Use MagneticModel::Circle to create a MagneticCircle object. (The
* constructor for this class is private.) * constructor for this class is private.)
* *
* Example of use: * Example of use:
* \include example-MagneticCircle.cpp * \include example-MagneticCircle.cpp
* *
* <a href="MagneticField.1.html">MagneticField</a> is a command-line uti lity * <a href="MagneticField.1.html">MagneticField</a> is a command-line uti lity
* providing access to the functionality of MagneticModel and MagneticCir cle. * providing access to the functionality of MagneticModel and MagneticCir cle.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT MagneticCircle { class GEOGRAPHICLIB_EXPORT MagneticCircle {
private: private:
typedef Math::real real; typedef Math::real real;
real _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0; real _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0;
bool _interpolate; bool _interpolate;
CircularEngine _circ0, _circ1; CircularEngine _circ0, _circ1;
MagneticCircle(real a, real f, real lat, real h, real t, MagneticCircle(real a, real f, real lat, real h, real t,
real cphi, real sphi, real t1, real dt0, real cphi, real sphi, real t1, real dt0,
bool interpolate, bool interpolate,
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 MagneticModel.hpp   MagneticModel.hpp 
skipping to change at line 60 skipping to change at line 60
* - http://ngdc.noaa.gov/geomag/EMM/index.html * - http://ngdc.noaa.gov/geomag/EMM/index.html
* - http://ngdc.noaa.gov/geomag/EMM/data/geomag/EMM2010_Sph_Windows_Li nux.zip * - http://ngdc.noaa.gov/geomag/EMM/data/geomag/EMM2010_Sph_Windows_Li nux.zip
* *
* Example of use: * Example of use:
* \include example-MagneticModel.cpp * \include example-MagneticModel.cpp
* *
* <a href="MagneticField.1.html">MagneticField</a> is a command-line uti lity * <a href="MagneticField.1.html">MagneticField</a> is a command-line uti lity
* providing access to the functionality of MagneticModel and MagneticCir cle. * providing access to the functionality of MagneticModel and MagneticCir cle.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT MagneticModel { class GEOGRAPHICLIB_EXPORT MagneticModel {
private: private:
typedef Math::real real; typedef Math::real real;
static const int idlength_ = 8; static const int idlength_ = 8;
std::string _name, _dir, _description, _date, _filename, _id; std::string _name, _dir, _description, _date, _filename, _id;
real _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax; real _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax;
int _Nmodels; int _Nmodels;
SphericalHarmonic::normalization _norm; SphericalHarmonic::normalization _norm;
Geocentric _earth; Geocentric _earth;
std::vector< std::vector<real> > _G; std::vector< std::vector<real> > _G;
std::vector< std::vector<real> > _H; std::vector< std::vector<real> > _H;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Math.hpp   Math.hpp 
skipping to change at line 21 skipping to change at line 21
// include guard to enforce this ordering. // include guard to enforce this ordering.
#include <GeographicLib/Constants.hpp> #include <GeographicLib/Constants.hpp>
#if !defined(GEOGRAPHICLIB_MATH_HPP) #if !defined(GEOGRAPHICLIB_MATH_HPP)
#define GEOGRAPHICLIB_MATH_HPP 1 #define GEOGRAPHICLIB_MATH_HPP 1
/** /**
* Are C++11 math functions available? * Are C++11 math functions available?
**********************************************************************/ **********************************************************************/
#if !defined(GEOGRAPHICLIB_CPLUSPLUS11_MATH) #if !defined(GEOGRAPHICLIB_CPLUSPLUS11_MATH)
# if defined(__GXX_EXPERIMENTAL_CXX0X__) # if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ >= 8 \
&& __cplusplus >= 201103
# define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1
# elif defined(_MSC_VER) && _MSC_VER >= 1800
# define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1 # define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1
# else # else
# define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0 # define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0
# endif # endif
#endif #endif
#if !defined(WORDS_BIGENDIAN) #if !defined(WORDS_BIGENDIAN)
# define WORDS_BIGENDIAN 0 # define WORDS_BIGENDIAN 0
#endif #endif
skipping to change at line 67 skipping to change at line 70
/** /**
* \brief Mathematical functions needed by %GeographicLib * \brief Mathematical functions needed by %GeographicLib
* *
* Define mathematical functions in order to localize system dependencies and * Define mathematical functions in order to localize system dependencies and
* to provide generic versions of the functions. In addition define a re al * to provide generic versions of the functions. In addition define a re al
* type to be used by %GeographicLib. * type to be used by %GeographicLib.
* *
* Example of use: * Example of use:
* \include example-Math.cpp * \include example-Math.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Math { class GEOGRAPHICLIB_EXPORT Math {
private: private:
void dummy() { void dummy() {
STATIC_ASSERT(GEOGRAPHICLIB_PRECISION >= 1 && STATIC_ASSERT(GEOGRAPHICLIB_PRECISION >= 1 &&
GEOGRAPHICLIB_PRECISION <= 3, GEOGRAPHICLIB_PRECISION <= 3,
"Bad value of precision"); "Bad value of precision");
} }
Math(); // Disable constructor Math(); // Disable constructor
public: public:
#if HAVE_LONG_DOUBLE #if HAVE_LONG_DOUBLE
skipping to change at line 170 skipping to change at line 173
x = std::abs(x); y = std::abs(y); x = std::abs(x); y = std::abs(y);
T a = (std::max)(x, y), b = (std::min)(x, y) / (a ? a : 1); T a = (std::max)(x, y), b = (std::min)(x, y) / (a ? a : 1);
return a * std::sqrt(1 + b * b); return a * std::sqrt(1 + b * b);
// For an alternative (square-root free) method see // For an alternative (square-root free) method see
// C. Moler and D. Morrision (1983) http://dx.doi.org/10.1147/rd.276. 0577 // C. Moler and D. Morrision (1983) http://dx.doi.org/10.1147/rd.276. 0577
// and A. A. Dubrulle (1983) http://dx.doi.org/10.1147/rd.276.0582 // and A. A. Dubrulle (1983) http://dx.doi.org/10.1147/rd.276.0582
} }
#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH || (defined(_MSC_VER) && _MSC_VER >= 1 700) #elif GEOGRAPHICLIB_CPLUSPLUS11_MATH || (defined(_MSC_VER) && _MSC_VER >= 1 700)
template<typename T> static inline T hypot(T x, T y) throw() template<typename T> static inline T hypot(T x, T y) throw()
{ return std::hypot(x, y); } { return std::hypot(x, y); }
# if HAVE_LONG_DOUBLE && defined(_MSC_VER) # if HAVE_LONG_DOUBLE && defined(_MSC_VER) && _MSC_VER == 1700
// Visual C++ 11&12 don't have a long double overload for std::hypot -- // Visual C++ 11 doesn't have a long double overload for std::hypot --
// reported to MS on 2013-07-18 // reported to MS on 2013-07-18
// http://connect.microsoft.com/VisualStudio/feedback/details/794416 // http://connect.microsoft.com/VisualStudio/feedback/details/794416
// suppress the resulting "loss of data warning" with // suppress the resulting "loss of data warning" with
static inline long double hypot(long double x, long double y) throw() static inline long double hypot(long double x, long double y) throw()
{ return std::hypot(double(x), double(y)); } { return std::hypot(double(x), double(y)); }
# endif # endif
#elif defined(_MSC_VER) #elif defined(_MSC_VER)
static inline double hypot(double x, double y) throw() static inline double hypot(double x, double y) throw()
{ return _hypot(x, y); } { return _hypot(x, y); }
# if _MSC_VER < 1400 # if _MSC_VER < 1400
 End of changes. 3 change blocks. 
4 lines changed or deleted 7 lines changed or added


 NormalGravity.hpp   NormalGravity.hpp 
skipping to change at line 60 skipping to change at line 60
* References: * References:
* - W. A. Heiskanen and H. Moritz, Physical Geodesy (Freeman, San * - W. A. Heiskanen and H. Moritz, Physical Geodesy (Freeman, San
* Francisco, 1967), Secs. 1-19, 2-7, 2-8 (2-9, 2-10), 6-2 (6-3). * Francisco, 1967), Secs. 1-19, 2-7, 2-8 (2-9, 2-10), 6-2 (6-3).
* - H. Moritz, Geodetic Reference System 1980, J. Geodesy 54(3), 395-405 * - H. Moritz, Geodetic Reference System 1980, J. Geodesy 54(3), 395-405
* (1980) http://dx.doi.org/10.1007/BF02521480 * (1980) http://dx.doi.org/10.1007/BF02521480
* *
* Example of use: * Example of use:
* \include example-NormalGravity.cpp * \include example-NormalGravity.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT NormalGravity { class GEOGRAPHICLIB_EXPORT NormalGravity {
private: private:
static const int maxit_ = 10; static const int maxit_ = 10;
typedef Math::real real; typedef Math::real real;
friend class GravityModel; friend class GravityModel;
real _a, _GM, _omega, _f, _J2, _omega2, _aomega2; real _a, _GM, _omega, _f, _J2, _omega2, _aomega2;
real _e2, _ep2, _b, _E, _U0, _gammae, _gammap, _q0, _m, _k, _fstar; real _e2, _ep2, _b, _E, _U0, _gammae, _gammap, _q0, _m, _k, _fstar;
Geocentric _earth; Geocentric _earth;
static Math::real qf(real ep2) throw(); static Math::real qf(real ep2) throw();
static Math::real qpf(real ep2) throw(); static Math::real qpf(real ep2) throw();
Math::real Jn(int n) const throw(); Math::real Jn(int n) const throw();
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 OSGB.hpp   OSGB.hpp 
skipping to change at line 44 skipping to change at line 44
* Guide to the National Grid</a> * Guide to the National Grid</a>
* *
* \b WARNING: the latitudes and longitudes for the Ordnance Survey grid * \b WARNING: the latitudes and longitudes for the Ordnance Survey grid
* system do not use the WGS84 datum. Do not use the values returned by this * system do not use the WGS84 datum. Do not use the values returned by this
* class in the UTMUPS, MGRS, or Geoid classes without first converting t he * class in the UTMUPS, MGRS, or Geoid classes without first converting t he
* datum (and vice versa). * datum (and vice versa).
* *
* Example of use: * Example of use:
* \include example-OSGB.cpp * \include example-OSGB.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT OSGB { class GEOGRAPHICLIB_EXPORT OSGB {
private: private:
typedef Math::real real; typedef Math::real real;
static const std::string letters_; static const std::string letters_;
static const std::string digits_; static const std::string digits_;
static const TransverseMercator OSGBTM_; static const TransverseMercator OSGBTM_;
static real northoffset_; static real northoffset_;
static bool init_; static bool init_;
enum { enum {
base_ = 10, base_ = 10,
tile_ = 100000, tile_ = 100000,
skipping to change at line 209 skipping to change at line 209
/// \cond SKIP /// \cond SKIP
/** /**
* <b>DEPRECATED</b> * <b>DEPRECATED</b>
* @return \e r the inverse flattening of the Airy 1830 ellipsoid. * @return \e r the inverse flattening of the Airy 1830 ellipsoid.
********************************************************************** / ********************************************************************** /
static Math::real InverseFlattening() throw() { return 1/Flattening(); } static Math::real InverseFlattening() throw() { return 1/Flattening(); }
/// \endcond /// \endcond
/** /**
* @return \e k0 central scale for the OSGB projection (0.9996012717). * @return \e k0 central scale for the OSGB projection (0.9996012717...
).
*
* C. J. Mugnier, Grids &amp; Datums, PE&amp;RS, Oct. 2003, states that
* this is defined as 10<sup>9.9998268&minus;10</sup>.
********************************************************************** / ********************************************************************** /
static Math::real CentralScale() throw() static Math::real CentralScale() throw()
{ return real(0.9996012717L); } { return std::pow(real(10), real(9998268 - 10000000) / real(10000000)); }
/** /**
* @return latitude of the origin for the OSGB projection (49 degrees). * @return latitude of the origin for the OSGB projection (49 degrees).
********************************************************************** / ********************************************************************** /
static Math::real OriginLatitude() throw() { return real(49); } static Math::real OriginLatitude() throw() { return real(49); }
/** /**
* @return longitude of the origin for the OSGB projection (&minus;2 * @return longitude of the origin for the OSGB projection (&minus;2
* degrees). * degrees).
********************************************************************** / ********************************************************************** /
 End of changes. 3 change blocks. 
3 lines changed or deleted 7 lines changed or added


 PolarStereographic.hpp   PolarStereographic.hpp 
skipping to change at line 32 skipping to change at line 32
* <a href="http://pubs.er.usgs.gov/usgspubs/pp/pp1395"> Map Projection s: A * <a href="http://pubs.er.usgs.gov/usgspubs/pp/pp1395"> Map Projection s: A
* Working Manual</a>, USGS Professional Paper 1395 (1987), * Working Manual</a>, USGS Professional Paper 1395 (1987),
* pp. 160--163. * pp. 160--163.
* *
* This is a straightforward implementation of the equations in Snyder ex cept * This is a straightforward implementation of the equations in Snyder ex cept
* that Newton's method is used to invert the projection. * that Newton's method is used to invert the projection.
* *
* Example of use: * Example of use:
* \include example-PolarStereographic.cpp * \include example-PolarStereographic.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT PolarStereographic { class GEOGRAPHICLIB_EXPORT PolarStereographic {
private: private:
typedef Math::real real; typedef Math::real real;
// _Cx used to be _C but g++ 3.4 has a macro of that name // _Cx used to be _C but g++ 3.4 has a macro of that name
real _a, _f, _e2, _e, _e2m, _Cx, _c; real _a, _f, _e2, _e, _e2m, _Cx, _c;
real _k0; real _k0;
static const real tol_; static const real tol_;
static const real overflow_; static const real overflow_;
static const int numit_ = 5; static const int numit_ = 5;
// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right // tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right
static inline real tanx(real x) throw() { static inline real tanx(real x) throw() {
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 PolygonArea.hpp   PolygonArea.hpp 
skipping to change at line 55 skipping to change at line 55
* There's an option to treat the points as defining a polyline instead o f a * There's an option to treat the points as defining a polyline instead o f a
* polygon; in that case, only the perimeter is computed. * polygon; in that case, only the perimeter is computed.
* *
* Example of use: * Example of use:
* \include example-PolygonArea.cpp * \include example-PolygonArea.cpp
* *
* <a href="Planimeter.1.html">Planimeter</a> is a command-line utility * <a href="Planimeter.1.html">Planimeter</a> is a command-line utility
* providing access to the functionality of PolygonArea. * providing access to the functionality of PolygonArea.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT PolygonArea { class GEOGRAPHICLIB_EXPORT PolygonArea {
private: private:
typedef Math::real real; typedef Math::real real;
Geodesic _earth; Geodesic _earth;
real _area0; // Full ellipsoid area real _area0; // Full ellipsoid area
bool _polyline; // Assume polyline (don't close and skip ar ea) bool _polyline; // Assume polyline (don't close and skip ar ea)
unsigned _mask; unsigned _mask;
unsigned _num; unsigned _num;
int _crossings; int _crossings;
Accumulator<real> _areasum, _perimetersum; Accumulator<real> _areasum, _perimetersum;
real _lat0, _lon0, _lat1, _lon1; real _lat0, _lon0, _lat1, _lon1;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 SphericalEngine.hpp   SphericalEngine.hpp 
skipping to change at line 40 skipping to change at line 40
* This serves as the backend to SphericalHarmonic, SphericalHarmonic1, a nd * This serves as the backend to SphericalHarmonic, SphericalHarmonic1, a nd
* SphericalHarmonic2. Typically end-users will not have to access this * SphericalHarmonic2. Typically end-users will not have to access this
* class directly. * class directly.
* *
* See SphericalEngine.cpp for more information on the implementation. * See SphericalEngine.cpp for more information on the implementation.
* *
* Example of use: * Example of use:
* \include example-SphericalEngine.cpp * \include example-SphericalEngine.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT SphericalEngine { class GEOGRAPHICLIB_EXPORT SphericalEngine {
private: private:
typedef Math::real real; typedef Math::real real;
// A table of the square roots of integers // A table of the square roots of integers
static std::vector<real> root_; static std::vector<real> root_;
friend class CircularEngine; // CircularEngine needs access to root_, s cale_ friend class CircularEngine; // CircularEngine needs access to root_, s cale_
// An internal scaling of the coefficients to avoid overflow in // An internal scaling of the coefficients to avoid overflow in
// intermediate calculations. // intermediate calculations.
static const real scale_; static const real scale_;
// Move latitudes near the pole off the axis by this amount. // Move latitudes near the pole off the axis by this amount.
static const real eps_; static const real eps_;
skipping to change at line 91 skipping to change at line 91
* *
* This packages up the \e C, \e S coefficients and information about h ow * This packages up the \e C, \e S coefficients and information about h ow
* the coefficients are stored into a single structure. This allows a * the coefficients are stored into a single structure. This allows a
* vector of type SphericalEngine::coeff to be passed to * vector of type SphericalEngine::coeff to be passed to
* SphericalEngine::Value. This class also includes functions to aid * SphericalEngine::Value. This class also includes functions to aid
* indexing into \e C and \e S. * indexing into \e C and \e S.
* *
* The storage layout of the coefficients is documented in * The storage layout of the coefficients is documented in
* SphericalHarmonic and SphericalHarmonic::SphericalHarmonic. * SphericalHarmonic and SphericalHarmonic::SphericalHarmonic.
********************************************************************** / ********************************************************************** /
class GEOGRAPHIC_EXPORT coeff { class GEOGRAPHICLIB_EXPORT coeff {
private: private:
int _Nx, _nmx, _mmx; int _Nx, _nmx, _mmx;
std::vector<real>::const_iterator _Cnm; std::vector<real>::const_iterator _Cnm;
std::vector<real>::const_iterator _Snm; std::vector<real>::const_iterator _Snm;
public: public:
/** /**
* A default constructor * A default constructor
******************************************************************** **/ ******************************************************************** **/
coeff() coeff()
: _Nx(-1) : _Nx(-1)
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 SphericalHarmonic.hpp   SphericalHarmonic.hpp 
skipping to change at line 65 skipping to change at line 65
* summation and the recursive computation of very high degree and orde r * summation and the recursive computation of very high degree and orde r
* normalised associated Legendre functions, J. Geodesy 76(5), * normalised associated Legendre functions, J. Geodesy 76(5),
* 279--299 (2002). * 279--299 (2002).
* - C. C. Tscherning and K. Poder, Some geodetic applications of Clensha w * - C. C. Tscherning and K. Poder, Some geodetic applications of Clensha w
* summation, Boll. Geod. Sci. Aff. 41(4), 349--375 (1982). * summation, Boll. Geod. Sci. Aff. 41(4), 349--375 (1982).
* *
* Example of use: * Example of use:
* \include example-SphericalHarmonic.cpp * \include example-SphericalHarmonic.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT SphericalHarmonic { class GEOGRAPHICLIB_EXPORT SphericalHarmonic {
public: public:
/** /**
* Supported normalizations for the associated Legendre polynomials. * Supported normalizations for the associated Legendre polynomials.
********************************************************************** / ********************************************************************** /
enum normalization { enum normalization {
/** /**
* Fully normalized associated Legendre polynomials. * Fully normalized associated Legendre polynomials.
* *
* These are defined by <i>P</i><sub><i>nm</i></sub><sup>full</sup>(\ e z) * These are defined by <i>P</i><sub><i>nm</i></sub><sup>full</sup>(\ e z)
* = (&minus;1)<sup><i>m</i></sup> sqrt(\e k (2\e n + 1) (\e n &minus ; \e * = (&minus;1)<sup><i>m</i></sup> sqrt(\e k (2\e n + 1) (\e n &minus ; \e
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 SphericalHarmonic1.hpp   SphericalHarmonic1.hpp 
skipping to change at line 31 skipping to change at line 31
* \brief Spherical harmonic series with a correction to the coefficients * \brief Spherical harmonic series with a correction to the coefficients
* *
* This classes is similar to SphericalHarmonic, except that the coeffici ents * This classes is similar to SphericalHarmonic, except that the coeffici ents
* \e C<sub>\e nm</sub> are replaced by \e C<sub>\e nm</sub> + \e tau * \e C<sub>\e nm</sub> are replaced by \e C<sub>\e nm</sub> + \e tau
* C'<sub>\e nm</sub> (and similarly for \e S<sub>\e nm</sub>). * C'<sub>\e nm</sub> (and similarly for \e S<sub>\e nm</sub>).
* *
* Example of use: * Example of use:
* \include example-SphericalHarmonic1.cpp * \include example-SphericalHarmonic1.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT SphericalHarmonic1 { class GEOGRAPHICLIB_EXPORT SphericalHarmonic1 {
public: public:
/** /**
* Supported normalizations for associate Legendre polynomials. * Supported normalizations for associate Legendre polynomials.
********************************************************************** / ********************************************************************** /
enum normalization { enum normalization {
/** /**
* Fully normalized associated Legendre polynomials. See * Fully normalized associated Legendre polynomials. See
* SphericalHarmonic::FULL for documentation. * SphericalHarmonic::FULL for documentation.
* *
* @hideinitializer * @hideinitializer
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 SphericalHarmonic2.hpp   SphericalHarmonic2.hpp 
skipping to change at line 34 skipping to change at line 34
* \e C<sub>\e nm</sub> are replaced by \e C<sub>\e nm</sub> + \e tau' * \e C<sub>\e nm</sub> are replaced by \e C<sub>\e nm</sub> + \e tau'
* C'<sub>\e nm</sub> + \e tau'' C''<sub>\e nm</sub> (and similarly for \ e * C'<sub>\e nm</sub> + \e tau'' C''<sub>\e nm</sub> (and similarly for \ e
* S<sub>\e nm</sub>). * S<sub>\e nm</sub>).
* *
* Example of use: * Example of use:
* \include example-SphericalHarmonic2.cpp * \include example-SphericalHarmonic2.cpp
**********************************************************************/ **********************************************************************/
// Don't include the GEOGRPAHIC_EXPORT because this header-only class isn 't // Don't include the GEOGRPAHIC_EXPORT because this header-only class isn 't
// used by any other classes in the library. // used by any other classes in the library.
class /*GEOGRAPHIC_EXPORT*/ SphericalHarmonic2 { class /*GEOGRAPHICLIB_EXPORT*/ SphericalHarmonic2 {
public: public:
/** /**
* Supported normalizations for associate Legendre polynomials. * Supported normalizations for associate Legendre polynomials.
********************************************************************** / ********************************************************************** /
enum normalization { enum normalization {
/** /**
* Fully normalized associated Legendre polynomials. See * Fully normalized associated Legendre polynomials. See
* SphericalHarmonic::FULL for documentation. * SphericalHarmonic::FULL for documentation.
* *
* @hideinitializer * @hideinitializer
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 TransverseMercator.hpp   TransverseMercator.hpp 
skipping to change at line 79 skipping to change at line 79
* See \ref transversemercator for a discussion of this projection. * See \ref transversemercator for a discussion of this projection.
* *
* Example of use: * Example of use:
* \include example-TransverseMercator.cpp * \include example-TransverseMercator.cpp
* *
* <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
* command-line utility providing access to the functionality of * command-line utility providing access to the functionality of
* TransverseMercator and TransverseMercatorExact. * TransverseMercator and TransverseMercatorExact.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT TransverseMercator { class GEOGRAPHICLIB_EXPORT TransverseMercator {
private: private:
typedef Math::real real; typedef Math::real real;
static const int maxpow_ = GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER; static const int maxpow_ = GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER;
static const real tol_; static const real tol_;
static const real overflow_; static const real overflow_;
static const int numit_ = 5; static const int numit_ = 5;
real _a, _f, _k0, _e2, _e, _e2m, _c, _n; real _a, _f, _k0, _e2, _e, _e2m, _c, _n;
// _alp[0] and _bet[0] unused // _alp[0] and _bet[0] unused
real _a1, _b1, _alp[maxpow_ + 1], _bet[maxpow_ + 1]; real _a1, _b1, _alp[maxpow_ + 1], _bet[maxpow_ + 1];
// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right // tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 TransverseMercatorExact.hpp   TransverseMercatorExact.hpp 
skipping to change at line 79 skipping to change at line 79
* See \ref transversemercator for a discussion of this projection. * See \ref transversemercator for a discussion of this projection.
* *
* Example of use: * Example of use:
* \include example-TransverseMercatorExact.cpp * \include example-TransverseMercatorExact.cpp
* *
* <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
* command-line utility providing access to the functionality of * command-line utility providing access to the functionality of
* TransverseMercator and TransverseMercatorExact. * TransverseMercator and TransverseMercatorExact.
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT TransverseMercatorExact { class GEOGRAPHICLIB_EXPORT TransverseMercatorExact {
private: private:
typedef Math::real real; typedef Math::real real;
static const real tol_; static const real tol_;
static const real tol1_; static const real tol1_;
static const real tol2_; static const real tol2_;
static const real taytol_; static const real taytol_;
static const real overflow_; static const real overflow_;
static const int numit_ = 10; static const int numit_ = 10;
real _a, _f, _k0, _mu, _mv, _e; real _a, _f, _k0, _mu, _mv, _e;
bool _extendp; bool _extendp;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 UTMUPS.hpp   UTMUPS.hpp 
skipping to change at line 61 skipping to change at line 61
* <a href="http://earth-info.nga.mil/GandG/geotrans/index.html">geotrans </a> * <a href="http://earth-info.nga.mil/GandG/geotrans/index.html">geotrans </a>
* also provides conversions to and from UTM and UPS. Version 2.4.2 (and * also provides conversions to and from UTM and UPS. Version 2.4.2 (and
* earlier) suffers from some drawbacks: * earlier) suffers from some drawbacks:
* - Inconsistent rules are used to determine the whether a particular UT M or * - Inconsistent rules are used to determine the whether a particular UT M or
* UPS coordinate is legal. A more systematic approach is taken here. * UPS coordinate is legal. A more systematic approach is taken here.
* - The underlying projections are not very accurately implemented. * - The underlying projections are not very accurately implemented.
* *
* Example of use: * Example of use:
* \include example-UTMUPS.cpp * \include example-UTMUPS.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT UTMUPS { class GEOGRAPHICLIB_EXPORT UTMUPS {
private: private:
typedef Math::real real; typedef Math::real real;
static const real falseeasting_[4]; static const real falseeasting_[4];
static const real falsenorthing_[4]; static const real falsenorthing_[4];
static const real mineasting_[4]; static const real mineasting_[4];
static const real maxeasting_[4]; static const real maxeasting_[4];
static const real minnorthing_[4]; static const real minnorthing_[4];
static const real maxnorthing_[4]; static const real maxnorthing_[4];
static const int epsg01N = 32601; // EPSG code for UTM 01N static const int epsg01N = 32601; // EPSG code for UTM 01N
static const int epsg60N = 32660; // EPSG code for UTM 60N static const int epsg60N = 32660; // EPSG code for UTM 60N
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 Utility.hpp   Utility.hpp 
skipping to change at line 33 skipping to change at line 33
#endif #endif
namespace GeographicLib { namespace GeographicLib {
/** /**
* \brief Some utility routines for %GeographicLib * \brief Some utility routines for %GeographicLib
* *
* Example of use: * Example of use:
* \include example-Utility.cpp * \include example-Utility.cpp
**********************************************************************/ **********************************************************************/
class GEOGRAPHIC_EXPORT Utility { class GEOGRAPHICLIB_EXPORT Utility {
private: private:
static bool gregorian(int y, int m, int d) { static bool gregorian(int y, int m, int d) {
// The original cut over to the Gregorian calendar in Pope Gregory XI II's // The original cut over to the Gregorian calendar in Pope Gregory XI II's
// time had 1582-10-04 followed by 1582-10-15. Here we implement the // time had 1582-10-04 followed by 1582-10-15. Here we implement the
// switch over used by the English-speaking world where 1752-09-02 wa s // switch over used by the English-speaking world where 1752-09-02 wa s
// followed by 1752-09-14. We also assume that the year always begins // followed by 1752-09-14. We also assume that the year always begins
// with January 1, whereas in reality it often was reckoned to begin in // with January 1, whereas in reality it often was reckoned to begin in
// March. // March.
return 100 * (100 * y + m) + d >= 17520914; // or 15821004 return 100 * (100 * y + m) + d >= 17520914; // or 15821004
} }
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/