[geographiclib] 01/04: Imported Upstream version 1.21

Francesco Lovergine frankie at moszumanska.debian.org
Wed Mar 12 08:59:48 UTC 2014


This is an automated email from the git hooks/post-receive script.

frankie pushed a commit to branch master
in repository geographiclib.

commit de34085519d95238a5062a7fb8ccc7506848abd3
Author: Francesco Paolo Lovergine <frankie at debian.org>
Date:   Thu May 24 16:19:33 2012 +0200

    Imported Upstream version 1.21
---
 00README.txt                                       |    5 +-
 CMakeLists.txt                                     |  245 +-
 LICENSE.txt                                        |    2 +-
 Makefile.mk                                        |   14 +-
 NEWS                                               |   53 +-
 cmake/FindGeographicLib.cmake                      |    6 +-
 cmake/Makefile.am                                  |    5 +-
 cmake/Makefile.in                                  |    5 +-
 cmake/geographiclib-config-version.cmake.in        |   38 +-
 cmake/geographiclib-config.cmake.in                |   52 +-
 configure                                          |   26 +-
 configure.ac                                       |   10 +-
 doc/CMakeLists.txt                                 |   38 +-
 doc/Geographic.doc                                 |  492 ++--
 doc/Makefile.am                                    |   34 +-
 doc/Makefile.in                                    |   55 +-
 doc/Makefile.mk                                    |   11 +-
 doc/{Doxyfile => doxyfile.in}                      |   12 +-
 doc/html/Accumulator_8hpp.html                     |   40 +-
 doc/html/Accumulator_8hpp_source.html              |   64 +-
 doc/html/AlbersEqualArea_8cpp.html                 |   38 +-
 doc/html/AlbersEqualArea_8cpp_source.html          |  148 +-
 doc/html/AlbersEqualArea_8hpp.html                 |   42 +-
 doc/html/AlbersEqualArea_8hpp_source.html          |  540 ++--
 doc/html/AzimuthalEquidistant_8cpp.html            |   44 +-
 doc/html/AzimuthalEquidistant_8cpp_source.html     |   46 +-
 doc/html/AzimuthalEquidistant_8hpp.html            |   44 +-
 doc/html/AzimuthalEquidistant_8hpp_source.html     |  262 +-
 doc/html/CartConvert.1.html                        |   21 +-
 doc/html/CartConvert_8cpp.html                     |   38 +-
 doc/html/CartConvert_8cpp_source.html              |  345 +--
 doc/html/CassiniSoldner_8cpp.html                  |   44 +-
 doc/html/CassiniSoldner_8cpp_source.html           |   50 +-
 doc/html/CassiniSoldner_8hpp.html                  |   44 +-
 doc/html/CassiniSoldner_8hpp_source.html           |  394 +--
 doc/html/CircularEngine_8cpp.html                  |   38 +-
 doc/html/CircularEngine_8cpp_source.html           |   36 +-
 doc/html/CircularEngine_8hpp.html                  |   38 +-
 doc/html/CircularEngine_8hpp_source.html           |   68 +-
 doc/html/ConicProj.1.html                          |   24 +-
 doc/html/ConicProj_8cpp.html                       |   38 +-
 doc/html/ConicProj_8cpp_source.html                |  425 +--
 doc/html/Constants_8hpp.html                       |   48 +-
 doc/html/Constants_8hpp_source.html                |  464 ++--
 doc/html/DMS_8cpp.html                             |   44 +-
 doc/html/DMS_8cpp_source.html                      |  202 +-
 doc/html/DMS_8hpp.html                             |   44 +-
 doc/html/DMS_8hpp_source.html                      |  258 +-
 doc/html/EllipticFunction_8cpp.html                |   44 +-
 doc/html/EllipticFunction_8cpp_source.html         |   64 +-
 doc/html/EllipticFunction_8hpp.html                |   44 +-
 doc/html/EllipticFunction_8hpp_source.html         |   82 +-
 doc/html/GeoConvert.1.html                         |   35 +-
 doc/html/GeoConvert_8cpp.html                      |   38 +-
 doc/html/GeoConvert_8cpp_source.html               |  383 +--
 doc/html/GeoCoords_8cpp.html                       |   44 +-
 doc/html/GeoCoords_8cpp_source.html                |  188 +-
 doc/html/GeoCoords_8hpp.html                       |   44 +-
 doc/html/GeoCoords_8hpp_source.html                |  881 +++---
 doc/html/Geocentric_8cpp.html                      |   44 +-
 doc/html/Geocentric_8cpp_source.html               |   78 +-
 doc/html/Geocentric_8hpp.html                      |   44 +-
 doc/html/Geocentric_8hpp_source.html               |  475 ++--
 doc/html/Geod.1.html                               |   55 +-
 doc/html/Geod_8cpp.html                            |   64 +-
 doc/html/Geod_8cpp_source.html                     |  501 ++--
 doc/html/GeodesicLine_8cpp.html                    |   44 +-
 doc/html/GeodesicLine_8cpp_source.html             |   64 +-
 doc/html/GeodesicLine_8hpp.html                    |   44 +-
 doc/html/GeodesicLine_8hpp_source.html             | 1103 ++++----
 doc/html/GeodesicProj.1.html                       |   24 +-
 doc/html/GeodesicProj_8cpp.html                    |   38 +-
 doc/html/GeodesicProj_8cpp_source.html             |  375 +--
 doc/html/Geodesic_8cpp.html                        |   44 +-
 doc/html/Geodesic_8cpp_source.html                 | 2807 ++++++++++----------
 doc/html/Geodesic_8hpp.html                        |   44 +-
 doc/html/Geodesic_8hpp_source.html                 | 1477 +++++-----
 doc/html/Geographic.tag                            |  297 +--
 doc/html/Geographic_8doc.html                      |   36 +-
 doc/html/GeoidEval.1.html                          |   66 +-
 doc/html/GeoidEval_8cpp.html                       |   38 +-
 doc/html/GeoidEval_8cpp_source.html                |  526 ++--
 doc/html/Geoid_8cpp.html                           |   51 +-
 doc/html/Geoid_8cpp_source.html                    | 1040 ++++----
 doc/html/Geoid_8hpp.html                           |   61 +-
 doc/html/Geoid_8hpp_source.html                    |  941 ++++---
 doc/html/Gnomonic_8cpp.html                        |   38 +-
 doc/html/Gnomonic_8cpp_source.html                 |   46 +-
 doc/html/Gnomonic_8hpp.html                        |   42 +-
 doc/html/Gnomonic_8hpp_source.html                 |  284 +-
 doc/html/Gravity.1.html                            |   26 +-
 doc/html/GravityCircle_8cpp.html                   |   38 +-
 doc/html/GravityCircle_8cpp_source.html            |   56 +-
 doc/html/GravityCircle_8hpp.html                   |   42 +-
 doc/html/GravityCircle_8hpp_source.html            |  567 ++--
 doc/html/GravityModel_8cpp.html                    |   44 +-
 doc/html/GravityModel_8cpp_source.html             |  118 +-
 doc/html/GravityModel_8hpp.html                    |   42 +-
 doc/html/GravityModel_8hpp_source.html             |  897 ++++---
 doc/html/Gravity_8cpp.html                         |   38 +-
 doc/html/Gravity_8cpp_source.html                  |  560 ++--
 doc/html/LICENSE.txt                               |    2 +-
 doc/html/LambertConformalConic_8cpp.html           |   42 +-
 doc/html/LambertConformalConic_8cpp_source.html    |  124 +-
 doc/html/LambertConformalConic_8hpp.html           |   42 +-
 doc/html/LambertConformalConic_8hpp_source.html    |  576 ++--
 doc/html/LocalCartesian_8cpp.html                  |   44 +-
 doc/html/LocalCartesian_8cpp_source.html           |   44 +-
 doc/html/LocalCartesian_8hpp.html                  |   44 +-
 doc/html/LocalCartesian_8hpp_source.html           |  449 ++--
 doc/html/MGRS_8cpp.html                            |   44 +-
 doc/html/MGRS_8cpp_source.html                     |   60 +-
 doc/html/MGRS_8hpp.html                            |   44 +-
 doc/html/MGRS_8hpp_source.html                     |   90 +-
 doc/html/MagneticCircle_8cpp.html                  |   38 +-
 doc/html/MagneticCircle_8cpp_source.html           |   34 +-
 doc/html/MagneticCircle_8hpp.html                  |   42 +-
 doc/html/MagneticCircle_8hpp_source.html           |  283 +-
 doc/html/MagneticField.1.html                      |   26 +-
 doc/html/MagneticField_8cpp.html                   |   38 +-
 doc/html/MagneticField_8cpp_source.html            |  625 +++--
 doc/html/MagneticModel_8cpp.html                   |   42 +-
 doc/html/MagneticModel_8cpp_source.html            |   68 +-
 doc/html/MagneticModel_8hpp.html                   |   42 +-
 doc/html/MagneticModel_8hpp_source.html            |  601 +++--
 doc/html/Math_8hpp.html                            |   52 +-
 doc/html/Math_8hpp_source.html                     |  112 +-
 doc/html/NormalGravity_8cpp.html                   |   42 +-
 doc/html/NormalGravity_8cpp_source.html            |   98 +-
 doc/html/NormalGravity_8hpp.html                   |   38 +-
 doc/html/NormalGravity_8hpp_source.html            |   94 +-
 doc/html/OSGB_8cpp.html                            |   44 +-
 doc/html/OSGB_8cpp_source.html                     |   44 +-
 doc/html/OSGB_8hpp.html                            |   42 +-
 doc/html/OSGB_8hpp_source.html                     |  140 +-
 doc/html/Planimeter.1.html                         |   21 +-
 doc/html/Planimeter_8cpp.html                      |   38 +-
 doc/html/Planimeter_8cpp_source.html               |  317 ++-
 doc/html/PolarStereographic_8cpp.html              |   44 +-
 doc/html/PolarStereographic_8cpp_source.html       |   80 +-
 doc/html/PolarStereographic_8hpp.html              |   44 +-
 doc/html/PolarStereographic_8hpp_source.html       |  126 +-
 doc/html/PolygonArea_8cpp.html                     |   38 +-
 doc/html/PolygonArea_8cpp_source.html              |   34 +-
 doc/html/PolygonArea_8hpp.html                     |   42 +-
 doc/html/PolygonArea_8hpp_source.html              |  323 +--
 doc/html/SphericalEngine_8cpp.html                 |   42 +-
 doc/html/SphericalEngine_8cpp_source.html          |  100 +-
 doc/html/SphericalEngine_8hpp.html                 |   42 +-
 doc/html/SphericalEngine_8hpp_source.html          |   60 +-
 doc/html/SphericalHarmonic1_8hpp.html              |   38 +-
 doc/html/SphericalHarmonic1_8hpp_source.html       |   68 +-
 doc/html/SphericalHarmonic2_8hpp.html              |   38 +-
 doc/html/SphericalHarmonic2_8hpp_source.html       |   70 +-
 doc/html/SphericalHarmonic_8hpp.html               |   42 +-
 doc/html/SphericalHarmonic_8hpp_source.html        |   68 +-
 doc/html/TransverseMercatorExact_8cpp.html         |   44 +-
 doc/html/TransverseMercatorExact_8cpp_source.html  |  136 +-
 doc/html/TransverseMercatorExact_8hpp.html         |   44 +-
 doc/html/TransverseMercatorExact_8hpp_source.html  |  428 +--
 doc/html/TransverseMercatorProj.1.html             |   24 +-
 doc/html/TransverseMercatorProj_8cpp.html          |   38 +-
 doc/html/TransverseMercatorProj_8cpp_source.html   |  399 +--
 doc/html/TransverseMercator_8cpp.html              |   44 +-
 doc/html/TransverseMercator_8cpp_source.html       |  100 +-
 doc/html/TransverseMercator_8hpp.html              |   44 +-
 doc/html/TransverseMercator_8hpp_source.html       |  306 ++-
 doc/html/UTMUPS_8cpp.html                          |   44 +-
 doc/html/UTMUPS_8cpp_source.html                   |   84 +-
 doc/html/UTMUPS_8hpp.html                          |   44 +-
 doc/html/UTMUPS_8hpp_source.html                   |   98 +-
 doc/html/Utility_8cpp.html                         |   38 +-
 doc/html/Utility_8cpp_source.html                  |   38 +-
 doc/html/Utility_8hpp.html                         |   42 +-
 doc/html/Utility_8hpp_source.html                  |  156 +-
 doc/html/annotated.html                            |   36 +-
 .../classGeographicLib_1_1Accumulator-members.html |   64 +-
 doc/html/classGeographicLib_1_1Accumulator.html    |  151 +-
 ...ssGeographicLib_1_1AlbersEqualArea-members.html |   35 +-
 .../classGeographicLib_1_1AlbersEqualArea.html     |   80 +-
 ...graphicLib_1_1AzimuthalEquidistant-members.html |   35 +-
 ...classGeographicLib_1_1AzimuthalEquidistant.html |   72 +-
 ...assGeographicLib_1_1CassiniSoldner-members.html |   35 +-
 doc/html/classGeographicLib_1_1CassiniSoldner.html |   80 +-
 ...assGeographicLib_1_1CircularEngine-members.html |   34 +-
 doc/html/classGeographicLib_1_1CircularEngine.html |   42 +-
 .../classGeographicLib_1_1Constants-members.html   |   59 +-
 doc/html/classGeographicLib_1_1Constants.html      |  181 +-
 doc/html/classGeographicLib_1_1DMS-members.html    |   39 +-
 doc/html/classGeographicLib_1_1DMS.html            |  186 +-
 ...sGeographicLib_1_1EllipticFunction-members.html |   34 +-
 .../classGeographicLib_1_1EllipticFunction.html    |   42 +-
 .../classGeographicLib_1_1GeoCoords-members.html   |   36 +-
 doc/html/classGeographicLib_1_1GeoCoords.html      |  186 +-
 .../classGeographicLib_1_1Geocentric-members.html  |   35 +-
 doc/html/classGeographicLib_1_1Geocentric.html     |   96 +-
 .../classGeographicLib_1_1Geodesic-members.html    |   35 +-
 doc/html/classGeographicLib_1_1Geodesic.html       |  124 +-
 ...classGeographicLib_1_1GeodesicLine-members.html |   35 +-
 doc/html/classGeographicLib_1_1GeodesicLine.html   |  126 +-
 ...lassGeographicLib_1_1GeographicErr-members.html |   34 +-
 doc/html/classGeographicLib_1_1GeographicErr.html  |   40 +-
 doc/html/classGeographicLib_1_1Geoid-members.html  |   35 +-
 doc/html/classGeographicLib_1_1Geoid.html          |  128 +-
 .../classGeographicLib_1_1Gnomonic-members.html    |   35 +-
 doc/html/classGeographicLib_1_1Gnomonic.html       |   74 +-
 ...lassGeographicLib_1_1GravityCircle-members.html |   34 +-
 doc/html/classGeographicLib_1_1GravityCircle.html  |   63 +-
 ...classGeographicLib_1_1GravityModel-members.html |   34 +-
 doc/html/classGeographicLib_1_1GravityModel.html   |   77 +-
 ...raphicLib_1_1LambertConformalConic-members.html |   35 +-
 ...lassGeographicLib_1_1LambertConformalConic.html |  136 +-
 ...assGeographicLib_1_1LocalCartesian-members.html |   35 +-
 doc/html/classGeographicLib_1_1LocalCartesian.html |   82 +-
 doc/html/classGeographicLib_1_1MGRS-members.html   |   35 +-
 doc/html/classGeographicLib_1_1MGRS.html           |   61 +-
 ...assGeographicLib_1_1MagneticCircle-members.html |   34 +-
 doc/html/classGeographicLib_1_1MagneticCircle.html |   57 +-
 ...lassGeographicLib_1_1MagneticModel-members.html |   34 +-
 doc/html/classGeographicLib_1_1MagneticModel.html  |   67 +-
 doc/html/classGeographicLib_1_1Math-members.html   |   62 +-
 doc/html/classGeographicLib_1_1Math.html           |  118 +-
 ...lassGeographicLib_1_1NormalGravity-members.html |   34 +-
 doc/html/classGeographicLib_1_1NormalGravity.html  |   42 +-
 doc/html/classGeographicLib_1_1OSGB-members.html   |   35 +-
 doc/html/classGeographicLib_1_1OSGB.html           |   69 +-
 ...eographicLib_1_1PolarStereographic-members.html |   35 +-
 .../classGeographicLib_1_1PolarStereographic.html  |   73 +-
 .../classGeographicLib_1_1PolygonArea-members.html |   34 +-
 doc/html/classGeographicLib_1_1PolygonArea.html    |   47 +-
 ...ssGeographicLib_1_1SphericalEngine-members.html |   38 +-
 .../classGeographicLib_1_1SphericalEngine.html     |   54 +-
 ...hicLib_1_1SphericalEngine_1_1coeff-members.html |   34 +-
 ...sGeographicLib_1_1SphericalEngine_1_1coeff.html |   42 +-
 ...GeographicLib_1_1SphericalHarmonic-members.html |   34 +-
 .../classGeographicLib_1_1SphericalHarmonic.html   |   38 +-
 ...eographicLib_1_1SphericalHarmonic1-members.html |   34 +-
 .../classGeographicLib_1_1SphericalHarmonic1.html  |   38 +-
 ...eographicLib_1_1SphericalHarmonic2-members.html |   34 +-
 .../classGeographicLib_1_1SphericalHarmonic2.html  |   38 +-
 ...eographicLib_1_1TransverseMercator-members.html |   35 +-
 .../classGeographicLib_1_1TransverseMercator.html  |   82 +-
 ...phicLib_1_1TransverseMercatorExact-members.html |   35 +-
 ...ssGeographicLib_1_1TransverseMercatorExact.html |   76 +-
 doc/html/classGeographicLib_1_1UTMUPS-members.html |   35 +-
 doc/html/classGeographicLib_1_1UTMUPS.html         |   75 +-
 .../classGeographicLib_1_1Utility-members.html     |   50 +-
 doc/html/classGeographicLib_1_1Utility.html        |  173 +-
 doc/html/classes.html                              |   80 +-
 doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html |  146 +-
 doc/html/dir_27ad12676aedce3065ab152db424ea04.html |   74 +-
 doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html |   34 +-
 doc/html/dir_b4d36717c8020107727c093197410e9d.html |  170 +-
 doc/html/dirs.html                                 |   34 +-
 doc/html/doxygen.css                               |  127 +-
 doc/html/files.html                                |   34 +-
 doc/html/functions.html                            |   40 +-
 doc/html/functions_0x62.html                       |   34 +-
 doc/html/functions_0x63.html                       |   38 +-
 doc/html/functions_0x64.html                       |   53 +-
 doc/html/functions_0x65.html                       |   38 +-
 doc/html/functions_0x66.html                       |   38 +-
 doc/html/functions_0x67.html                       |   46 +-
 doc/html/functions_0x68.html                       |   36 +-
 doc/html/functions_0x69.html                       |   61 +-
 doc/html/functions_0x6b.html                       |   34 +-
 doc/html/functions_0x6c.html                       |   46 +-
 doc/html/functions_0x6d.html                       |   34 +-
 doc/html/functions_0x6e.html                       |   40 +-
 doc/html/functions_0x6f.html                       |   58 +-
 doc/html/functions_0x70.html                       |   36 +-
 doc/html/functions_0x72.html                       |   36 +-
 doc/html/functions_0x73.html                       |   40 +-
 doc/html/functions_0x74.html                       |   34 +-
 doc/html/functions_0x75.html                       |   36 +-
 doc/html/functions_0x76.html                       |   36 +-
 doc/html/functions_0x77.html                       |   45 +-
 doc/html/functions_0x79.html                       |   34 +-
 doc/html/functions_0x7a.html                       |   34 +-
 doc/html/functions_enum.html                       |   34 +-
 doc/html/functions_eval.html                       |   34 +-
 doc/html/functions_func.html                       |   40 +-
 doc/html/functions_func_0x63.html                  |   38 +-
 doc/html/functions_func_0x64.html                  |   52 +-
 doc/html/functions_func_0x65.html                  |   38 +-
 doc/html/functions_func_0x66.html                  |   38 +-
 doc/html/functions_func_0x67.html                  |   42 +-
 doc/html/functions_func_0x68.html                  |   36 +-
 doc/html/functions_func_0x69.html                  |   61 +-
 doc/html/functions_func_0x6b.html                  |   34 +-
 doc/html/functions_func_0x6c.html                  |   36 +-
 doc/html/functions_func_0x6d.html                  |   34 +-
 doc/html/functions_func_0x6e.html                  |   40 +-
 doc/html/functions_func_0x6f.html                  |   58 +-
 doc/html/functions_func_0x70.html                  |   36 +-
 doc/html/functions_func_0x72.html                  |   36 +-
 doc/html/functions_func_0x73.html                  |   42 +-
 doc/html/functions_func_0x74.html                  |   34 +-
 doc/html/functions_func_0x75.html                  |   36 +-
 doc/html/functions_func_0x76.html                  |   36 +-
 doc/html/functions_func_0x77.html                  |   43 +-
 doc/html/functions_func_0x79.html                  |   34 +-
 doc/html/functions_func_0x7a.html                  |   34 +-
 doc/html/functions_rela.html                       |   34 +-
 doc/html/functions_type.html                       |   34 +-
 doc/html/functions_vars.html                       |   34 +-
 doc/html/geocentric.html                           |   38 +-
 doc/html/geodesic.html                             |   42 +-
 doc/html/geoid.html                                |   76 +-
 doc/html/globals.html                              |   50 +-
 doc/html/globals_defs.html                         |   46 +-
 doc/html/globals_func.html                         |   38 +-
 doc/html/globals_type.html                         |   34 +-
 doc/html/gravity.html                              |  167 +-
 doc/html/index.html                                |   57 +-
 doc/html/install.html                              |  106 +-
 doc/html/intro.html                                |   40 +-
 doc/html/magnetic.html                             |   43 +-
 doc/html/namespaceGeographicLib.html               |   34 +-
 doc/html/namespaces.html                           |   34 +-
 doc/html/old.html                                  |  171 +-
 doc/html/organization.html                         |   42 +-
 doc/html/other.html                                |   47 +-
 doc/html/pages.html                                |   42 +-
 doc/html/start.html                                |   44 +-
 doc/html/transversemercator.html                   |   42 +-
 doc/html/utilities.html                            |   44 +-
 doc/scripts/GeographicLib/Geodesic.js              |   36 +-
 doc/scripts/GeographicLib/GeodesicLine.js          |    6 +-
 doc/scripts/GeographicLib/Math.js                  |    6 +-
 doc/scripts/GeographicLib/PolygonArea.js           |    4 +-
 examples/CMakeLists.txt                            |   25 +-
 examples/GeoidToGTX.cpp                            |  103 +
 examples/Makefile.am                               |    5 +-
 examples/Makefile.in                               |    5 +-
 examples/example-GeodesicLine.cpp                  |    8 +-
 examples/example-LambertConformalConic.cpp         |   60 +-
 include/GeographicLib/AlbersEqualArea.hpp          |    8 +-
 include/GeographicLib/AzimuthalEquidistant.hpp     |   14 +-
 include/GeographicLib/CassiniSoldner.hpp           |   16 +-
 include/GeographicLib/Config.h                     |    2 +-
 include/GeographicLib/Constants.hpp                |   10 +-
 include/GeographicLib/DMS.hpp                      |   50 +-
 include/GeographicLib/EllipticFunction.hpp         |    6 +-
 include/GeographicLib/GeoCoords.hpp                |   59 +-
 include/GeographicLib/Geocentric.hpp               |   13 +-
 include/GeographicLib/Geodesic.hpp                 |   11 +-
 include/GeographicLib/GeodesicLine.hpp             |   11 +-
 include/GeographicLib/Geoid.hpp                    |   53 +-
 include/GeographicLib/Gnomonic.hpp                 |   10 +-
 include/GeographicLib/GravityCircle.hpp            |    5 +-
 include/GeographicLib/GravityModel.hpp             |    5 +-
 include/GeographicLib/LambertConformalConic.hpp    |   14 +-
 include/GeographicLib/LocalCartesian.hpp           |   13 +-
 include/GeographicLib/MGRS.hpp                     |   10 +-
 include/GeographicLib/MagneticCircle.hpp           |    5 +-
 include/GeographicLib/MagneticModel.hpp            |    5 +-
 include/GeographicLib/Math.hpp                     |   44 +-
 include/GeographicLib/OSGB.hpp                     |    6 +-
 include/GeographicLib/PolarStereographic.hpp       |    8 +-
 include/GeographicLib/PolygonArea.hpp              |    5 +-
 include/GeographicLib/SphericalEngine.hpp          |   10 +-
 include/GeographicLib/SphericalHarmonic.hpp        |    4 +-
 include/GeographicLib/TransverseMercator.hpp       |   12 +-
 include/GeographicLib/TransverseMercatorExact.hpp  |   12 +-
 include/GeographicLib/UTMUPS.hpp                   |   10 +-
 include/GeographicLib/Utility.hpp                  |   62 +-
 ltmain.sh                                          |    2 +-
 man/CMakeLists.txt                                 |   18 +-
 man/CartConvert.1                                  |   21 +-
 man/CartConvert.1.html                             |   21 +-
 man/CartConvert.pod                                |   21 +-
 man/CartConvert.usage                              |   30 +-
 man/ConicProj.1                                    |   24 +-
 man/ConicProj.1.html                               |   24 +-
 man/ConicProj.pod                                  |   24 +-
 man/ConicProj.usage                                |   26 +-
 man/GeoConvert.1                                   |   33 +-
 man/GeoConvert.1.html                              |   35 +-
 man/GeoConvert.pod                                 |   34 +-
 man/GeoConvert.usage                               |   37 +-
 man/Geod.1                                         |   53 +-
 man/Geod.1.html                                    |   55 +-
 man/Geod.pod                                       |   56 +-
 man/Geod.usage                                     |   61 +-
 man/GeodesicProj.1                                 |   24 +-
 man/GeodesicProj.1.html                            |   24 +-
 man/GeodesicProj.pod                               |   24 +-
 man/GeodesicProj.usage                             |   30 +-
 man/GeoidEval.1                                    |   64 +-
 man/GeoidEval.1.html                               |   66 +-
 man/GeoidEval.pod                                  |   65 +-
 man/GeoidEval.usage                                |   68 +-
 man/Gravity.1                                      |   26 +-
 man/Gravity.1.html                                 |   26 +-
 man/Gravity.pod                                    |   26 +-
 man/Gravity.usage                                  |   28 +-
 man/MagneticField.1                                |   26 +-
 man/MagneticField.1.html                           |   26 +-
 man/MagneticField.pod                              |   26 +-
 man/MagneticField.usage                            |   32 +-
 man/Makefile.am                                    |    6 +-
 man/Makefile.in                                    |   32 +-
 man/Makefile.mk                                    |    5 +-
 man/Planimeter.1                                   |   21 +-
 man/Planimeter.1.html                              |   21 +-
 man/Planimeter.pod                                 |   21 +-
 man/Planimeter.usage                               |   26 +-
 man/TransverseMercatorProj.1                       |   24 +-
 man/TransverseMercatorProj.1.html                  |   24 +-
 man/TransverseMercatorProj.pod                     |   24 +-
 man/TransverseMercatorProj.usage                   |   26 +-
 matlab/CMakeLists.txt                              |   54 +-
 matlab/Makefile.am                                 |   58 +-
 matlab/Makefile.in                                 |   58 +-
 python/Makefile.am                                 |   18 +-
 python/Makefile.in                                 |   18 +-
 python/geographiclib/CMakeLists.txt                |    4 +-
 python/geographiclib/accumulator.py                |    4 +-
 python/geographiclib/geodesic.py                   |   41 +-
 python/geographiclib/geodesicline.py               |    8 +-
 python/geographiclib/polygonarea.py                |    4 +-
 python/setup.py                                    |    7 +-
 src/AzimuthalEquidistant.cpp                       |    6 +-
 src/CMakeLists.txt                                 |   22 +-
 src/CassiniSoldner.cpp                             |    6 +-
 src/DMS.cpp                                        |   30 +-
 src/EllipticFunction.cpp                           |    8 +-
 src/GeoCoords.cpp                                  |   16 +-
 src/Geocentric.cpp                                 |    8 +-
 src/Geodesic.cpp                                   |   37 +-
 src/GeodesicLine.cpp                               |    6 +-
 src/Geographic.pro                                 |   74 +-
 src/Geoid.cpp                                      |   34 +-
 src/GravityModel.cpp                               |   14 +-
 src/LambertConformalConic.cpp                      |    6 +-
 src/LocalCartesian.cpp                             |    6 +-
 src/MGRS.cpp                                       |   18 +-
 src/MagneticModel.cpp                              |    8 +-
 src/Makefile.am                                    |    4 +-
 src/Makefile.in                                    |    4 +-
 src/NormalGravity.cpp                              |   12 +-
 src/OSGB.cpp                                       |    6 +-
 src/PolarStereographic.cpp                         |    8 +-
 src/SphericalEngine.cpp                            |    4 +-
 src/TransverseMercator.cpp                         |    6 +-
 src/TransverseMercatorExact.cpp                    |    6 +-
 src/UTMUPS.cpp                                     |   24 +-
 tools/CMakeLists.txt                               |   40 +-
 tools/CartConvert.cpp                              |   37 +-
 tools/ConicProj.cpp                                |   35 +-
 tools/GeoConvert.cpp                               |   41 +-
 tools/Geod.cpp                                     |   67 +-
 tools/GeodesicProj.cpp                             |   33 +-
 tools/GeoidEval.cpp                                |   50 +-
 tools/Gravity.cpp                                  |   40 +-
 tools/MagneticField.cpp                            |   35 +-
 tools/Makefile.am                                  |    5 +-
 tools/Makefile.in                                  |    6 +-
 tools/Planimeter.cpp                               |   33 +-
 tools/TransverseMercatorProj.cpp                   |   33 +-
 461 files changed, 23598 insertions(+), 16130 deletions(-)

diff --git a/00README.txt b/00README.txt
index 4dfdb42..902f3af 100644
--- a/00README.txt
+++ b/00README.txt
@@ -1,4 +1,4 @@
-# $Id: ce05798271e2894b05e0e01a36a3f55ab9c8a94a $
+# $Id: 1001171ae9372d1bfc31646763709bc4e4f279e1 $
 
 A library for geographic projections.
 
@@ -49,6 +49,7 @@ Files
 
     examples/
       example-*.cpp -- simple usage examples for all the classes
+      GeoidToGTX.cpp -- a parallelization example
 
     tools/
       GeoConvert.cpp -- geographic conversion utility
@@ -97,7 +98,7 @@ Files
       polygonarea.{cpp,m} -- Matlab code for polygon areas
 
     doc/
-      Doxyfile -- Doxygen config file
+      doxyfile.in -- Doxygen config file
       Geographic.doc -- main page of Doxygen documentation
       geodseries30.html -- geodesic series to 30th order
       tmseries30.html -- transverse Mercator series to 30th order
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dd17710..559ce10 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,17 +1,28 @@
-# $Id: 59c5ef60981a8c92e428ce2762b4f925abee2cfc $
+# $Id: a3ad2e3a9ae71b3bc393ca9a3f1ab2277f171d35 $
 
 cmake_minimum_required (VERSION 2.6)
 project (GeographicLib)
 
 # Version information
 set (GeographicLib_VERSION_MAJOR 1)
-set (GeographicLib_VERSION_MINOR 18)
+set (GeographicLib_VERSION_MINOR 21)
 set (GeographicLib_VERSION
      "${GeographicLib_VERSION_MAJOR}.${GeographicLib_VERSION_MINOR}")
 # The library version tracks the numbering given by libtool in the
 # autoconf set up.
 set (LIBVERSION 9)
-set (LIBVERSIONFULL 9.2.2)
+set (LIBVERSIONFULL 9.3.0)
+
+# Set CMAKE_INSTALL_PREFIX from first element of CMAKE_PREFIX_PATH
+if (WIN32)
+  if (DEFINED CMAKE_PREFIX_PATH
+    AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+    list (GET CMAKE_PREFIX_PATH 0 CMAKE_INSTALL_PREFIX)
+    set (CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}
+      CACHE PATH "Installation directory for GeographicLib" FORCE)
+  endif ()
+  message (STATUS "CMAKE_INSTALL_PREFIX set to ${CMAKE_INSTALL_PREFIX}")
+endif ()
 
 # User-settable cache variables
 
@@ -19,24 +30,40 @@ set (LIBVERSIONFULL 9.2.2)
 # more trouble than it's worth.
 if (WIN32)
   option (GEOGRAPHIC_SHARED_LIB "Build GeographicLib as a shared library" OFF)
-else (WIN32)
+else ()
   option (GEOGRAPHIC_SHARED_LIB "Build GeographicLib as a shared library" ON)
-endif (WIN32)
+endif ()
 
-# (2) Try to compile the Matlab interfaces?
-option (ENABLE_MATLAB "Try to compile matlab/octave interface" OFF)
+# (2) Compiler the Matlab interfaces?  Skip Matlab compilation if OFF
+option (MATLAB_COMPILER
+  "Compiler for matlab/octave interface: mex or mkoctfile or OFF" OFF)
 
 # (3) Where to look for data files.  Various classes look in the geoids,
 # gravity, magnetic, subdirectories of ${GEOGRAPHICLIB_DATA}.
 if (WIN32)
+  # The binary installers for the data files for Windows are created
+  # with Inno Setup which uses {commonappdata}.  On most Windows
+  # systems this is
+  # "C:/Documents and Settings/All Users/Application Data", while on
+  # newer systems (Windows 7), it is C:/ProgramData.  However the
+  # longer name "works" on all Windows systems.
   set (GEOGRAPHICLIB_DATA
     "C:/Documents and Settings/All Users/Application Data/GeographicLib"
     CACHE PATH "Location for data for GeographicLib")
-else (WIN32)
+else ()
   set (GEOGRAPHICLIB_DATA
     "${CMAKE_INSTALL_PREFIX}/share/GeographicLib"
     CACHE PATH "Location for data for GeographicLib")
-endif (WIN32)
+endif ()
+
+# (4) Compiler the Matlab interfaces?  Skip Matlab compilation if OFF
+if (WIN32)
+  option (GEOGRAPHICLIB_EXAMPLES
+    "Build example programs in examples directory" OFF)
+elseif ()
+  option (GEOGRAPHICLIB_EXAMPLES
+    "Build example programs in examples directory" ON)
+endif ()
 
 # The debug version of the library is called Geographic_d.
 set (CMAKE_DEBUG_POSTFIX _d)
@@ -60,52 +87,59 @@ configure_file (
 # distrib-all" which installs the transformed documentation files into
 # the source tree.
 if (NOT WIN32)
+  set (DOXYGEN_SKIP_DOT ON)
+  find_package (Doxygen)
   find_program (HAVE_POD2MAN pod2man)
   find_program (HAVE_POD2HTML pod2html)
   find_program (HAVE_DOXYGEN doxygen)
-endif (NOT WIN32)
-if (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_DOXYGEN)
+endif ()
+if (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND DOXYGEN_FOUND)
   set (MAINTAINER ON CACHE BOOL "Allow build of additional components")
-else (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_DOXYGEN)
+else ()
   set (MAINTAINER OFF CACHE BOOL "Allow build of additional components")
-endif (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_DOXYGEN)
+endif ()
 if (MAINTAINER)
   add_custom_target (distrib-all)
   add_dependencies (distrib-all distrib-man distrib-doc)
-endif (MAINTAINER)
+endif ()
 
-# Look for the tool to compile the Matlab interfaces.  On Linux systems,
-# octave is used, since I couldn't find a version of Matlab that
-# supported sufficiently recent versions of g++.
-if (ENABLE_MATLAB)
-  if (NOT WIN32)
-    find_program (HAVE_MEX mkoctfile)
-    if (HAVE_MEX)
-      set (MEX "mkoctfile")
-      set (MEXEXT "mex")
-    endif (HAVE_MEX)
-  else (NOT WIN32)
-    find_program (HAVE_MEX mex.bat)
-    if (HAVE_MEX)
-      set (MEX "mex")
-      execute_process (COMMAND mexext.bat
-        OUTPUT_VARIABLE MEXEXT OUTPUT_STRIP_TRAILING_WHITESPACE)
-    endif (HAVE_MEX)
-  endif (NOT WIN32)
-else (ENABLE_MATLAB)
-  set (HAVE_MEX OFF)
-endif (ENABLE_MATLAB)
+# Look for the tool to compile the Matlab interfaces.
+if (MATLAB_COMPILER)
+  if (WIN32)
+    set (MATLAB_COMPILER_EXT ".bat")
+  else ()
+    set (MATLAB_COMPILER_EXT "")
+  endif ()
+  find_program (MEX "${MATLAB_COMPILER}${MATLAB_COMPILER_EXT}")
+  if (MATLAB_COMPILER MATCHES "mex")
+    get_filename_component (MATLABDIR "${MEX}" REALPATH)
+    get_filename_component (MATLABDIR "${MATLABDIR}" PATH)
+    find_program (MEXEXTPROG "mexext${MATLAB_COMPILER_EXT}"
+      PATHS "${MATLABDIR}")
+    execute_process (COMMAND "${MEXEXTPROG}"
+      OUTPUT_VARIABLE MEXEXT OUTPUT_STRIP_TRAILING_WHITESPACE)
+  else ()
+    set (MEXEXT "mex")
+  endif ()
+  if (NOT MEX)
+    message (WARNING
+      "Cannot find Matlab compiler ${MATLAB_COMPILER}${MATLAB_COMPILER_EXT}")
+  elseif (NOT MEXEXT)
+    set (MEX OFF)
+    message (WARNING "Cannot determine extension for Matlab compiled code")
+  endif ()
+endif ()
 
 # Set a default build type for single-configuration cmake generators if
 # no build type is set.
 if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
   set (CMAKE_BUILD_TYPE Release)
-endif (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
+endif ()
 
 # On non-Windows machine, make the compiler more picky.
 if (NOT WIN32)
   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
-endif (NOT WIN32)
+endif ()
 
 # The list of tools (to be installed into, e.g., /usr/local/bin)
 set (TOOLS CartConvert ConicProj GeodesicProj GeoConvert Geod
@@ -127,58 +161,38 @@ add_subdirectory (man)
 add_subdirectory (doc)
 add_subdirectory (matlab)
 add_subdirectory (python/geographiclib)
-if (MAINTAINER)
+if (GEOGRAPHICLIB_EXAMPLES)
   add_subdirectory (examples)
-endif (MAINTAINER)
-
-# config file support for find_package(GeographicLib).  This needs to
-# deal with two environments: (1) finding the build tree and (2) finding
-# the install tree.  geographiclib-config.cmake detects which situation
-# it is handing by looking at @GEOGRAPHICLIB_ROOT_DIR at .  If this is an
-# absolute path, it's in the build tree; otherwise, it's in the install
-# tree (incidentally, this allows the install tree to be relocated).
+endif ()
 
-# geographiclib-config.cmake for the build tree
-set (GEOGRAPHICLIB_ROOT_DIR "${PROJECT_BINARY_DIR}")
-set (GeographicLib_INCLUDE_DIRS
-  "${PROJECT_BINARY_DIR}/include" "${PROJECT_SOURCE_DIR}/include" )
-configure_file (cmake/geographiclib-config.cmake.in
-  "${PROJECT_BINARY_DIR}/geographiclib-config.cmake" @ONLY)
-configure_file (cmake/geographiclib-config-version.cmake.in
-  "${PROJECT_BINARY_DIR}/geographiclib-config-version.cmake" @ONLY)
-
-# geographiclib-config.cmake for the install tree.  It's installed in
-# ${INSTALL_CMAKE_DIR} and @GEOGRAPHICLIB_ROOT_DIR@ is the relative
-# path to the root from there.
+# config file support for find_package(GeographicLib).  This only
+# supports finding GeographicLib in the "install" tree (as opposed to
+# the "build" tree).  The process installs geographiclib-config.cmake in
+# ${INSTALL_CMAKE_DIR} and @GEOGRAPHICLIB_ROOT_DIR@ is the relative path
+# to the root from there.  (Thus the whole install tree can be
+# relocated.)
 if (WIN32)
   set (INSTALL_CMAKE_DIR "cmake")
   set (GEOGRAPHICLIB_ROOT_DIR "..")
-else (WIN32)
+else ()
   set (INSTALL_CMAKE_DIR
-    "share/cmake/${CMAKE_PROJECT_NAME}-${GeographicLib_VERSION}")
+    "share/cmake/${PROJECT_NAME}-${GeographicLib_VERSION}")
   set (GEOGRAPHICLIB_ROOT_DIR "../../..")
-endif (WIN32)
-# @GeographicLib_INCLUDE_DIRS@ is not used in the install tree;
-# reset it to prevent the source and build paths appearing in the
-# installed config files
-set (GeographicLib_INCLUDE_DIRS IGNORE)
+endif ()
 configure_file (cmake/geographiclib-config.cmake.in
-  "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config.cmake" @ONLY)
+  "${PROJECT_BINARY_DIR}/cmake/geographiclib-config.cmake" @ONLY)
 configure_file (cmake/geographiclib-config-version.cmake.in
-  "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config-version.cmake" @ONLY)
+  "${PROJECT_BINARY_DIR}/cmake/geographiclib-config-version.cmake" @ONLY)
 install (FILES
-  "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config.cmake"
-  "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config-version.cmake"
+  "${PROJECT_BINARY_DIR}/cmake/geographiclib-config.cmake"
+  "${PROJECT_BINARY_DIR}/cmake/geographiclib-config-version.cmake"
   DESTINATION "${INSTALL_CMAKE_DIR}")
 
 # Make information about the cmake targets (the library and the tools)
 # available.
-export (TARGETS Geographic ${TOOLS}
-  FILE "${PROJECT_BINARY_DIR}/GeographicLibDepends.cmake")
-install (EXPORT GeographicLibDepends DESTINATION "${INSTALL_CMAKE_DIR}")
-
-# Don't want find_package to look in build trees, so don't do...
-# export (PACKAGE GeographicLib)
+install (EXPORT depends
+  FILE geographiclib-depends.cmake
+  DESTINATION "${INSTALL_CMAKE_DIR}")
 
 # Packaging support; we deal with 
 # (1) a source distribution: cmake make a tar.gz file and the zip file
@@ -188,6 +202,11 @@ install (EXPORT GeographicLibDepends DESTINATION "${INSTALL_CMAKE_DIR}")
 # Windows, but only the Windows distribution has been exercised.
 
 # Need to ensure that system dlls get included in a binary distribution
+if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+  # Visual Studio Express does include redistributable components so
+  # squelch the warning.
+  set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+endif ()
 include (InstallRequiredSystemLibraries)
 
 # The configuration of CPack is via variable that need to be set before
@@ -199,55 +218,22 @@ set (CPACK_PACKAGE_CONTACT charles at karney.com)
 set (CPACK_PACKAGE_VENDOR "GeographicLib")
 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY
   "Geographic library, utilities, and documentation")
-# It's necessary to specify a rather long list of files to be excluded
-# in the source distribution.
+# The list of files to be excluded from the source distribution.
 set (CPACK_SOURCE_IGNORE_FILES
   "#"
   "~\$"
-  "${PROJECT_SOURCE_DIR}/(BUILD|WINDOWS|TAGS|geographiclib-[0-9])"
-  "${PROJECT_SOURCE_DIR}/release-notes/"
-  "${PROJECT_SOURCE_DIR}/(geoids-distrib|geoids-installer)/"
-  "${PROJECT_SOURCE_DIR}/(magnetic-distrib|magnetic-installer)/"
-  "${PROJECT_SOURCE_DIR}/(gravity-distrib|gravity-installer)/"
-  "${PROJECT_SOURCE_DIR}/(magnetic|gravity)/"
-  "${PROJECT_SOURCE_DIR}/(distrib|cgi-bin|scratch|srcL|workspace)/"
-  "${PROJECT_SOURCE_DIR}/(tests|testdata)/"
-  "${PROJECT_SOURCE_DIR}/python/(MANIFEST\$|build/)"
-  "${PROJECT_SOURCE_DIR}/(geodesic.*|makefile-admin|install_manifest.txt)"
-  "Makefile\$"
-  "Config.h\$"
-  "TAGS\$"
-  "/GeographicLibL"
-  "/\\\\.(deps|libs|svn)/"
   "/\\\\.git"
-  "/(UpgradeLog|_UpgradeReport)"
-  "/(CMakeCache.txt|CPack)"
-  "/(CMakeFiles|_CPack_Packages|BACKUP)/"
-  "/config\\\\.(h|status)"
-  "/Config-ac\\\\.h\$"
-  "/(status|libtool)\$"
-  "/stamp-"
-  "/junk"
-  "/octave-core"
-  "\\\\.(bak|BAK|patch|tmp|zip|gz|lo|o|ncb|suo|a|la|log|exe|pyc)\$"
-  "\\\\.(mex|mexw32|mexw64|mexa64|kml|kmz)\$"
-  "/(Release|Debug|Win32)"
-  "\\\\.cache/"
-  "proj.*\\\\.user\$"
-  "lib.*\\\\.so"
-  "tools/[A-Za-z]+\$"
-  "tools/geographiclib-get-geoids\$"
-  "tools/geographiclib-get-magnetic\$"
-  "tools/geographiclib-get-gravity\$"
-  "tools/.*\\\\.usage\$"
-  "scripts/geographiclib.js\$"
-  "/(fix-permissions|autogen|biblio|js-compress)\\\\.sh"
-  "${PROJECT_SOURCE_DIR}/[^/]*\\\\.html" )
+  "${PROJECT_SOURCE_DIR}/BUILD"
+  "${PROJECT_SOURCE_DIR}/(tests|testdata|cgi-bin|.*\\\\.cache)/"
+  "${PROJECT_SOURCE_DIR}/(distrib|.*-distrib|.*-installer|geodesic-papers)/"
+  "${PROJECT_SOURCE_DIR}/[^/]*\\\\.(html|kmz)\$"
+  "${PROJECT_SOURCE_DIR}/(autogen|biblio|js-compress)\\\\.sh\$"
+  "${PROJECT_SOURCE_DIR}/(geodesic-biblio.txt|makefile-admin)\$" )
 set (CPACK_SOURCE_GENERATOR TGZ)
 
 set (CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.txt)
 set (CPACK_PACKAGE_INSTALL_DIRECTORY
-  "${CMAKE_PROJECT_NAME}-${GeographicLib_VERSION}")
+  "${PROJECT_NAME}-${GeographicLib_VERSION}")
 set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
 
 if (WIN32)
@@ -256,11 +242,24 @@ if (WIN32)
   set (CPACK_NSIS_CONTACT "charles at karney.com")
   set (CPACK_NSIS_URL_INFO_ABOUT "http://geographiclib.sf.net")
   set (CPACK_NSIS_HELP_LINK "mailto:charles at karney.com")
-  set (CPACK_NSIS_PACKAGE_NAME
-    "${CMAKE_PROJECT_NAME} ${GeographicLib_VERSION}")
+  if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+    # Hardcode the prefix for Visual Studio 10
+    set (CPACK_NSIS_INSTALL_ROOT "C:\\\\pkg-vc10-x64")
+    set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-win64")
+    set (CPACK_NSIS_PACKAGE_NAME
+      "${PROJECT_NAME} x64 ${GeographicLib_VERSION}")
+    set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+      "${PROJECT_NAME}-x64-${GeographicLib_VERSION}")
+  else ()
+    # Hardcode the prefix for Visual Studio 10
+    set (CPACK_NSIS_INSTALL_ROOT "C:\\\\pkg-vc10")
+    set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-win32")
+    set (CPACK_NSIS_PACKAGE_NAME
+      "${PROJECT_NAME} ${GeographicLib_VERSION}")
+    set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+      "${PROJECT_NAME}-${GeographicLib_VERSION}")
+  endif ()
   set (CPACK_NSIS_DISPLAY_NAME ${CPACK_NSIS_PACKAGE_NAME})
-  set (CPACK_NSIS_INSTALL_ROOT "C:\\\\pkg-vc10")
-  set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-win32")
   set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
   CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Library Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\GeographicLib\\\\html\\\\index.html\\\"
   CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Utility Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\GeographicLib\\\\html\\\\utilities.html\\\"
@@ -275,10 +274,10 @@ elseif (APPLE)
   # Not tested
   set (CPACK_GENERATOR DMG)
   set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-darwin")
-else (WIN32)
+else ()
   # Not tested
   set (CPACK_GENERATOR TGZ)
-endif (WIN32)
+endif ()
 
 include (CPack)
 
@@ -315,7 +314,7 @@ if (MAINTAINER)
       zip -q ${CMAKE_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.zip -@
   )
   add_dependencies (dist distrib-all)
-endif (MAINTAINER)
+endif ()
 
 # Add a test target; the tests are in tools.
 enable_testing ()
diff --git a/LICENSE.txt b/LICENSE.txt
index e8bc663..692304c 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,6 +1,6 @@
 This license applies to GeographicLib, versions 1.12 and later.
 
-Copyright (c) 2008-2011, Charles Karney
+Copyright (c) 2008-2012, Charles Karney
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
diff --git a/Makefile.mk b/Makefile.mk
index dd5c373..b75eef6 100644
--- a/Makefile.mk
+++ b/Makefile.mk
@@ -1,4 +1,4 @@
-# $Id: 35334b3609333ad2c87f9d3d6dab1165d59d377c $
+# $Id: e41e5a29e46933b242fce49416e474403fc4bb65 $
 
 MAKEFILE := $(lastword $(MAKEFILE_LIST))
 MAKE := $(MAKE) -f $(MAKEFILE)
@@ -14,7 +14,7 @@ tools: src
 install: install-headers install-lib install-tools install-man install-cmake \
 	install-doc install-matlab install-python
 clean: clean-src clean-tools clean-doc clean-man clean-matlab clean-python
-distclean: clean distclean-doc distclean-man
+maintainer-clean: clean maintainer-clean-doc maintainer-clean-man
 install-headers:
 	$(MAKE) -C include install
 install-lib:
@@ -43,10 +43,10 @@ clean-matlab: matlab
 	$(MAKE) -C matlab clean
 clean-python: python
 	$(MAKE) -C python clean
-distclean-doc:
-	$(MAKE) -C doc distclean
-distclean-man:
-	$(MAKE) -C man distclean
+maintainer-clean-doc:
+	$(MAKE) -C doc maintainer-clean
+maintainer-clean-man:
+	$(MAKE) -C man maintainer-clean
 
 VERSION:=$(shell grep '\bVERSION=' configure | cut -f2 -d\' | head -1)
 
@@ -54,4 +54,4 @@ VERSION:=$(shell grep '\bVERSION=' configure | cut -f2 -d\' | head -1)
 	install-headers install-lib install-tools install-cmake install-man \
 	install-matlab install-python \
 	clean clean-src clean-tools clean-doc clean-man clean-matlab \
-	clean-python distclean distclean-doc distclean-man
+	clean-python maintainer-clean maintainer-clean-doc maintainer-clean-man
diff --git a/NEWS b/NEWS
index a0bd36e..f7093d6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-# $Id: 58995016b89e2b4ae8d6cca5003d0d7070a8b28e $
+# $Id: a8ebe2940755523ec7b77a1645c4155c441a7f17 $
 
 A reverse chronological list of changes to GeographicLib
 
@@ -6,9 +6,54 @@ For more information, see
 
     http://geographiclib.sourceforge.net/
 
-The current version of the library is 1.18.
+The current version of the library is 1.21.
 
-Changes between 1.18 (released 2012-02-18) and 1.17 versions
+Changes between 1.21 (released 2012-04-25) and 1.20 versions:
+
+  * Support colon-separated DMS output:
+    + DMS::Encode and GeoCoords::DMSRepresentation generalized;
+    + GeoConvert and Geod now accept a -: option.
+
+  * GeoidEval does not print the gradient of the geoid height by default
+    (because it's subject to large errors); give the -g option to get
+    the gradient printed.
+
+  * Work around optimization BUG in GeographicLib::Geodesic::Inverse
+    with tdm mingw g++ version 4.6.1.
+
+  * autoconf fixed to ensure that that out-of-sources builds work;
+    document this as the preferred method of using autoconf.
+
+  * cmake tweaks:
+    + simplify the configuration of doxygen;
+    + allow the Matlab compiler to be specified with the MATLAB_COMPILER option.
+
+Changes between 1.20 (released 2012-03-23) and 1.19 versions:
+
+  * cmake tweaks:
+    + improve find_package's matching of compiler versions;
+    + CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;
+    + add "x64" to the package name for the 64-bit binary installer;
+    + fix cmake warning with Visual Studio Express.
+
+  * Fix SphericalEngine to deal with aggessive iterator checking by
+    Visual Studio.
+
+  * Fix transcription BUG is Geodesic.js.
+
+Changes between 1.19 (released 2012-03-13) and 1.18 versions:
+
+  * Slight improvement in Geodesic::Inverse for very short lines.
+
+  * Fix argument checking tests in MGRS::Forward.
+
+  * Add --comment-delimiter and --line-separator options to the utility
+    programs.
+
+  * Add installer for 64-bit Windows; the compiled Matlab interface is
+    supplied with the Windows 64-bit installer only.
+
+Changes between 1.18 (released 2012-02-18) and 1.17 versions:
 
   * Improve documentation on configuration with cmake.
 
@@ -275,7 +320,7 @@ Changes between 1.7 (released 2010-12-21) and 1.6 versions:
 
   * Add solution/project files for Visual Studio 2010 (32-bit only).
 
-  * Use C++0X static_assert and math functions, if available.
+  * Use C++11 static_assert and math functions, if available.
 
 Change between 1.6 (released 2010-11-23) and 1.5 versions:
 
diff --git a/cmake/FindGeographicLib.cmake b/cmake/FindGeographicLib.cmake
index 375dfef..ce626c0 100644
--- a/cmake/FindGeographicLib.cmake
+++ b/cmake/FindGeographicLib.cmake
@@ -1,4 +1,4 @@
-# $Id: 19e15da16267903c945c4163b24be13e4e4b6ddc $
+# $Id: 68ad590f505a0fc2f5419b6abf59d457d7901fc7 $
 #
 # Look for GeographicLib
 #
@@ -22,8 +22,8 @@ if (GeographicLib_LIBRARIES)
     unset (GeographicLib_INCLUDE_DIRS)
     unset (GeographicLib_LIBRARIES)
     unset (GeographicLib_LIBRARY_DIRS)
-  endif (NOT EXISTS "${GeographicLib_INCLUDE_DIRS}/GeographicLib/Config.h")
-endif (GeographicLib_LIBRARIES)
+  endif ()
+endif ()
 
 include (FindPackageHandleStandardArgs)
 find_package_handle_standard_args (GeographicLib DEFAULT_MSG
diff --git a/cmake/Makefile.am b/cmake/Makefile.am
index 74e5860..bcb82ef 100644
--- a/cmake/Makefile.am
+++ b/cmake/Makefile.am
@@ -2,13 +2,14 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a072d10e7ea813c07a37d1d612a72ab82d0406d2 $
+# $Id: f340bddbdd117ebc666bf508bc582ac92690bf57 $
 
 cmakedir=$(datadir)/cmake/GeographicLib
 
 install:
 	$(INSTALL) -d $(DESTDIR)$(cmakedir)
-	$(INSTALL) -m 644 FindGeographicLib.cmake $(DESTDIR)$(cmakedir)
+	$(INSTALL) -m 644 $(srcdir)/FindGeographicLib.cmake \
+		$(DESTDIR)$(cmakedir)
 
 EXTRA_DIST = Makefile.mk FindGeographicLib.cmake \
 	geographiclib-config-version.cmake.in geographiclib-config.cmake.in
diff --git a/cmake/Makefile.in b/cmake/Makefile.in
index a6f6c6b..be90427 100644
--- a/cmake/Makefile.in
+++ b/cmake/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a072d10e7ea813c07a37d1d612a72ab82d0406d2 $
+# $Id: f340bddbdd117ebc666bf508bc582ac92690bf57 $
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -373,7 +373,8 @@ uninstall-am:
 
 install:
 	$(INSTALL) -d $(DESTDIR)$(cmakedir)
-	$(INSTALL) -m 644 FindGeographicLib.cmake $(DESTDIR)$(cmakedir)
+	$(INSTALL) -m 644 $(srcdir)/FindGeographicLib.cmake \
+		$(DESTDIR)$(cmakedir)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/cmake/geographiclib-config-version.cmake.in b/cmake/geographiclib-config-version.cmake.in
index f5b77bc..791732c 100644
--- a/cmake/geographiclib-config-version.cmake.in
+++ b/cmake/geographiclib-config-version.cmake.in
@@ -1,33 +1,19 @@
-# $Id: d56386731b1434d6b8f62c8e3e29078534ab59be $
+# $Id: bcb4b84d50be4e5bf5a85d13dff07dcfa3e6715a $
 
 # Version checking for GeographicLib
 
-set(PACKAGE_VERSION "@GeographicLib_VERSION@")
-set(PACKAGE_VERSION_MAJOR "@GeographicLib_VERSION_MAJOR@")
-set(PACKAGE_VERSION_MINOR "@GeographicLib_VERSION_MINOR@")
+set (PACKAGE_VERSION "@GeographicLib_VERSION@")
+set (PACKAGE_VERSION_MAJOR "@GeographicLib_VERSION_MAJOR@")
+set (PACKAGE_VERSION_MINOR "@GeographicLib_VERSION_MINOR@")
 
-if (PACKAGE_FIND_VERSION)
+if (WIN32 AND NOT "${CMAKE_GENERATOR}" STREQUAL "@CMAKE_GENERATOR@")
+  # Reject if there's a mismatch on compiler versions (Windows only)
+  set (PACKAGE_VERSION_UNSUITABLE TRUE)
+elseif (PACKAGE_FIND_VERSION)
   if (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION})
-    # Versions match
     set (PACKAGE_VERSION_EXACT TRUE)
+  elseif (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION}
+    AND ${PACKAGE_FIND_VERSION_MAJOR} EQUAL ${PACKAGE_VERSION_MAJOR})
     set (PACKAGE_VERSION_COMPATIBLE TRUE)
-  elseif (${PACKAGE_FIND_VERSION_MAJOR} EQUAL ${PACKAGE_VERSION_MAJOR})
-    # Only major versions match
-    set (PACKAGE_VERSION_EXACT FALSE)
-    if (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION})
-      # Backwards compatible
-      set (PACKAGE_VERSION_COMPATIBLE TRUE)
-    else (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION})
-      # No forwards compatibility
-      set (PACKAGE_VERSION_COMPATIBLE FALSE)
-    endif (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION})
-  else (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION})
-    # No compatibility across major versions
-    set (PACKAGE_VERSION_COMPATIBLE FALSE)
-    set (PACKAGE_VERSION_EXACT FALSE)
-  endif (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION})
-else (PACKAGE_FIND_VERSION)
-  # No version requested
-  set (PACKAGE_VERSION_COMPATIBLE TRUE)
-  set (PACKAGE_VERSION_EXACT FALSE)
-endif (PACKAGE_FIND_VERSION)
+  endif ()
+endif ()
diff --git a/cmake/geographiclib-config.cmake.in b/cmake/geographiclib-config.cmake.in
index 1722c03..95ea765 100644
--- a/cmake/geographiclib-config.cmake.in
+++ b/cmake/geographiclib-config.cmake.in
@@ -1,4 +1,4 @@
-# $Id: 5b8a75e3009521d99a88d4cd0ec9de00b14e2ab9 $
+# $Id: 6f2f024584465d9903d8e3cd313cd876a850b4d2 $
 #
 # Configure GeographicLib
 #
@@ -16,49 +16,13 @@ message (STATUS "GeographicLib configuration, version "
 
 # Tell the user project where to find our headers and libraries
 get_filename_component (_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
-if (IS_ABSOLUTE "@GEOGRAPHICLIB_ROOT_DIR@")
-  # This is an uninstalled package (still in the build tree)
-  set (GEOGRAPHICLIB_ROOT_DIR "@GEOGRAPHICLIB_ROOT_DIR@")
-  set (GeographicLib_INCLUDE_DIRS "@GeographicLib_INCLUDE_DIRS@")
-  set (GeographicLib_LIBRARY_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/src")
-else (IS_ABSOLUTE "@GEOGRAPHICLIB_ROOT_DIR@")
-  # This is an installed package; figure out the paths relative to the
-  # current directory.
-  get_filename_component (GEOGRAPHICLIB_ROOT_DIR
-    "${_DIR}/@GEOGRAPHICLIB_ROOT_DIR@" ABSOLUTE)
-  set (GeographicLib_INCLUDE_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/include")
-  set (GeographicLib_LIBRARY_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/lib")
-endif (IS_ABSOLUTE "@GEOGRAPHICLIB_ROOT_DIR@")
-
-# Do a sanity check by looking for include/GeographicLib/Config.h
-foreach (p ${GeographicLib_INCLUDE_DIRS})
-  # Only check first include dir
-  if (NOT EXISTS "${p}/GeographicLib/Config.h")
-    unset (GeographicLib_INCLUDE_DIRS)
-    unset (GeographicLib_LIBRARY_DIRS)
-    unset (GeographicLib_VERSION)
-  endif (NOT EXISTS "${p}/GeographicLib/Config.h")
-  break (p ${GeographicLib_INCLUDE_DIRS})
-endforeach (p ${GeographicLib_INCLUDE_DIRS})
-
-# Verify that the compiler versions match on Windows
-if (DEFINED GeographicLib_INCLUDE_DIRS AND
-  NOT "${CMAKE_GENERATOR}" STREQUAL "@CMAKE_GENERATOR@")
-    unset (GeographicLib_INCLUDE_DIRS)
-    unset (GeographicLib_LIBRARY_DIRS)
-    unset (GeographicLib_VERSION)
-endif (DEFINED GeographicLib_INCLUDE_DIRS AND
-  NOT "${CMAKE_GENERATOR}" STREQUAL "@CMAKE_GENERATOR@")
+get_filename_component (GEOGRAPHICLIB_ROOT_DIR
+  "${_DIR}/@GEOGRAPHICLIB_ROOT_DIR@" ABSOLUTE)
+set (GeographicLib_INCLUDE_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/include")
+set (GeographicLib_LIBRARY_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/lib")
 
 # Read in the exported definition of the library
-if (DEFINED GeographicLib_INCLUDE_DIRS)
-  include ("${_DIR}/GeographicLibDepends.cmake")
-  set (GeographicLib_LIBRARIES Geographic)
-endif (DEFINED GeographicLib_INCLUDE_DIRS)
+include ("${_DIR}/geographiclib-depends.cmake")
+set (GeographicLib_LIBRARIES Geographic)
 
-# Boiler plate check
-include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (GeographicLib DEFAULT_MSG
-  GeographicLib_LIBRARY_DIRS GeographicLib_LIBRARIES GeographicLib_INCLUDE_DIRS)
-mark_as_advanced (GeographicLib_LIBRARY_DIRS GeographicLib_LIBRARIES
-  GeographicLib_INCLUDE_DIRS)
+set (GEOGRAPHICLIB_FOUND TRUE)
diff --git a/configure b/configure
index 02012fa..429c6cc 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for GeographicLib 1.18.
+# Generated by GNU Autoconf 2.68 for GeographicLib 1.21.
 #
 # Report bugs to <charles at karney.com>.
 #
@@ -570,8 +570,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GeographicLib'
 PACKAGE_TARNAME='geographiclib'
-PACKAGE_VERSION='1.18'
-PACKAGE_STRING='GeographicLib 1.18'
+PACKAGE_VERSION='1.21'
+PACKAGE_STRING='GeographicLib 1.21'
 PACKAGE_BUGREPORT='charles at karney.com'
 PACKAGE_URL=''
 
@@ -1309,7 +1309,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GeographicLib 1.18 to adapt to many kinds of systems.
+\`configure' configures GeographicLib 1.21 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1380,7 +1380,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GeographicLib 1.18:";;
+     short | recursive ) echo "Configuration of GeographicLib 1.21:";;
    esac
   cat <<\_ACEOF
 
@@ -1486,7 +1486,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GeographicLib configure 1.18
+GeographicLib configure 1.21
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2030,7 +2030,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GeographicLib $as_me 1.18, which was
+It was created by GeographicLib $as_me 1.21, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2959,7 +2959,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='geographiclib'
- VERSION='1.18'
+ VERSION='1.21'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3027,9 +3027,9 @@ fi
 ac_config_headers="$ac_config_headers include/GeographicLib/Config-ac.h"
 
 
-LT_CURRENT=11
-LT_REVISION=2
-LT_AGE=2
+LT_CURRENT=12
+LT_REVISION=0
+LT_AGE=3
 
 
 
@@ -16353,7 +16353,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GeographicLib $as_me 1.18, which was
+This file was extended by GeographicLib $as_me 1.21, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16419,7 +16419,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GeographicLib config.status 1.18
+GeographicLib config.status 1.21
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 31659a5..c56338e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,8 @@
 dnl
 dnl Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-dnl $Id: 0416840386348cbdbacd4188f1324c6f754c033e $
+dnl $Id: 681a427014d2d61ab6b066354ed7b0ef245f75c3 $
 
-AC_INIT([GeographicLib],[1.18],[charles at karney.com])
+AC_INIT([GeographicLib],[1.21],[charles at karney.com])
 AC_CANONICAL_SYSTEM
 AC_PREREQ(2.61)
 AC_CONFIG_SRCDIR(src/Geodesic.cpp)
@@ -22,9 +22,9 @@ dnl Library code modified:              REVISION++
 dnl Interfaces changed/added/removed:   CURRENT++ REVISION=0
 dnl Interfaces added:                   AGE++
 dnl Interfaces removed:                 AGE=0
-LT_CURRENT=11
-LT_REVISION=2
-LT_AGE=2
+LT_CURRENT=12
+LT_REVISION=0
+LT_AGE=3
 AC_SUBST(LT_CURRENT)
 AC_SUBST(LT_REVISION)
 AC_SUBST(LT_AGE)
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 5812d08..f251445 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,33 +1,36 @@
-# $Id: 523a98c95381ee97f883ae5edca309cc5510817d $
+# $Id: a9ac6876ce9b9276e0b6add11f6d77a9c8f7c75b $
 
 # Where the html versions of the man pages (extension .1.html) are
 # found.
 if (MAINTAINER)
   set (MANDIR ${PROJECT_BINARY_DIR}/man)
-else (MAINTAINER)
+else ()
   set (MANDIR ${PROJECT_SOURCE_DIR}/man)
-endif (MAINTAINER)
+endif ()
 
 # BUILD UP A LIST OF THE .1.HTML FILES.
 set (HTMLMAN)
 foreach (TOOL ${TOOLS})
   set (HTMLMAN ${HTMLMAN} ${MANDIR}/${TOOL}.1.html)
-endforeach (TOOL)
+endforeach ()
 
-# The maintainer runs doxygen...
+# Run doxygen, if available
 
 # First assemble a list of all the files the documentation uses.  Add a
 # dependency on htmlman (from man/CMakeLists.txt).  Use doxygen.log as
 # the make target.  To make this target, copy the non-doxygen generated
-# files into html/.  Run Doxfile thru a sed command so that absolute
-# path names are used and so that the pathnames are properly stripped by
-# doxygen (via STRIP_FROM_PATH). The distrib-doc target copies the html
-# directory into the source tree.
+# files into html/.  Run doxfile.in cmake's config process so that
+# absolute path names are used and so that the pathnames are properly
+# stripped by doxygen (via STRIP_FROM_PATH). The distrib-doc target
+# copies the html directory into the source tree.
 
-# In non-maintenance mode, only the install step (from the source tree)
-# is needed.
+# If doxygen is not available, only the install step (from the source
+# tree) is done.
 
-if (MAINTAINER)
+if (DOXYGEN_FOUND)
+  configure_file (
+      "${CMAKE_CURRENT_SOURCE_DIR}/doxyfile.in"
+      "${CMAKE_CURRENT_BINARY_DIR}/doxyfile" )
   file (GLOB SOURCES
     ../src/*.cpp ../include/GeographicLib/*.hpp
     ../tools/*.cpp ../examples/*.cpp)
@@ -37,13 +40,12 @@ if (MAINTAINER)
     DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxygen.log)
   add_dependencies (doc htmlman)
   add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.log
-    DEPENDS Doxyfile Geographic.doc ${SOURCES} ${EXTRA_FILES} ${HTMLMAN}
+    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxyfile
+      Geographic.doc ${SOURCES} ${EXTRA_FILES} ${HTMLMAN}
     COMMAND rm -rf html && mkdir html
     COMMAND
       cp -p ${EXTRA_FILES} ${HTMLMAN} html/
-    COMMAND
-      sed \"s%\\.\\./%${PROJECT_SOURCE_DIR}/%g\"
-        ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile | doxygen - > doxygen.log
+    COMMAND ${DOXYGEN_EXECUTABLE} doxyfile > doxygen.log
     COMMENT "Generating html documentation tree")
   install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
     DESTINATION share/doc/GeographicLib)
@@ -55,9 +57,9 @@ if (MAINTAINER)
     COMMAND touch ${CMAKE_CURRENT_SOURCE_DIR}/html/index.html
     COMMENT "Installing html documentation tree in source tree")
 
-else (MAINTAINER)
+else ()
   install (DIRECTORY html DESTINATION share/doc/GeographicLib)
-endif (MAINTAINER)
+endif ()
 
 # Finally install the Javascript files
 file (GLOB SCRIPTDRIVERS scripts/*.html)
diff --git a/doc/Geographic.doc b/doc/Geographic.doc
index eff5725..769e694 100644
--- a/doc/Geographic.doc
+++ b/doc/Geographic.doc
@@ -7,13 +7,13 @@
  * MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
-// $Id: 1c850cc00ad5b02d90dfea3c3cbd7aa998bb2bc6 $
+// $Id: 39fe7aa302faa3170132f94a3e800b401ce18c89 $
 /**
 \mainpage Geographic library
 \author Charles Karney
 <charles at karney.com>
-\version 1.18
-\date 2012-02-18
+\version 1.21
+\date 2012-04-25
 
 \section abstract Abstract
 
@@ -45,10 +45,10 @@ The main project page is at
   http://sourceforge.net/projects/geographiclib </a>
 .
 The code is available for download at
-- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">
-  GeographicLib-1.18.tar.gz</a>
-- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.zip/download">
-  GeographicLib-1.18.zip</a>
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.tar.gz/download">
+  GeographicLib-1.21.tar.gz</a>
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.zip/download">
+  GeographicLib-1.21.zip</a>
 .
 as either a compressed tar file (tar.gz) or a zip file.  (The two archives
 have identical contents.)  Alternatively you can get the latest stable release
@@ -56,9 +56,11 @@ using git \verbatim
   git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib
   cd geographiclib; git checkout stable
 \endverbatim
-There is also a binary installer for Windows available at
-- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">
-  GeographicLib-1.18-win32.exe</a>
+There are also a binary installers for Windows available at
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">
+  GeographicLib-1.21-win32.exe</a>
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">
+  GeographicLib-1.21-win64.exe</a>
 .
 It is licensed under the
 <a href="http://www.opensource.org/licenses/MIT">MIT/X11 License</a>;
@@ -159,12 +161,14 @@ Back to \ref intro.  Forward to \ref start.  Up to \ref contents.
 2010.  Earlier versions were tested also under Darwin and Solaris.  It
 should compile on a wide range of other systems.  First
 download either
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">
-GeographicLib-1.18.tar.gz</a> or
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18.zip/download">
-GeographicLib-1.18.zip</a> (or
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">
-GeographicLib-1.18-win32.exe</a> for binary installation under Windows).
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21.tar.gz/download">
+GeographicLib-1.21.tar.gz</a> or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21.zip/download">
+GeographicLib-1.21.zip</a> (or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">
+GeographicLib-1.21-win32.exe</a> or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">
+GeographicLib-1.21-win64.exe</a> for binary installation under Windows).
 Then pick one of the first five options below:
 - \ref cmake.  This is the preferred installation method as it will work
   on the widest range of platforms.  However it requires that you have
@@ -176,7 +180,7 @@ Then pick one of the first five options below:
 - \ref windows.  This is a simple installation method that works with
   Visual Studio 2005, 2008, and 2010 under Windows.
 - \ref windowsbin.  Use this installation method if you only need to use
-  the utility programs supplied with %GeographicLib.  (This method also
+  the \ref utilities supplied with %GeographicLib.  (This method also
   installs the header files and the static library for use by Visual
   Studio 2010.)
 - \ref qt.  How to compile %GeographicLib so that it can be used by Qt
@@ -184,12 +188,33 @@ Then pick one of the first five options below:
 - \ref maintainer.  This describes addition tasks of interest only to
   the maintainers of this code.
 .
-This section documents only how to install the software.  If you wish to
-use %GeographicLib to evaluate geoid heights or the earth's
+This section documents only how to install the <i>software</i>.  If you
+wish to use %GeographicLib to evaluate geoid heights or the earth's
 gravitational or magnetic fields, then you must also install the
 relevant data files.  See \ref geoidinst, \ref gravityinst, and \ref
 magneticinst for instructions.
 
+The first two installation methods use two important techniques which
+make software maintanence simpler
+- <b>Out-of-source builds:</b>  This means that you create a separate
+  directory for compiling the code.  In the description here the
+  directories are called BUILD and are located in the top-level of the
+  source tree.  You might want to use a suffix to denote the type of
+  build, e.g., BUILD-vc9 for Visual Studio 9, or BUILD-shared for a
+  build which creates a shared library.  The advantages of out-of-source
+  builds are:
+  - You don't mess up the source tree, so it's easy to "clean up".
+    Indeed the source tree might be on a read-only file system.
+  - Builds for multiple platforms or compilers don't interfere with each
+    other.
+- <b>The library is installed:</b> After compilation, there is a
+  separate <i>install</i> step which copies the headers, libraries,
+  tools, and documentation to a "central" location.  You may at this
+  point delete the source and build directories.  If you have
+  administrative privileges, you can install %GeographicLib for the use
+  of all users (e.g., in /usr/local).  Otherwise, you can install it for
+  your personal use (e.g., in $HOME/packages).
+
 \section cmake Installation with cmake
 
 This is the recommended method of installation; however it requires that
@@ -216,23 +241,25 @@ Windows.
 
 Here are the steps to compile and install %GeographicLib:
 - Unpack the source, running one of \verbatim
-  tar xfpz GeographicLib-1.18.tar.gz
-  unzip -q GeographicLib-1.18.zip
-  git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib \endverbatim
+  tar xfpz GeographicLib-1.21.tar.gz
+  unzip -q GeographicLib-1.21.zip \endverbatim
   then enter the directory created with one of \verbatim
-  cd GeographicLib-1.18
-  cd geographiclib; git checkout stable \endverbatim
+  cd GeographicLib-1.21 \endverbatim
 - Create a separate build directory and enter it, for example, \verbatim
   mkdir BUILD
   cd BUILD\endverbatim
-- Run cmake, pointing it to the parent directory (..).  On Linux,
-  Unix, and MaxOSX systems, the command is \verbatim
+- Run cmake, pointing it to the source directory (..).  On Linux, Unix,
+  and MacOSX systems, the command is \verbatim
   cmake .. \endverbatim
   For Windows, the command is typically one of \verbatim
   cmake -G "Visual Studio 10" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc10/GeographicLib ..
   cmake -G "Visual Studio 9 2008" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc9/GeographicLib ..
   cmake -G "Visual Studio 8 2005" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc8/GeographicLib ..
 \endverbatim
+  Instead of setting CMAKE_INSTALL_PREFIX, you can (on Windows) set
+  CMAKE_PREFIX_PATH to point to its parent directory, e.g., \verbatim
+  cmake -G "Visual Studio 10" -D CMAKE_PREFIX_PATH=C:/pkg-vc10 ..
+\endverbatim
   The definitions of CMAKE_INSTALL_PREFIX are optional (see below).  The
   settings given above are recommended to ensure that packages that use
   %GeographicLib use the version compiled with the right compiler.
@@ -278,14 +305,17 @@ Here are the steps to compile and install %GeographicLib:
 \endverbatim
     (With IDE compile environments, you get to select the build type in
     the IDE.)
-  - <code>ENABLE_MATLAB</code> (default: OFF).  Set this to ON to get
-    cmake to try to compile and install the Matlab/Octave interface.  At
-    present this is compiled for Matlab under Windows and for Octave
-    under Linux.  See \ref matlab for more information.
+  - <code>MATLAB_COMPILER</code> (default: OFF).  Set this to either
+    "mex" (for Matlab) or "mkoctfile" (for Octave) to specify the
+    compiler to use for the Matlab/Octave interface.  See \ref matlab
+    for more information.
   - <code>MAINTAINER</code> (default: ON for non-Windows environments
     provided doxygen, pod2man, and pod2html are found).  This affects
     whether the targets for creating source packages are activated.
     See \ref maintainer for details.
+  - <code>GEOGRAPHICLIB_EXAMPLES</code> (default: ON for the maintainer
+    and OFF otherwise).  If set to ON, then the short example programs
+    in the <code>examples</code> directory are built.
 - Build and install the software.  In non-IDE environments, run
   \verbatim
   make         # compile the library and the examples
@@ -309,14 +339,18 @@ Here are the steps to compile and install %GeographicLib:
 The method works on most Unix-like systems including Linux and Mac OS X.
 Here are the steps to compile and install %GeographicLib:
 - Unpack the source, running \verbatim
-  tar xfpz GeographicLib-1.18.tar.gz \endverbatim
+  tar xfpz GeographicLib-1.21.tar.gz \endverbatim
   then enter the directory created \verbatim
-  cd GeographicLib-1.18 \endverbatim
-- Configure the software with \verbatim
-  ./configure \endverbatim
+  cd GeographicLib-1.21 \endverbatim
+- Create a separate build directory and enter it, for example, \verbatim
+  mkdir BUILD
+  cd BUILD\endverbatim
+- Configure the software, specifing the path of the source directory,
+  with \verbatim
+  ../configure \endverbatim
 - By default %GeographicLib will be installed under /usr/local.
   You can change this with, for example \verbatim
-  ./configure --prefix=/tmp/geographic \endverbatim
+  ../configure --prefix=/tmp/geographic \endverbatim
 - Compile and install the software with \verbatim
   make
   make install \endverbatim
@@ -336,9 +370,9 @@ and g++.  This builds a static library and the examples.
 
 Here are the steps to compile and install %GeographicLib:
 - Unpack the source, running \verbatim
-  tar xfpz GeographicLib-1.18.tar.gz \endverbatim
+  tar xfpz GeographicLib-1.21.tar.gz \endverbatim
   then enter the directory created \verbatim
-  cd GeographicLib-1.18 \endverbatim
+  cd GeographicLib-1.21 \endverbatim
 - Edit \verbatim
   include/GeographicLib/Config.h \endverbatim
   If your C++ compiler does not recognize the long double type
@@ -369,8 +403,8 @@ static library and the utilities.  If you only have Visual Studio 2003,
 use cmake to create the necessary solution file, see \ref cmake.  (cmake
 is needed to build the Matlab interface and to run the tests.)
 - Unpack the source, running \verbatim
-  unzip -q GeographicLib-1.18.zip \endverbatim
-- Open GeographicLib-1.18/windows/GeographicLib-vc10.sln in Visual Studio
+  unzip -q GeographicLib-1.21.zip \endverbatim
+- Open GeographicLib-1.21/windows/GeographicLib-vc10.sln in Visual Studio
   2010 (for Visual Studio 2005 and 2008, replace -vc10 by -vc8 or -vc9).
 - Pick the build type (e.g., Release), and select "Build Solution".
 - The library and the compiled examples are in the windows/Release.
@@ -384,7 +418,7 @@ is needed to build the Matlab interface and to run the tests.)
   <a href="index.html">doc/html/index.html</a> in a web
   browser.
 
-\section windowsbin Using a binary installer for Windows.
+\section windowsbin Using a binary installer for Windows
 
 Use this method if you only need to use the %GeographicLib utilities.
 The header files and static library are provided, but can only be used
@@ -393,12 +427,14 @@ library, it is advisable to build it with the compiler you are using for
 your own code using either \ref cmake or \ref windows.
 
 Download and run
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">
-GeographicLib-1.18-win32.exe</a>:
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">
+GeographicLib-1.21-win32.exe</a> or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">
+GeographicLib-1.21-win64.exe</a>:
  - read the MIT/X11 License agreement,
  - select whether you want your PATH modified,
  - select the installation folder, by default
-   C:\\pkg-vc10\\GeographicLib-1.18.
+   C:\\pkg-vc10\\GeographicLib-1.21 or C:\\pkg-vc10-x64\\GeographicLib-1.21,
  - select the start menu folder,
  - and install.
  .
@@ -406,14 +442,14 @@ GeographicLib-1.18-win32.exe</a>:
 given in \ref cmake.)  The start menu will now include links to the
 documentation for the library and for the utilities (and a link for
 uninstalling the library).  If you ask for your PATH to be modified, it
-will include C:/pkg-vc10/GeographicLib-1.18/bin where the utilities are
+will include C:/pkg-vc10/GeographicLib-1.21/bin where the utilities are
 installed.  The headers and library are installed in the
-include/GeographicLib and lib folders.  The Matlab interface is
-installed in the libexec/GeographicLib/matlab folder.  Add this to your
-path in Matlab to access this interface.  The binaries were built using
-Visual Studio 10 (2010) for Win32 in Release mode.  The Matlab interface
-was compiled with Matlab R2010b, however it works with some other
-versions of Matlab (e.g., R2008a).
+include/GeographicLib and lib folders.  With the 64-bit installer, the
+Matlab interface is installed in the libexec/GeographicLib/matlab
+folder.  Add this to your path in Matlab to access this interface.  The
+binaries were built using Visual Studio 10 (2010) in Release mode.  The
+Matlab interface was compiled with Matlab R2010b 64-bit, however it may
+work with some other 64-bit versions of Matlab.
 
 \section qt Building the library for use with Qt
 
@@ -457,21 +493,27 @@ in the top level directory.  Provided you are running on a system with
 doxygen, pod2man, and pod2html installed, then you can create the
 documentation and the man pages by building the system using cmake (the
 <code>MAINTAINER</code> configuration variable set to ON, if the
-necessary tools are found) or configure.   In the
-case of cmake, you must in addition run \verbatim
+necessary tools are found) or configure.
+
+In the case of cmake, you then run \verbatim
   make dist \endverbatim
 which will copy the documentation and man pages from the build directory
 back into the source tree and package the resulting source tree for
-distribution as
-\verbatim
-  GeographicLib-1.18.tar.gz
-  GeographicLib-1.18.zip \endverbatim
+distribution as \verbatim
+  GeographicLib-1.21.tar.gz
+  GeographicLib-1.21.zip \endverbatim
 Finally, \verbatim
   make package \endverbatim
 or building PACKAGE in Visual Studio will create a binary installer for
 %GeographicLib.  For Windows, this requires in the installation of
 <a href="http://nsis.sourceforge.net">NSIS</a>.
 
+With configure, run \verbatim
+  make dist-gzip \endverbatim
+which will create the additional files and packages the results ready
+for distribution as \verbatim
+  geographiclib-1.21.tar.gz \endverbatim
+
 <center>
 Back to \ref intro.  Forward to \ref start.  Up to \ref contents.
 </center>
@@ -559,7 +601,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\GeographicLib\
   of the compiler and you use for your code.  In addition, you have
   to build a separate debug version of the library when you can
   compiling your code in debug mode.  The configuration of cmake
-  described above ensure that the right version of the compiler is used
+  described above ensures that the right version of the compiler is used
   and, assuming you built and installed %GeographicLib in debug mode, the
   debug version of the library Geographic_d.lib will be used.
 
@@ -607,7 +649,7 @@ Back to \ref install.  Forward to \ref utilities.  Up to \ref contents.
 </center>
 **********************************************************************/
 /**
-\page utilities Utility Programs
+\page utilities Utility programs
 
 <center>
 Back to \ref start.  Forward to \ref organization.  Up to \ref contents.
@@ -627,7 +669,7 @@ The utilities are
    GeographicLib::Geodesic and GeographicLib::GeodesicLine.
  - <a href="Planimeter.1.html">
    <b>Planimeter</b></a>: compute the area of geodesic polygons using
-   the area facilities provided by GeographicLib::Geodesic.
+   GeographicLib::PolygonArea.
  - <a href="TransverseMercatorProj.1.html">
    <b>TransverseMercatorProj</b></a>: convert between geographic
    and transverse Mercator.  This is for testing
@@ -650,10 +692,10 @@ The utilities are
    GeographicLib::Geoid.
  - <a href="Gravity.1.html">
    <b>Gravity</b></a>: compute the earth's gravitational field using
-   GeographicLib::GravityModel.
+   GeographicLib::GravityModel and GeographicLib::GravityCircle.
  - <a href="MagneticField.1.html">
    <b>MagneticField</b></a>: compute the earth's magnetic field using
-   GeographicLib::MagneticModel.
+   GeographicLib::MagneticModel and GeographicLib::MagneticCircle.
  .
 The documentation for these utilities is in the form of man pages.  This
 documentation can be accessed by clicking on the utility name in the
@@ -838,7 +880,7 @@ and should be able to be deployed on any system with a modern C++
 compiler.  System dependencies come into
  - GeographicLib::Math -- GeographicLib needs to define functions such
    as atanh for systems that lack them.  The system dependence will
-   disappear with the adoption of C++0x because the needed functions are
+   disappear with the adoption of C++11 because the needed functions are
    part of that standard.
  - use of long double -- the type is used only for testing.  On systems
    which lack this data type the cmake and autoconf configuration
@@ -968,34 +1010,33 @@ Matlab.
 
    Compiler: 2
    etc. \endverbatim
-   (This will require that mex.bat is in your PATH.)  Then configure cmake
-   with, for example \verbatim
-   cmake -G "Visual Studio 10" -D ENABLE_MATLAB=ON .. \endverbatim
+   (This will require that mex.bat is in your PATH.  With Linux, use
+   <code>mex -setup</code>.)  Then configure cmake with, for example
+   \verbatim
+   cmake -G "Visual Studio 10" -D MATLAB_COMPILER=mex .. \endverbatim
    If you are running a 64-bit version of Matlab, be sure to select a
    64-bit generator with cmake, e.g., "Visual Studio 10 Win64".  Finally
    compile %GeographicLib with Visual Studio.  (The binary installer for
-   Windows includes the compiled interface built with Visual Studio 10
-   and Matlab R2010b).<br>
-   On Linux systems, cmake is configured to use Octave instead of Matlab,
-   because Matlab typically supports out-of-date versions of gcc.  However
-   the steps are similar (use <code>mex -setup</code> instead of
-   <code>mex.bat -setup</code>).
+   64-bit Windows includes the compiled interface built with Visual
+   Studio 10 and Matlab R2010b 64-bit).<br>
+   On Linux systems, you can compile the interface for use with octave
+   instead by using \verbatim
+   cmake -D MATLAB_COMPILER=mkoctfile .. \endverbatim
  - <b>Invoking the compiler from Matlab or Octave:</b> Start Matlab or
    Octave and run, e.g., \code
    mex -setup
-   cd 'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'
+   cd 'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'
    help geographiclibinterface
-   geographiclibinterface('C:/pkg-vc10/GeographicLib-1.18');
+   geographiclibinterface('C:/pkg-vc10/GeographicLib-1.21');
    addpath(pwd);
    \endcode
    The first command allows you to select the compiler to use (which
    should be the same as that used to compile %GeographicLib).
 
-
 To use the interface routines for %GeographicLib, run one of (for
 example) \verbatim
   addpath /usr/local/libexec/GeographicLib/matlab
-  addpath 'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'
+  addpath 'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'
 \endverbatim
 in Octave or Matlab.  The available functions are:
  - geodesicdirect: solve direct geodesic problem
@@ -1233,12 +1274,14 @@ installation directory, which is typically
 flag), and the data will then be placed in the "geoids" subdirectory.
 
 Windows users should download and run the Windows installers.  These
-will prompt for an installation directory with the default being
+will prompt for an installation directory with the default being one of
 \verbatim
    C:/Documents and Settings/All Users/Application Data/GeographicLib
+   C:/ProgramData/GeographicLib
 \endverbatim
 (which you probably should not change) and the data is installed in the
-"geoids" sub-directory.
+"geoids" sub-directory.  (The second directory name is an alternate name
+that Windows 7 for the "Application Data" directory.)
 
 Otherwise download \e either the tar.bz2 file \e or the zip file (they
 have the same contents).  If possible use the tar.bz2 files, since these
@@ -1386,7 +1429,14 @@ compressed format.
 GeographicLib::Geoid evaluates the geoid height using bilinear or cubic
 interpolation.  The gradient of the geoid height is obtained by
 differentiating the interpolated height and referencing the result to
-distance on the WGS84 ellipsoid.
+distance on the WGS84 ellipsoid. 
+
+<b>WARNING</b>: Although GeographicLib::Geoid computes the gradient of
+the geoid height, this is subject to large quantization errors as a
+result of the way that the geoid data is stored.  This is particularly
+acute for fine grids, at high latitudes, and for the easterly gradient.
+If you need to compute the direction of the acceleration due to gravity
+accurately, you should use GeographicLib::GravityModel::Gravity.
 
 The bilinear interpolation is based on the values at the 4 corners of
 the enclosing cell.  The interpolated height is a continuous function of
@@ -1422,7 +1472,7 @@ The interpolation methods are quick and give good accuracy.  Here is a
 summary of the combined quantization and interpolation errors for the
 heights.
 <center><table>
-<caption>Interpolation errors for geoid heights</caption>
+<caption>Interpolation and quantization errors for geoid heights</caption>
 <tr>
  <th rowspan="2">name
  <th rowspan="2">geoid
@@ -1439,36 +1489,68 @@ heights.
 <tr>
  <td>egm84-15   <td>EGM84  <td><center>15'  </center>
  <td><center>0.413 m</center><td><center>18 mm</center>
- <td><center>0.020 m</center><td><center> 1 mm</center>
+ <td><center>0.021 m</center><td><center>1.2 mm</center>
 <tr>
  <td>egm96-15   <td>EGM96  <td><center>15'  </center>
  <td><center>1.152 m</center><td><center>40 mm</center>
- <td><center>0.169 m</center><td><center> 7 mm</center>
+ <td><center>0.169 m</center><td><center>7.0 mm</center>
 <tr>
  <td>egm96-5    <td>EGM96  <td><center> 5'  </center>
- <td><center>0.140 m</center><td><center> 5 mm</center>
- <td><center>0.003 m</center><td><center> 1 mm</center>
+ <td><center>0.140 m</center><td><center>4.6 mm</center>
+ <td><center>0.0032 m</center><td><center>0.7 mm</center>
 <tr>
  <td>egm2008-5  <td>EGM2008<td><center> 5'  </center>
  <td><center>0.478 m</center><td><center>12 mm</center>
- <td><center>0.294 m</center><td><center> 5 mm</center>
+ <td><center>0.294 m</center><td><center>4.5 mm</center>
 <tr>
  <td>egm2008-2_5<td>EGM2008<td><center> 2.5'</center>
- <td><center>0.135 m</center><td><center> 3 mm</center>
- <td><center>0.031 m</center><td><center> 1 mm</center>
+ <td><center>0.135 m</center><td><center>3.2 mm</center>
+ <td><center>0.031 m</center><td><center>0.8 mm</center>
 <tr>
  <td>egm2008-1  <td>EGM2008<td><center> 1'  </center>
- <td><center>0.025 m</center><td><center> 1 mm</center>
- <td><center>0.003 m</center><td><center> 1 mm</center>
+ <td><center>0.025 m</center><td><center>0.8 mm</center>
+ <td><center>0.0022 m</center><td><center>0.7 mm</center>
 </table></center>
 The errors are with respect to the specific NGA earth gravity model
 (not to any "real" geoid).  The RMS values are obtained using 5 million
 uniformly distributed random points.  The maximum values are obtained by
-evaluating the errors using a different grid with points at or near the
+evaluating the errors using a different grid with points at the
 centers of the original grid.  (The RMS difference between EGM96 and
 EGM2008 is about 0.5 m.  The RMS difference between EGM84 and EGM96 is
 about 1.5 m.)
 
+The errors in the table above include the quantization errors that arise
+because the height data that GeographicLib::Geoid uses are quantized to
+3 mm.  If, instead, GeographicLib::Geoid were to use data files without
+such quantization artifacts, the overall error would be reduced <i>but
+only modestly</i> as shown in the following table, where only the
+changed rows are included and where the changed entries are given in
+bold:
+<center><table>
+<caption>Interpolation (only!) errors for geoid heights</caption>
+<tr>
+ <th rowspan="2">name
+ <th rowspan="2">geoid
+ <th rowspan="2">grid
+ <th colspan="2"><center>bilinear error</center></th>
+ <th colspan="2"><center>cubic error</center></th>
+<tr>
+ <th><center>max</center><th><center>rms</center>
+ <th><center>max</center><th><center>rms</center>
+<tr>
+ <td>egm96-5    <td>EGM96  <td><center> 5'  </center>
+ <td><center>0.140 m</center><td><center>4.6 mm</center>
+ <td><center><b>0.0026 m</b></center><td><center><b>0.1 mm</b></center>
+<tr>
+ <td>egm2008-2_5<td>EGM2008<td><center> 2.5'</center>
+ <td><center>0.135 m</center><td><center>3.2 mm</center>
+ <td><center>0.031 m</center><td><center><b>0.4 mm</b></center>
+<tr>
+ <td>egm2008-1  <td>EGM2008<td><center> 1'  </center>
+ <td><center>0.025 m</center><td><center><b>0.6 mm</b></center>
+ <td><center><b>0.0010 m</b></center><td><center><b>0.011 mm</b></center>
+</table></center>
+
 \section geoidcache Caching the geoid data
 
 A simple way of calling Geoid is as follows
@@ -1518,7 +1600,7 @@ two alternatives:
 
 A test set for the geoid models is available at
  - <a href="http://sf.net/projects/geographiclib/files/testdata/GeoidHeights.dat.gz/download">
-   GeoidHeight.dat.gz</a>
+   GeoidHeights.dat.gz</a>
  .
 This is about 11 MB (compressed).  This test set consists of a set of
 500000 geographic coordinates together with the corresponding geoid
@@ -1679,12 +1761,14 @@ installation directory, which is typically
 flag), and the data will then be placed in the "gravity" subdirectory.
 
 Windows users should download and run the Windows installers.  These
-will prompt for an installation directory with the default being
+will prompt for an installation directory with the default being one of
 \verbatim
    C:/Documents and Settings/All Users/Application Data/GeographicLib
+   C:/ProgramData/GeographicLib
 \endverbatim
 (which you probably should not change) and the data is installed in the
-"gravity" sub-directory.
+"gravity" sub-directory.  (The second directory name is an alternate name
+that Windows 7 for the "Application Data" directory.)
 
 Otherwise download \e either the tar.bz2 file \e or the zip file (they
 have the same contents).  To unpack these, run, for example
@@ -2024,87 +2108,18 @@ point.  There are two ways to speed up this computation:
    this can speed up the computation by another factor of 8.
  .
 Both of these techniques are illustrated by the following code,
-GeoidHeightTable.cpp, which computes a table of egm2008 geoid heights on
-a 1 minute grid.  On an 8-processor Intel 2.66 GHz machine using OpenMP
-(-DHAVE_OPENMP=1), this takes about 40 minutes of elapsed time.
-(Without these optimizations, the computation would have taken about 200
-days!)  \code
-// Compute a table of egm2008 geoid heights on a 1' grid.
-
-#include <vector>
-#include <fstream>
-#include <algorithm>
-
-#if HAVE_OPENMP
-#include <omp.h>
-#endif
-
-#include <GeographicLib/GravityModel.hpp>
-#include <GeographicLib/GravityCircle.hpp>
-
-using namespace std;
-using namespace GeographicLib;
-
-int main() {
-  GravityModel g("egm2008");
-  int
-    ndeg = 60,                  // Number of intervals per degree
-    nlat = 180 * ndeg + 1,
-    nlon = 360 * ndeg;
-  double delta = 1 / double(ndeg); // Grid spacing
-
-  // Write results as floats in binary mode
-  ofstream file("egm2008-geoid.dat", ios::binary);
-
-  // Compute and store results for nbatch latitudes at a time
-  const int nbatch = 64;
-  vector< vector<float> > N(nbatch, vector<float>(nlon));
-
-  for (int ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { // Loop over batches
-    int nlat0 = min(nlat, ilat0 + nbatch);
-
-#if HAVE_OPENMP
-#pragma omp parallel for
-#endif
-    for (int ilat = ilat0; ilat < nlat0; ++ilat) { // Loop over latitudes
-      double lat = 90 - ilat * delta, h = 0;
-      GravityCircle c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
-      for (int ilon = 0; ilon < nlon; ++ilon) { // Loop over longitudes
-        double lon = ilon * delta;
-        N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
-      } // longitude loop
-    }   // latitude loop
-    for (int ilat = ilat0; ilat < nlat0; ++ilat)
-      file.write(reinterpret_cast<char *>(N[ilat - ilat0].data()),
-                 nlon * sizeof(float));
-
-  } // batch loop
-}
-\endcode
-
-OpenMP is supported by g++ and Visual Studio but these compilers need to
-be instructed to honor the OpenMP directives.  CMake can do the
-necessary work with this CMakeLists.txt: \verbatim
-cmake_minimum_required (VERSION 2.6)
-project (GeoidHeightTable)
-# GravityModel was introduced in GeographicLib 1.16.
-find_package (GeographicLib 1.16 REQUIRED)
-find_package (OpenMP)
-
-include_directories (${GeographicLib_INCLUDE_DIRS})
-add_executable (GeoidHeightTable GeoidHeightTable.cpp)
-target_link_libraries (GeoidHeightTable ${GeographicLib_LIBRARIES})
-
-if (OPENMP_FOUND OR OpenMP_FOUND)
-  set_target_properties (GeoidHeightTable PROPERTIES
-    COMPILE_FLAGS ${OpenMP_CXX_FLAGS}
-    COMPILE_DEFINITIONS HAVE_OPENMP=1)
-  if (NOT WIN32)
-    set_target_properties (GeoidHeightTable PROPERTIES
-      LINK_FLAGS ${OpenMP_CXX_FLAGS})
-  endif (NOT WIN32)
-endif (OPENMP_FOUND OR OpenMP_FOUND)
-\endverbatim
+which computes a table of geoid heights on
+a regular grid and writes on the result in a
+<a href="http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary">.gtx</a>
+file.  On an 8-processor Intel 2.66 GHz machine using OpenMP
+(-DHAVE_OPENMP=1), it takes about 40 minutes of elapsed time to compute
+the geoid height for EGM2008 on a 1' gride.  (Without these
+optimizations, the computation would have taken about 200 days!)
+\include GeoidToGTX.cpp
+
+This example is built if cmake is invoked with <code>-D
+GEOGRAPHICLIB_EXAMPLES=ON</code>.  cmake will add in support for OpenMP,
+if it is available.
 
 <center>
 Back to \ref geoid.  Forward to \ref magnetic.  Up to \ref contents.
@@ -2223,12 +2238,14 @@ installation directory, which is typically
 flag), and the data will then be placed in the "magnetic" subdirectory.
 
 Windows users should download and run the Windows installers.  These
-will prompt for an installation directory with the default being
+will prompt for an installation directory with the default being one of
 \verbatim
    C:/Documents and Settings/All Users/Application Data/GeographicLib
+   C:/ProgramData/GeographicLib
 \endverbatim
 (which you probably should not change) and the data is installed in the
-"magnetic" sub-directory.
+"magnetic" sub-directory.  (The second directory name is an alternate name
+that Windows 7 for the "Application Data" directory.)
 
 Otherwise download \e either the tar.bz2 file \e or the zip file (they
 have the same contents).  To unpack these, run, for example
@@ -2398,7 +2415,7 @@ Back to \ref gravity.  Forward to \ref geodesic.  Up to \ref contents.
 </center>
 **********************************************************************/
 /**
-\page geodesic Geodesics on the Ellipsoid
+\page geodesic Geodesics on the ellipsoid
 
 <center>
 Back to \ref magnetic.  Forward to \ref transversemercator.  Up to
@@ -2875,7 +2892,7 @@ Back to \ref magnetic.  Forward to \ref transversemercator.  Up to
 </center>
 **********************************************************************/
 /**
-\page transversemercator Transverse Mercator Projection
+\page transversemercator Transverse Mercator projection
 
 <center>
 Back to \ref geodesic.  Forward to \ref geocentric.  Up to \ref contents.
@@ -3242,7 +3259,7 @@ Back to \ref transversemercator.  Forward to \ref old.  Up to \ref contents.
 </center>
 **********************************************************************/
 /**
-\page old Old Versions
+\page old Old versions
 
 <center>
 Back to \ref geocentric.  Up to \ref contents.
@@ -3251,15 +3268,57 @@ Back to \ref geocentric.  Up to \ref contents.
 List of versions in reverse chronological order together with a brief
 list of changes.  (Note: Old versions of the library use a year-month
 style of numbering.  Now, the library uses a major and minor version
-number.)
-
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">1.18 (released 2012-02-18)</a>
+number.)  Recent versions of %GeographicLib are available at
+<a href="http://sf.net/projects/geographiclib/files/distrib/">
+http://sourceforge.net/projects/geographiclib/files/distrib/</a>.
+Older versions are in
+<a href="http://sf.net/projects/geographiclib/files/distrib/archive/">
+http://sourceforge.net/projects/geographiclib/files/distrib/archive/</a>.
+
+ - Version 1.21 (released 2012-04-25)
+  - Support colon-separated DMS output:
+     - GeographicLib::DMS::Encode and
+       GeographicLib::GeoCoords::DMSRepresentation generalized;
+     - <a href="GeoConvert.1.html">GeoConvert</a> and
+       <a href="Geod.1.html">Geod</a> now accept a -: option.
+  - <a href="GeoidEval.1.html">GeoidEval</a> does not print the gradient
+    of the geoid height by default (because it's subject to large
+    errors); give the -g option to get the gradient printed.
+  - Work around optimization BUG in GeographicLib::Geodesic::Inverse
+    with tdm mingw g++ version 4.6.1.
+  - autoconf fixed to ensure that that out-of-sources builds work;
+    document this as the preferred method of using autoconf.
+  - cmake tweaks:
+     - simplify the configuration of doxygen;
+     - allow the Matlab compiler to be specified with the
+       MATLAB_COMPILER option.
+
+ - Version 1.20 (released 2012-03-23)
+  - cmake tweaks:
+    - improve find_package's matching of compiler versions;
+    - CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;
+    - add "x64" to the package name for the 64-bit binary installer;
+    - fix cmake warning with Visual Studio Express.
+  - Fix GeographicLib::SphericalEngine to deal with aggessive iterator
+    checking by Visual Studio.
+  - Fix transcription BUG is Geodesic.js.
+
+ - Version 1.19 (released 2012-03-13)
+  - Slight improvement in GeographicLib::Geodesic::Inverse for very
+    short lines.
+  - Fix argument checking tests in GeographicLib::MGRS::Forward.
+  - Add --comment-delimiter and --line-separator options to the \ref
+    utilities.
+  - Add installer for 64-bit Windows; the compiled Matlab interface is
+    supplied with the Windows 64-bit installer only.
+
+ - Version 1.18 (released 2012-02-18)
   - Improve documentation on configuration with cmake.
   - cmake's find_package ensures that the compiler versions match on Windows.
   - Improve documentation on compiling Matlab interface.
   - Binary installer for Windows installs under C:/pkg-vc10 by default.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.17.tar.gz/download">1.17 (released 2012-01-21)</a>
+ - Version 1.17 (released 2012-01-21)
   - Work around optimization BUG in GeographicLib::Geodesic::Inverse
     with g++ version 4.4.0 (mingw).
   - Fix BUG in argument checking with GeographicLib::OSGB::GridReference.
@@ -3267,10 +3326,10 @@ number.)
   - Add simple examples of usage for each class.
   - Add internal documentation to the cmake configuration files.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.16.tar.gz/download">1.16 (released 2011-12-07)</a>
+ - Version 1.16 (released 2011-12-07)
   - Add calculation of the earth's gravitational field:
     - add GeographicLib::NormalGravity GeographicLib::GravityModel and
-      GeographicLib::GravityCircle classes;
+       GeographicLib::GravityCircle classes;
     - add command line utility
       <a href="Gravity.1.html">Gravity</a>;
     - add \ref gravity;
@@ -3300,7 +3359,7 @@ number.)
      - default height to zero in
        <a href="MagneticField.1.html">MagneticField</a>.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.15.tar.gz/download">1.15 (released 2011-11-08)</a>
+ - Version 1.15 (released 2011-11-08)
   - Add calculation of the earth's magnetic field:
     - add GeographicLib::MagneticModel and GeographicLib::MagneticCircle
       classes;
@@ -3322,7 +3381,7 @@ number.)
     install setup.py for non-Windows systems.
   - Include Doxygen tag file in distribution as doc/html/Geographic.tag.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.14.tar.gz/download">1.14 (released 2011-09-30)</a>
+ - Version 1.14 (released 2011-09-30)
   - Ensure that geographiclib-config.cmake is relocatable.
   - Allow more unicode symbols to be used in GeographicLib::DMS::Decode.
   - Modify <a href="GeoidEval.1.html">GeoidEval</a> so that it can be
@@ -3336,7 +3395,7 @@ number.)
   - Supply a minimal Qt qmake project file for library
     src/Geographic.pro.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.13.tar.gz/download">1.13 (released 2011-08-13)</a>
+ - Version 1.13 (released 2011-08-13)
   - Changes to I/O:
     - allow : (colon) to be used as a DMS separator in
       GeographicLib::DMS::Decode(const std::string&, flag&);
@@ -3364,7 +3423,7 @@ number.)
       geographiclib-config.cmake;
     - better support for building a shared library under Windows.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.12.tar.gz/download">1.12 (released 2011-07-21)</a>
+ - Version 1.12 (released 2011-07-21)
   - Change license to MIT/X11.
   - Add GeographicLib::PolygonArea class and equivalent Matlab function.
   - Provide Javascript and Python implementations of geodesic routines.
@@ -3372,10 +3431,10 @@ number.)
   - Fix (innocuous) unassigned variable in Geodesic::GenInverse.
   - Geodesic routines in Matlab return a12 as first column of aux return
     value (incompatible change).
-  - A couple of code changes to enable compilation with Visual Studio
-    2003.
+  - A couple of code changes to enable compilation with Visual
+    Studio 2003.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.11.tar.gz/download">1.11 (released 2011-06-27)</a>
+ - Version 1.11 (released 2011-06-27)
   - Changes to <a href="Planimeter.1.html">Planimeter</a>:
     - add -l flag to <a href="Planimeter.1.html">Planimeter</a> for polyline
       calculations;
@@ -3401,7 +3460,7 @@ number.)
     - InverseFlattening() has been deprecated (and now returns inf for a
       sphere, instead of 0).
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.10.tar.gz/download">1.10 (released 2011-06-11)</a>
+ - Version 1.10 (released 2011-06-11)
   - Improvements to Matlab/Octave interface:
      - add {geocentric,localcartesian}{forward,reverse};
      - make geographiclibinterface more general;
@@ -3413,7 +3472,7 @@ number.)
      - cmake installed in man/man1 instead of share/man/man1;
      - cmake did not set the rpath on the tools.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.9.tar.gz/download">1.9 (released 2011-05-28)</a>
+ - Version 1.9 (released 2011-05-28)
   - FIX BUG in area returned by
     <a href="Planimeter.1.html">Planimeter</a> for pole encircling polygons.
   - FIX BUG in error message reported when DMS::Decode reads the string
@@ -3442,7 +3501,7 @@ number.)
     <a href="http://geographiclib.git.sf.net/git/gitweb-index.cgi">
     git</a>.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.8.tar.gz/download">1.8 (released 2011-02-22)</a>
+ - Version 1.8 (released 2011-02-22)
   - Optionally return rotation matrix from GeographicLib::Geocentric and
     GeographicLib::LocalCartesian.
   - For the \ref utilities, supply man pages, -h prints the synopsis,
@@ -3461,7 +3520,7 @@ number.)
   - Remove documentation that duplicates papers on transverse Mercator
     and geodesics.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.7.tar.gz/download">1.7 (released 2010-12-21)</a>
+ - Version 1.7 (released 2010-12-21)
   - FIX BUG in scale returned by GeographicLib::LambertConformalConic::Reverse.
   - Add GeographicLib::AlbersEqualArea projection.
   - Library created by Visual Studio is Geographic.lib instead of
@@ -3469,13 +3528,13 @@ number.)
   - Make classes NaN aware.
   - Use cell arrays for MGRS strings in Matlab.
   - Add solution/project files for Visual Studio 2010 (32-bit only).
-  - Use C++0x static_assert and math functions, if available.
+  - Use C++11 static_assert and math functions, if available.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.6.tar.gz/download">1.6 (released 2010-11-23)</a>
+ - Version 1.6 (released 2010-11-23)
   - FIX BUG introduced in GeographicLib::Geoid in version 1.5 (found by
     Dave Edwards).
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.5.tar.gz/download">1.5 (released 2010-11-19)</a>
+ - Version 1.5 (released 2010-11-19)
   - Improve area calculations for small polygons.
   - Add -s and -r flags to <a href="Planimeter.1.html">Planimeter</a>.
   - Improve the accuracy of GeographicLib::LambertConformalConic using
@@ -3500,7 +3559,7 @@ number.)
     - fixes to compile under cygwin;
     - tweak expression used to find latitude from conformal latitude.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.4.tar.gz/download">1.4 (released 2010-09-12)</a>
+ - Version 1.4 (released 2010-09-12)
   - Changes to GeographicLib::Geodesic and GeographicLib::GeodesicLine:
     - FIX BUG in Geodesic::Inverse with prolate ellipsoids;
     - add area computations to Geodesic::Direct and Geodesic::Inverse;
@@ -3530,7 +3589,7 @@ number.)
     classes which don't return the convergence (or azimuth) and scale.
   - Document function parameters and return values consistently.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.3.tar.gz/download">1.3 (released 2010-07-21)</a>
+ - Version 1.3 (released 2010-07-21)
   - Add GeographicLib::Gnomonic, the ellipsoid generalization of the
     gnomonic projection.
   - Add -g and -e options to
@@ -3549,7 +3608,7 @@ number.)
   - Update references to Geotrans in MGRS documentation.
   - Speed up tmseries.mac.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.2.tar.gz/download">1.2 (released 2010-05-21)</a>
+ - Version 1.2 (released 2010-05-21)
   - FIX BUGS in GeographicLib::Geodesic,
     - wrong azimuth returned by Direct if point 2 is on a pole;
     - Inverse sometimes fails with very close points.
@@ -3580,15 +3639,14 @@ number.)
     - <a href="CartConvert.1.html">CartConvert</a> allows the ellipsoid
       to be specified with -e.
 
- - <a  href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.1.tar.gz/download">1.1 (released 2010-02-09)</a>
+ - Version 1.1 (released 2010-02-09)
   - FIX BUG (introduced in 2009-03) in EllipticFunction::E(sn,cn,dn).
   - Increase accuracy of scale calculation in TransverseMercator and
     TransverseMercatorExact.
   - Code and documentation changes for consistency with
     <a  href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a>
 
- - <a  href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.0.tar.gz/download">
-   1.0 (released 2010-01-07)</a>
+ - Version 1.0 (released 2010-01-07)
   - Add autoconf configuration files.
   - BUG FIX: Improve initial guess for Newton's method in
     PolarStereographic::Reverse.  (Previously this failed to converge
@@ -3611,7 +3669,7 @@ number.)
       cached area without disk reads;
     - Add inspector functions to query the extent of the cache.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-11.tgz/download">2009-11</a>
+ - Version 2009-11
   - Allow specification of "closest UTM zone" in GeographicLib::UTMUPS
     and <a href="GeoConvert.1.html">GeoConvert</a> (via -t option).
   - Utilities now complain is there are too many tokens on input lines.
@@ -3625,7 +3683,7 @@ number.)
     - Improve accuracy of inverse hyperbolic functions.
     - Fix the way GeographicLib::Math functions handle different precisions.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-10.tgz/download">2009-10</a>
+ - Version 2009-10
   - Change web site to http://geographiclib.sourceforge.net
   - Several house-cleaning changes:
     - Change from the a flat directory structure to a more easily
@@ -3646,11 +3704,11 @@ number.)
       northings.
     - Add 64-bit targets in Visual Studio project files.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-09.tgz/download">2009-09</a>
+ - Version 2009-09
   - Add GeographicLib::Geoid and
     <a href="GeoidEval.1.html">GeoidEval</a> utility.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-08.tgz/download">2009-08</a>
+ - Version 2009-08
   - Add GeographicLib::CassiniSoldner class and
     <a href="GeodesicProj.1.html">EquidistantTest</a> utility.
   - Fix bug in GeographicLib::Geodesic::Inverse where NaNs were
@@ -3659,15 +3717,15 @@ number.)
     of the azimuthal scale instead of the reduced length.
   - Add -n option to <a href="GeoConvert.1.html">GeoConvert</a>.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-07.tgz/download">2009-07</a>
+ - Version 2009-07
   - Speed up the series inversion code in tmseries.mac and geod.mac.
   - Reference Borkowski in section on \ref geocentric.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-06.tgz/download">2009-06</a>
+ - Version 2009-06
   - Add routines to decode and encode zone+hemisphere to GeographicLib::UTMUPS.
   - Clean up code in GeographicLib::Geodesic.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-05.tgz/download">2009-05</a>
+ - Version 2009-05
   - Improvements to GeographicLib::Geodesic:
     - more economical series expansions,
     - return reduced length (as does the
@@ -3682,7 +3740,7 @@ number.)
     carefully.
   - Remove reference to defunct Constants.cpp from GeographicLib.vcproj.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-04.tgz/download">2009-04</a>
+ - Version 2009-04
   - Use compile-time constants to select the order of series in
     GeographicLib::TransverseMercator.
   - 2x unroll of Clenshaw summation to avoid data shuffling.
@@ -3698,7 +3756,7 @@ number.)
     - works with both oblate and prolate ellipsoids,
     - add -a, -e, -b options to the <a href="Geod.1.html">Geod</a> utility.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-03.tgz/download">2009-03</a>
+ - Version 2009-03
   - Add GeographicLib::Geodesic and the <a href="Geod.1.html">Geod</a> utility.
   - Declare when no exceptions are thrown by functions.
   - Minor changes to GeographicLib::DMS class.
@@ -3708,15 +3766,15 @@ number.)
     to <a href="CartConvert.1.html">CartConvert</a>.
   - Use inline functions to define constant doubles in Constants.hpp.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-02.tgz/download">2009-02</a>
+ - Version 2009-02
   - Fix documentation of constructors (flattening -> inverse
     flattening).
   - Use std versions of math functions.
   - Add GeographicLib::ECEF and GeographicLib::LocalCartesian classes
     and the ECEFConvert utility.
-  - Gather the documentation on the utility programs onto one page.
+  - Gather the documentation on the \ref utilities onto one page.
 
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-01.tgz/download">2009-01</a>
+ - Version 2009-01
   - First proper release of library.
   - More robust GeographicLib::TransverseMercatorExact:
     - Introduce \e extendp version of constructor,
@@ -3728,7 +3786,7 @@ number.)
   - Documentation on transverse Mercator projection.
   - Add GeographicLib::MGRS, GeographicLib::UTMUPS, etc.
 
- - 2008-09
+ - Version 2008-09
   - Ad hoc posting of information on the transverse Mercator projection.
 
 <center>
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 9d2add1..c5702db 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,19 +1,19 @@
-#  $Id: cfece0673e6f2ce525f3a520aa0030e89ad8f686 $
+#  $Id: a22d824c2a60646aff275d080be5c805c2c924eb $
 
-EXTRAFILES = tmseries30.html geodseries30.html
+EXTRAFILES = $(srcdir)/tmseries30.html $(srcdir)/geodseries30.html
 
 SCRIPTDRIVERS = \
-scripts/geod-calc.html \
-scripts/geod-google.html \
-scripts/geod-google-instructions.html
+$(srcdir)/scripts/geod-calc.html \
+$(srcdir)/scripts/geod-google.html \
+$(srcdir)/scripts/geod-google-instructions.html
 
 JSSCRIPTS = \
-scripts/GeographicLib/Math.js \
-scripts/GeographicLib/Geodesic.js \
-scripts/GeographicLib/GeodesicLine.js \
-scripts/GeographicLib/PolygonArea.js \
-scripts/GeographicLib/DMS.js \
-scripts/GeographicLib/Interface.js
+$(srcdir)/scripts/GeographicLib/Math.js \
+$(srcdir)/scripts/GeographicLib/Geodesic.js \
+$(srcdir)/scripts/GeographicLib/GeodesicLine.js \
+$(srcdir)/scripts/GeographicLib/PolygonArea.js \
+$(srcdir)/scripts/GeographicLib/DMS.js \
+$(srcdir)/scripts/GeographicLib/Interface.js
 
 HPPFILES = \
 $(top_srcdir)/include/GeographicLib/Accumulator.hpp \
@@ -85,19 +85,21 @@ MANPAGES = \
 
 doc: html/index.html
 
-html/index.html: Doxyfile Geographic.doc \
+html/index.html: doxyfile.in Geographic.doc \
 	$(HPPFILES) $(ALLSOURCES) $(EXTRAFILES) $(MANPAGES)
 	if test -d html; then rm -rf html/*; else mkdir html; fi
 	cp -p $(EXTRAFILES) $(MANPAGES) $(top_srcdir)/maxima/*.mac \
 	$(top_srcdir)/LICENSE.txt html/
-	doxygen
+	sed -e "s%@PROJECT_SOURCE_DIR@%$(top_srcdir)%g" \
+	-e "s%@GeographicLib_VERSION@%$(VERSION)%g" \
+	$(srcdir)/doxyfile.in | doxygen -
 
-distclean-local:
+maintainer-clean-local:
 	rm -rf html
 
-install-doc: doc
+install-doc: html/index.html
 	$(INSTALL) -d $(DESTDIR)$(docdir)/html
-	$(INSTALL) -m 644 html/* $(DESTDIR)$(docdir)/html
+	$(INSTALL) -m 644 `dirname $<`/* $(DESTDIR)$(docdir)/html
 	$(INSTALL) -d $(DESTDIR)$(docdir)/scripts
 	$(INSTALL) -m 644 $(SCRIPTDRIVERS) $(DESTDIR)$(docdir)/scripts
 	$(INSTALL) -d $(DESTDIR)$(docdir)/scripts/GeographicLib
diff --git a/doc/Makefile.in b/doc/Makefile.in
index f47e2a9..12d6a3e 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -15,7 +15,7 @@
 
 @SET_MAKE@
 
-#  $Id: cfece0673e6f2ce525f3a520aa0030e89ad8f686 $
+#  $Id: a22d824c2a60646aff275d080be5c805c2c924eb $
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -179,19 +179,19 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-EXTRAFILES = tmseries30.html geodseries30.html
+EXTRAFILES = $(srcdir)/tmseries30.html $(srcdir)/geodseries30.html
 SCRIPTDRIVERS = \
-scripts/geod-calc.html \
-scripts/geod-google.html \
-scripts/geod-google-instructions.html
+$(srcdir)/scripts/geod-calc.html \
+$(srcdir)/scripts/geod-google.html \
+$(srcdir)/scripts/geod-google-instructions.html
 
 JSSCRIPTS = \
-scripts/GeographicLib/Math.js \
-scripts/GeographicLib/Geodesic.js \
-scripts/GeographicLib/GeodesicLine.js \
-scripts/GeographicLib/PolygonArea.js \
-scripts/GeographicLib/DMS.js \
-scripts/GeographicLib/Interface.js
+$(srcdir)/scripts/GeographicLib/Math.js \
+$(srcdir)/scripts/GeographicLib/Geodesic.js \
+$(srcdir)/scripts/GeographicLib/GeodesicLine.js \
+$(srcdir)/scripts/GeographicLib/PolygonArea.js \
+$(srcdir)/scripts/GeographicLib/DMS.js \
+$(srcdir)/scripts/GeographicLib/Interface.js
 
 HPPFILES = \
 $(top_srcdir)/include/GeographicLib/Accumulator.hpp \
@@ -372,7 +372,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -416,7 +416,8 @@ installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
 
 mostlyclean: mostlyclean-am
 
@@ -435,33 +436,35 @@ uninstall-am:
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distclean-local \
-	distdir dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic maintainer-clean-local mostlyclean \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	uninstall uninstall-am
 
 
 doc: html/index.html
 
-html/index.html: Doxyfile Geographic.doc \
+html/index.html: doxyfile.in Geographic.doc \
 	$(HPPFILES) $(ALLSOURCES) $(EXTRAFILES) $(MANPAGES)
 	if test -d html; then rm -rf html/*; else mkdir html; fi
 	cp -p $(EXTRAFILES) $(MANPAGES) $(top_srcdir)/maxima/*.mac \
 	$(top_srcdir)/LICENSE.txt html/
-	doxygen
+	sed -e "s%@PROJECT_SOURCE_DIR@%$(top_srcdir)%g" \
+	-e "s%@GeographicLib_VERSION@%$(VERSION)%g" \
+	$(srcdir)/doxyfile.in | doxygen -
 
-distclean-local:
+maintainer-clean-local:
 	rm -rf html
 
-install-doc: doc
+install-doc: html/index.html
 	$(INSTALL) -d $(DESTDIR)$(docdir)/html
-	$(INSTALL) -m 644 html/* $(DESTDIR)$(docdir)/html
+	$(INSTALL) -m 644 `dirname $<`/* $(DESTDIR)$(docdir)/html
 	$(INSTALL) -d $(DESTDIR)$(docdir)/scripts
 	$(INSTALL) -m 644 $(SCRIPTDRIVERS) $(DESTDIR)$(docdir)/scripts
 	$(INSTALL) -d $(DESTDIR)$(docdir)/scripts/GeographicLib
diff --git a/doc/Makefile.mk b/doc/Makefile.mk
index ec3aec4..71460ba 100644
--- a/doc/Makefile.mk
+++ b/doc/Makefile.mk
@@ -1,4 +1,4 @@
-# $Id: a73f5b44ef34121aabca5037e847b0883c33a65d $
+# $Id: 0decae99c6f1f56173f01e0cfadc59032805d104 $
 
 MODULES = DMS EllipticFunction GeoCoords MGRS PolarStereographic \
 	TransverseMercator TransverseMercatorExact UTMUPS Geocentric \
@@ -22,13 +22,15 @@ MAXIMASOURCES = $(patsubst %,../maxima/%.mac,$(MAXIMA))
 
 doc: html/index.html
 
-html/index.html: Doxyfile Geographic.doc \
+html/index.html: doxyfile.in Geographic.doc \
 	$(HEADERS) $(ALLSOURCES) $(MAXIMASOURCES) $(EXTRAFILES) \
 	$(HTMLMANPAGES)
 	if test -d html; then rm -rf html/*; else mkdir html; fi
 	cp -p $(MAXIMASOURCES) $(EXTRAFILES) $(HTMLMANPAGES) \
 	../LICENSE.txt html/
-	doxygen
+	sed -e "s%@PROJECT_SOURCE_DIR@%..%g" \
+	-e "s%@GeographicLib_VERSION@%$(VERSION)%g" \
+	$(srcdir)/doxyfile.in | doxygen -
 
 PREFIX = /usr/local
 DEST = $(PREFIX)/share/doc/GeographicLib
@@ -43,7 +45,8 @@ install: html/index.html
 	mkdir -p $(SCRIPTDEST)/GeographicLib
 	$(INSTALL) -m 644 $(SCRIPTDRIVERS) $(SCRIPTDEST)/
 	$(INSTALL) -m 644 $(JSSCRIPTS) $(SCRIPTDEST)/GeographicLib/
-distclean:
+
+maintainer-clean:
 	rm -rf html
 
 .PHONY: doc install clean
diff --git a/doc/Doxyfile b/doc/doxyfile.in
similarity index 99%
rename from doc/Doxyfile
rename to doc/doxyfile.in
index 9367989..77d3728 100644
--- a/doc/Doxyfile
+++ b/doc/doxyfile.in
@@ -1,5 +1,5 @@
 # Doxyfile 1.5.2
-# $Id: df7fe50118980b375038a1edc147497084144c6e $
+# $Id: feb37f825ed10293802f164515d1004cf0c44b79 $
 
 # This file describes the settings to be used by the documentation system
 # doxygen (www.doxygen.org) for a project
@@ -32,7 +32,7 @@ PROJECT_NAME           = GeographicLib
 # This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
-PROJECT_NUMBER         =
+PROJECT_NUMBER         = @GeographicLib_VERSION@
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
 # base path where the generated documentation will be put.
@@ -114,7 +114,7 @@ FULL_PATH_NAMES        = NO
 # If left blank the directory from which doxygen is run is used as the
 # path to strip.
 
-STRIP_FROM_PATH        = ../
+STRIP_FROM_PATH        = @PROJECT_SOURCE_DIR@/
 
 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
 # the path mentioned in the documentation of a class, which tells
@@ -123,7 +123,7 @@ STRIP_FROM_PATH        = ../
 # definition is used. Otherwise one should specify the include paths that
 # are normally passed to the compiler using the -I flag.
 
-STRIP_FROM_INC_PATH    = ../include
+STRIP_FROM_INC_PATH    = @PROJECT_SOURCE_DIR@/include
 
 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
 # (but less readable) file names. This can be useful is your file systems
@@ -456,7 +456,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT = ../src ../include/GeographicLib ../tools ../doc/Geographic.doc
+INPUT = @PROJECT_SOURCE_DIR@/src @PROJECT_SOURCE_DIR@/include/GeographicLib @PROJECT_SOURCE_DIR@/tools @PROJECT_SOURCE_DIR@/doc/Geographic.doc
 
 # This tag can be used to specify the character encoding of the source files that
 # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
@@ -511,7 +511,7 @@ EXCLUDE_SYMBOLS        =
 # directories that contain example code fragments that are included (see
 # the \include command).
 
-EXAMPLE_PATH           = ../examples
+EXAMPLE_PATH           = @PROJECT_SOURCE_DIR@/examples
 
 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/doc/html/Accumulator_8hpp.html b/doc/html/Accumulator_8hpp.html
index 56bf3a1..c2471d8 100644
--- a/doc/html/Accumulator_8hpp.html
+++ b/doc/html/Accumulator_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Accumulator.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,15 +76,13 @@
 <table class="memberdecls">
 <tr><td colspan="2"><h2><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td></tr>
 <tr><td class="mdescLeft"> </td><td class="mdescRight">An accumulator for sums.  <a href="classGeographicLib_1_1Accumulator.html#details">More...</a><br/></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Accumulator_8hpp.html#af2ea0de968b20eb37534fa6baedcba54">GEOGRAPHICLIB_ACCUMULATOR_HPP</a>   "$Id: 03b7f4fdb9974c822f98d5f5aab1094b5a9ac8f2 $"</td></tr>
@@ -96,8 +109,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Accumulator_8hpp_source.html b/doc/html/Accumulator_8hpp_source.html
index 4146b11..bfa4c47 100644
--- a/doc/html/Accumulator_8hpp_source.html
+++ b/doc/html/Accumulator_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Accumulator.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -90,7 +105,7 @@
 <a name="l00040"></a>00040 <span class="comment">   * \include example-Accumulator.cpp</span>
 <a name="l00041"></a>00041 <span class="comment">   **********************************************************************/</span>
 <a name="l00042"></a>00042   <span class="keyword">template</span><<span class="keyword">typename</span> T = Math::real>
-<a name="l00043"></a><a class="code" href="classGeographicLib_1_1Accumulator.html">00043</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a> {
+<a name="l00043"></a>00043   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Accumulator {
 <a name="l00044"></a>00044   <span class="keyword">private</span>:
 <a name="l00045"></a>00045     <span class="comment">// _s + _t accumulates for the sum.</span>
 <a name="l00046"></a>00046     T _s, _t;
@@ -152,7 +167,7 @@
 <a name="l00102"></a>00102         _t += u;                <span class="comment">// otherwise just accumulate u to t.</span>
 <a name="l00103"></a>00103     }
 <a name="l00104"></a>00104     T Sum(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105       <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a> a(*<span class="keyword">this</span>);
+<a name="l00105"></a>00105       Accumulator a(*<span class="keyword">this</span>);
 <a name="l00106"></a>00106       a.Add(y);
 <a name="l00107"></a>00107       <span class="keywordflow">return</span> a._s;
 <a name="l00108"></a>00108     }
@@ -163,7 +178,7 @@
 <a name="l00113"></a>00113 <span class="comment">     *</span>
 <a name="l00114"></a>00114 <span class="comment">     * @param[in] y set \e sum = \e y.</span>
 <a name="l00115"></a>00115 <span class="comment">     **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">00116</a>     <a class="code" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">Accumulator</a>(T y = T(0)) throw() : _s(y), _t(0) {
+<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">00116</a>     <a class="code" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">Accumulator</a>(T y = T(0)) throw() : _s(y), _t(0) {
 <a name="l00117"></a>00117       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(!std::numeric_limits<T>::is_integer,
 <a name="l00118"></a>00118                     <span class="stringliteral">"Accumulator type is not floating point"</span>);
 <a name="l00119"></a>00119     }<span class="comment"></span>
@@ -172,32 +187,32 @@
 <a name="l00122"></a>00122 <span class="comment">     *</span>
 <a name="l00123"></a>00123 <span class="comment">     * @param[in] y set \e sum = \e y.</span>
 <a name="l00124"></a>00124 <span class="comment">     **********************************************************************/</span>
-<a name="l00125"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">00125</a>     <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">operator=</a>(T y) <span class="keywordflow">throw</span>() { _s = y; _t = 0; <span class="keywordflow">return</span> *<span class="keyword">this</sp [...]
+<a name="l00125"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">00125</a>     Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">operator=</a>(T y) <span class="keywordflow">throw</span>() { _s = y; _t = 0; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
 <a name="l00126"></a>00126 <span class="comment">    /**</span>
 <a name="l00127"></a>00127 <span class="comment">     * Return the value held in the accumulator.</span>
 <a name="l00128"></a>00128 <span class="comment">     *</span>
 <a name="l00129"></a>00129 <span class="comment">     * @return \e sum.</span>
 <a name="l00130"></a>00130 <span class="comment">     **********************************************************************/</span>
-<a name="l00131"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">00131</a>     T <a class="code" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">operator()</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _s; }<span class="comment"></span>
+<a name="l00131"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">00131</a>     T <a class="code" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">operator()</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _s; }<span class="comment"></span>
 <a name="l00132"></a>00132 <span class="comment">    /**</span>
 <a name="l00133"></a>00133 <span class="comment">     * Return the result of adding a number to \e sum (but don't change \e sum).</span>
 <a name="l00134"></a>00134 <span class="comment">     *</span>
 <a name="l00135"></a>00135 <span class="comment">     * @param[in] y the number to be added to the sum.</span>
 <a name="l00136"></a>00136 <span class="comment">     * @return \e sum + \e y.</span>
 <a name="l00137"></a>00137 <span class="comment">     **********************************************************************/</span>
-<a name="l00138"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">00138</a>     T <a class="code" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">operator()</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> Sum(y); }<span class="comment"></span>
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">00138</a>     T <a class="code" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">operator()</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> Sum(y); }<span class="comment"></span>
 <a name="l00139"></a>00139 <span class="comment">    /**</span>
 <a name="l00140"></a>00140 <span class="comment">     * Add a number to the accumulator.</span>
 <a name="l00141"></a>00141 <span class="comment">     *</span>
 <a name="l00142"></a>00142 <span class="comment">     * @param[in] y set \e sum += \e y.</span>
 <a name="l00143"></a>00143 <span class="comment">     **********************************************************************/</span>
-<a name="l00144"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">00144</a>     <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">operator+=</a>(T y) <span class="keywordflow">throw</span>() { Add(y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }< [...]
+<a name="l00144"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">00144</a>     Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">operator+=</a>(T y) <span class="keywordflow">throw</span>() { Add(y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
 <a name="l00145"></a>00145 <span class="comment">    /**</span>
 <a name="l00146"></a>00146 <span class="comment">     * Subtract a number from the accumulator.</span>
 <a name="l00147"></a>00147 <span class="comment">     *</span>
 <a name="l00148"></a>00148 <span class="comment">     * @param[in] y set \e sum -= \e y.</span>
 <a name="l00149"></a>00149 <span class="comment">     **********************************************************************/</span>
-<a name="l00150"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">00150</a>     <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">operator-=</a>(T y) <span class="keywordflow">throw</span>() { Add(-y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; } [...]
+<a name="l00150"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">00150</a>     Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">operator-=</a>(T y) <span class="keywordflow">throw</span>() { Add(-y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
 <a name="l00151"></a>00151 <span class="comment">    /**</span>
 <a name="l00152"></a>00152 <span class="comment">     * Multiply accumulator by an integer.  To avoid loss of accuracy, use only</span>
 <a name="l00153"></a>00153 <span class="comment">     * integers such that \e n * \e T is exactly representable as a \e T (i.e.,</span>
@@ -205,31 +220,31 @@
 <a name="l00155"></a>00155 <span class="comment">     *</span>
 <a name="l00156"></a>00156 <span class="comment">     * @param[in] n set \e sum *= \e n.</span>
 <a name="l00157"></a>00157 <span class="comment">     **********************************************************************/</span>
-<a name="l00158"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">00158</a>     <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">operator*=</a>(<span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() { _s *= n; _t *= n; <span class="keywordflow">return< [...]
+<a name="l00158"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">00158</a>     Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">operator*=</a>(<span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() { _s *= n; _t *= n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
 <a name="l00159"></a>00159 <span class="comment">    /**</span>
 <a name="l00160"></a>00160 <span class="comment">     * Test equality of an Accumulator with a number.</span>
 <a name="l00161"></a>00161 <span class="comment">     **********************************************************************/</span>
-<a name="l00162"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">00162</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">operator==</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s == y; }<span class="comment"></span>
+<a name="l00162"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">00162</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">operator==</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s == y; }<span class="comment"></span>
 <a name="l00163"></a>00163 <span class="comment">    /**</span>
 <a name="l00164"></a>00164 <span class="comment">     * Test inequality of an Accumulator with a number.</span>
 <a name="l00165"></a>00165 <span class="comment">     **********************************************************************/</span>
-<a name="l00166"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">00166</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">operator!=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s != y; }<span class="comment"></span>
+<a name="l00166"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">00166</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">operator!=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s != y; }<span class="comment"></span>
 <a name="l00167"></a>00167 <span class="comment">    /**</span>
 <a name="l00168"></a>00168 <span class="comment">     * Less operator on an Accumulator and a number.</span>
 <a name="l00169"></a>00169 <span class="comment">     **********************************************************************/</span>
-<a name="l00170"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">00170</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">operator<</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s < y; }<span class="comment"></span>
+<a name="l00170"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">00170</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">operator<</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s < y; }<span class="comment"></span>
 <a name="l00171"></a>00171 <span class="comment">    /**</span>
 <a name="l00172"></a>00172 <span class="comment">     * Less or equal operator on an Accumulator and a number.</span>
 <a name="l00173"></a>00173 <span class="comment">     **********************************************************************/</span>
-<a name="l00174"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">00174</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">operator<=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s <= y; }<span class="comment"></span>
+<a name="l00174"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">00174</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">operator<=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s <= y; }<span class="comment"></span>
 <a name="l00175"></a>00175 <span class="comment">    /**</span>
 <a name="l00176"></a>00176 <span class="comment">     * Greater operator on an Accumulator and a number.</span>
 <a name="l00177"></a>00177 <span class="comment">     **********************************************************************/</span>
-<a name="l00178"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">00178</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">operator></a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s > y; }<span class="comment"></span>
+<a name="l00178"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">00178</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">operator></a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s > y; }<span class="comment"></span>
 <a name="l00179"></a>00179 <span class="comment">    /**</span>
 <a name="l00180"></a>00180 <span class="comment">     * Greater or equal operator on an Accumulator and a number.</span>
 <a name="l00181"></a>00181 <span class="comment">     **********************************************************************/</span>
-<a name="l00182"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">00182</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">operator>=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s >= y; }
+<a name="l00182"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">00182</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">operator>=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s >= y; }
 <a name="l00183"></a>00183   };
 <a name="l00184"></a>00184 
 <a name="l00185"></a>00185 } <span class="comment">// namespace GeographicLib</span>
@@ -237,8 +252,13 @@
 <a name="l00187"></a>00187 <span class="preprocessor">#endif  // GEOGRAPHICLIB_ACCUMULATOR_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AlbersEqualArea_8cpp.html b/doc/html/AlbersEqualArea_8cpp.html
index 8727ddd..e6d5dd4 100644
--- a/doc/html/AlbersEqualArea_8cpp.html
+++ b/doc/html/AlbersEqualArea_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AlbersEqualArea.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8cpp.html#a0cbf05d716ed87a0d1bc3cc16e6adb2a">GEOGRAPHICLIB_ALBERSEQUALAREA_CPP</a>   "$Id: a7aa5e2e232feec5c866f0d645f110fd0bb38dd2 $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AlbersEqualArea_8cpp_source.html b/doc/html/AlbersEqualArea_8cpp_source.html
index 983f071..5fbfbf5 100644
--- a/doc/html/AlbersEqualArea_8cpp_source.html
+++ b/doc/html/AlbersEqualArea_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AlbersEqualArea.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,12 +83,12 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::eps_ = numeric_limits<real>::epsilon();
-<a name="l00023"></a>00023   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::epsx_ = Math::sq(eps_);
-<a name="l00024"></a>00024   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::epsx2_ = Math::sq(epsx_);
-<a name="l00025"></a>00025   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::tol_ = sqrt(eps_);
-<a name="l00026"></a>00026   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::tol0_ = tol_ * sqrt(sqrt(eps_));
-<a name="l00027"></a>00027   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::ahypover_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::eps_ = numeric_limits<real>::epsilon();
+<a name="l00023"></a>00023   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::epsx_ = Math::sq(eps_);
+<a name="l00024"></a>00024   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::epsx2_ = Math::sq(epsx_);
+<a name="l00025"></a>00025   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::tol_ = sqrt(eps_);
+<a name="l00026"></a>00026   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::tol0_ = tol_ * sqrt(sqrt(eps_));
+<a name="l00027"></a>00027   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::ahypover_ =
 <a name="l00028"></a>00028     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::digits) * log(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::radix))
 <a name="l00029"></a>00029     + 2;
 <a name="l00030"></a>00030 
@@ -87,16 +102,16 @@
 <a name="l00038"></a>00038     , _qZ(1 + _e2m * atanhee(real(1)))
 <a name="l00039"></a>00039     , _qx(_qZ / ( 2 * _e2m ))
 <a name="l00040"></a>00040   {
-<a name="l00041"></a>00041     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00041"></a>00041     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00042"></a>00042       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00043"></a>00043     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00043"></a>00043     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00044"></a>00044       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00045"></a>00045     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k0) && k0 > 0))
+<a name="l00045"></a>00045     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k0) && k0 > 0))
 <a name="l00046"></a>00046       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00047"></a>00047     <span class="keywordflow">if</span> (!(abs(stdlat) <= 90))
 <a name="l00048"></a>00048       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude not in [-90, 90]"</span>);
 <a name="l00049"></a>00049     real
-<a name="l00050"></a>00050       phi = stdlat * Math::degree<real>(),
+<a name="l00050"></a>00050       phi = stdlat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00051"></a>00051       sphi = sin(phi),
 <a name="l00052"></a>00052       cphi = abs(stdlat) != 90 ? cos(phi) : 0;
 <a name="l00053"></a>00053     Init(sphi, cphi, sphi, cphi, k0);
@@ -113,18 +128,18 @@
 <a name="l00064"></a>00064     , _qZ(1 + _e2m * atanhee(real(1)))
 <a name="l00065"></a>00065     , _qx(_qZ / ( 2 * _e2m ))
 <a name="l00066"></a>00066   {
-<a name="l00067"></a>00067     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00067"></a>00067     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00068"></a>00068       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00069"></a>00069     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00069"></a>00069     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00070"></a>00070       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00071"></a>00071     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00071"></a>00071     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
 <a name="l00072"></a>00072       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00073"></a>00073     <span class="keywordflow">if</span> (!(abs(stdlat1) <= 90))
 <a name="l00074"></a>00074       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
 <a name="l00075"></a>00075     <span class="keywordflow">if</span> (!(abs(stdlat2) <= 90))
 <a name="l00076"></a>00076       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 2 not in [-90, 90]"</span>);
 <a name="l00077"></a>00077     real
-<a name="l00078"></a>00078       phi1 = stdlat1 * Math::degree<real>(),
+<a name="l00078"></a>00078       phi1 = stdlat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00079"></a>00079       phi2 = stdlat2 * Math::degree<real>();
 <a name="l00080"></a>00080     Init(sin(phi1), abs(stdlat1) != 90 ? cos(phi1) : 0,
 <a name="l00081"></a>00081          sin(phi2), abs(stdlat2) != 90 ? cos(phi2) : 0, k1);
@@ -143,11 +158,11 @@
 <a name="l00094"></a>00094     , _qZ(1 + _e2m * atanhee(real(1)))
 <a name="l00095"></a>00095     , _qx(_qZ / ( 2 * _e2m ))
 <a name="l00096"></a>00096   {
-<a name="l00097"></a>00097     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00097"></a>00097     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00098"></a>00098       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00099"></a>00099     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00099"></a>00099     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00100"></a>00100       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00101"></a>00101     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00101"></a>00101     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
 <a name="l00102"></a>00102       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00103"></a>00103     <span class="keywordflow">if</span> (!(coslat1 >= 0))
 <a name="l00104"></a>00104       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
@@ -167,9 +182,9 @@
 <a name="l00118"></a>00118                              <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1) <span class="keywordflow">throw</span>() {
 <a name="l00119"></a>00119     {
 <a name="l00120"></a>00120       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r;
-<a name="l00121"></a>00121       r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi1, cphi1);
+<a name="l00121"></a>00121       r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi1, cphi1);
 <a name="l00122"></a>00122       sphi1 /= r; cphi1 /= r;
-<a name="l00123"></a>00123       r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi2, cphi2);
+<a name="l00123"></a>00123       r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi2, cphi2);
 <a name="l00124"></a>00124       sphi2 /= r; cphi2 /= r;
 <a name="l00125"></a>00125     }
 <a name="l00126"></a>00126     <span class="keywordtype">bool</span> polar = (cphi1 == 0);
@@ -213,12 +228,12 @@
 <a name="l00164"></a>00164       C = 1;                    <span class="comment">// ignored</span>
 <a name="l00165"></a>00165     } <span class="keywordflow">else</span> {
 <a name="l00166"></a>00166       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00167"></a>00167         tbet1 = _fm * tphi1, scbet12 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet1),
-<a name="l00168"></a>00168         tbet2 = _fm * tphi2, scbet22 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet2),
+<a name="l00167"></a>00167         tbet1 = _fm * tphi1, scbet12 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet1),
+<a name="l00168"></a>00168         tbet2 = _fm * tphi2, scbet22 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet2),
 <a name="l00169"></a>00169         txi1 = txif(tphi1), cxi1 = 1/hyp(txi1), sxi1 = txi1 * cxi1,
 <a name="l00170"></a>00170         txi2 = txif(tphi2), cxi2 = 1/hyp(txi2), sxi2 = txi2 * cxi2,
 <a name="l00171"></a>00171         dtbet2 = _fm * (tbet1 + tbet2),
-<a name="l00172"></a>00172         es1 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi1), es2 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi2),
+<a name="l00172"></a>00172         es1 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi1), es2 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi2),
 <a name="l00173"></a>00173         <span class="comment">/*</span>
 <a name="l00174"></a>00174 <span class="comment">        dsxi = ( (_e2 * sq(sphi2 + sphi1) + es2 + es1) / (2 * es2 * es1) +</span>
 <a name="l00175"></a>00175 <span class="comment">                 Datanhee(sphi2, sphi1) ) * Dsn(tphi2, tphi1, sphi2, sphi1) /</span>
@@ -236,13 +251,13 @@
 <a name="l00187"></a>00187         <span class="comment">//   sq(scbet)*(1-sxi) = sq(scbet)*(1-sphi) * (1-sxi)/(1-sphi)</span>
 <a name="l00188"></a>00188         sm1 = -Dsn(tphi2, tphi1, sphi2, sphi1) *
 <a name="l00189"></a>00189         ( -( ((sphi2 <= 0 ? (1 - sxi2) / (1 - sphi2) :
-<a name="l00190"></a>00190                <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cxi2/cphi2) * (1 + sphi2) / (1 + sxi2)) +
+<a name="l00190"></a>00190                <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cxi2/cphi2) * (1 + sphi2) / (1 + sxi2)) +
 <a name="l00191"></a>00191               (sphi1 <= 0 ? (1 - sxi1) / (1 - sphi1) :
-<a name="l00192"></a>00192                <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cxi1/cphi1) * (1 + sphi1) / (1 + sxi1))) ) *
+<a name="l00192"></a>00192                <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cxi1/cphi1) * (1 + sphi1) / (1 + sxi1))) ) *
 <a name="l00193"></a>00193           (1 + _e2 * (sphi1 + sphi2 + sphi1 * sphi2)) /
 <a name="l00194"></a>00194           (1 +       (sphi1 + sphi2 + sphi1 * sphi2)) +
-<a name="l00195"></a>00195           (scbet22 * (sphi2 <= 0 ? 1 - sphi2 : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cphi2) / ( 1 + sphi2)) +
-<a name="l00196"></a>00196            scbet12 * (sphi1 <= 0 ? 1 - sphi1 : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cphi1) / ( 1 + sphi1)))
+<a name="l00195"></a>00195           (scbet22 * (sphi2 <= 0 ? 1 - sphi2 : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cphi2) / ( 1 + sphi2)) +
+<a name="l00196"></a>00196            scbet12 * (sphi1 <= 0 ? 1 - sphi1 : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cphi1) / ( 1 + sphi1)))
 <a name="l00197"></a>00197           * (_e2 * (1 + sphi1 + sphi2 + _e2 * sphi1 * sphi2)/(es1 * es2)
 <a name="l00198"></a>00198           +_e2m * DDatanhee(sphi1, sphi2) ) / _qZ ) / den;
 <a name="l00199"></a>00199       <span class="comment">// C = (scbet22*sxi2 - scbet12*sxi1) / (scbet22 * scbet12 * (sx2 - sx1))</span>
@@ -282,25 +297,25 @@
 <a name="l00233"></a>00233         <span class="comment">//                 ((1-e2)*(1-e2*sphi0^2)^2)</span>
 <a name="l00234"></a>00234 
 <a name="l00235"></a>00235         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00236"></a>00236           scphi02 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi0), scphi0 = sqrt(scphi02),
+<a name="l00236"></a>00236           scphi02 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi0), scphi0 = sqrt(scphi02),
 <a name="l00237"></a>00237           <span class="comment">// sphi0m = 1-sin(phi0) = 1/( sec(phi0) * (tan(phi0) + sec(phi0)) )</span>
 <a name="l00238"></a>00238           sphi0 = tphi0 / scphi0, sphi0m = 1/(scphi0 * (tphi0 + scphi0)),
 <a name="l00239"></a>00239           <span class="comment">// scbet0^2 * sphi0</span>
-<a name="l00240"></a>00240           g = (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>( _fm * tphi0 )) * sphi0,
+<a name="l00240"></a>00240           g = (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>( _fm * tphi0 )) * sphi0,
 <a name="l00241"></a>00241           <span class="comment">// dg/dsphi0 = dg/dtphi0 * scphi0^3</span>
-<a name="l00242"></a>00242           dg = _e2m * scphi02 * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi0)) + _e2,
+<a name="l00242"></a>00242           dg = _e2m * scphi02 * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi0)) + _e2,
 <a name="l00243"></a>00243           D = sphi0m * (1 - _e2*(1 + 2*sphi0*(1+sphi0))) / (_e2m * (1+sphi0)),
 <a name="l00244"></a>00244           <span class="comment">// dD/dsphi0</span>
-<a name="l00245"></a>00245           dD = -2 * (1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0) * (2*sphi0+3)) /
-<a name="l00246"></a>00246                (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(1+sphi0)),
-<a name="l00247"></a>00247           A = -_e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0m) * (2+(1+_e2)*sphi0) /
-<a name="l00248"></a>00248               (_e2m*(1-_e2*<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0))),
+<a name="l00245"></a>00245           dD = -2 * (1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0) * (2*sphi0+3)) /
+<a name="l00246"></a>00246                (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(1+sphi0)),
+<a name="l00247"></a>00247           A = -_e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0m) * (2+(1+_e2)*sphi0) /
+<a name="l00248"></a>00248               (_e2m*(1-_e2*<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0))),
 <a name="l00249"></a>00249           B = (sphi0m * _e2m / (1 - _e2*sphi0) *
 <a name="l00250"></a>00250                (atanhxm1(_e2 *
-<a name="l00251"></a>00251                          <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0m / (1-_e2*sphi0))) - _e2*sphi0m/_e2m)),
+<a name="l00251"></a>00251                          <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0m / (1-_e2*sphi0))) - _e2*sphi0m/_e2m)),
 <a name="l00252"></a>00252           <span class="comment">// d(A+B)/dsphi0</span>
-<a name="l00253"></a>00253           dAB = (2 * _e2 * (2 - _e2 * (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0))) /
-<a name="l00254"></a>00254                  (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0)) * scphi02)),
+<a name="l00253"></a>00253           dAB = (2 * _e2 * (2 - _e2 * (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0))) /
+<a name="l00254"></a>00254                  (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0)) * scphi02)),
 <a name="l00255"></a>00255           u = sm1 * g - s/_qZ * ( D - g * (A + B) ),
 <a name="l00256"></a>00256           <span class="comment">// du/dsphi0</span>
 <a name="l00257"></a>00257           du = sm1 * dg - s/_qZ * (dD - dg * (A + B) - g * dAB),
@@ -312,10 +327,10 @@
 <a name="l00263"></a>00263     }
 <a name="l00264"></a>00264     _txi0 = txif(tphi0); _scxi0 = hyp(_txi0); _sxi0 = _txi0 / _scxi0;
 <a name="l00265"></a>00265     _n0 = tphi0/hyp(tphi0);
-<a name="l00266"></a>00266     _m02 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_fm * tphi0));
+<a name="l00266"></a>00266     _m02 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_fm * tphi0));
 <a name="l00267"></a>00267     _nrho0 = polar ? 0 : _a * sqrt(_m02);
 <a name="l00268"></a>00268     _k0 = sqrt(tphi1 == tphi2 ? 1 : C / (_m02 + _n0 * _qZ * _sxi0)) * k1;
-<a name="l00269"></a>00269     _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_k0);
+<a name="l00269"></a>00269     _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_k0);
 <a name="l00270"></a>00270     _lat0 = _sign * atan(tphi0)/Math::degree<real>();
 <a name="l00271"></a>00271   }
 <a name="l00272"></a>00272 
@@ -337,7 +352,7 @@
 <a name="l00288"></a>00288                                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
 <a name="l00289"></a>00289                                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
 <a name="l00290"></a>00290 
-<a name="l00291"></a>00291   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::txif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00291"></a>00291   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::txif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00292"></a>00292     <span class="comment">// sxi = ( sphi/(1-e2*sphi^2) + atanhee(sphi) ) /</span>
 <a name="l00293"></a>00293     <span class="comment">//       ( 1/(1-e2) + atanhee(1) )</span>
 <a name="l00294"></a>00294     <span class="comment">//</span>
@@ -351,7 +366,7 @@
 <a name="l00302"></a>00302     <span class="keywordtype">int</span> s = tphi < 0 ? -1 : 1;  <span class="comment">// Enforce odd parity</span>
 <a name="l00303"></a>00303     tphi *= s;
 <a name="l00304"></a>00304     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00305"></a>00305       cphi2 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi)),
+<a name="l00305"></a>00305       cphi2 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi)),
 <a name="l00306"></a>00306       sphi = tphi * sqrt(cphi2),
 <a name="l00307"></a>00307       es1 = _e2 * sphi,
 <a name="l00308"></a>00308       es2m1 = 1 - es1 * sphi,
@@ -364,7 +379,7 @@
 <a name="l00315"></a>00315             ( es1m1 / es2m1a + atanhee(es1p1) ) );
 <a name="l00316"></a>00316   }
 <a name="l00317"></a>00317 
-<a name="l00318"></a>00318   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::tphif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00318"></a>00318   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::tphif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00319"></a>00319     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00320"></a>00320       tphi = txi,
 <a name="l00321"></a>00321       stol = tol_ * max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), abs(txi));
@@ -373,11 +388,11 @@
 <a name="l00324"></a>00324       <span class="comment">// dtxi/dtphi = (scxi/scphi)^3 * 2*(1-e^2)/(qZ*(1-e^2*sphi^2)^2)</span>
 <a name="l00325"></a>00325       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00326"></a>00326         txia = txif(tphi),
-<a name="l00327"></a>00327         tphi2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi),
+<a name="l00327"></a>00327         tphi2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi),
 <a name="l00328"></a>00328         scphi2 = 1 + tphi2,
-<a name="l00329"></a>00329         scterm = scphi2/(1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(txia)),
+<a name="l00329"></a>00329         scterm = scphi2/(1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(txia)),
 <a name="l00330"></a>00330         dtphi = (txi - txia) * scterm * sqrt(scterm) *
-<a name="l00331"></a>00331         _qx * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(1 - _e2 * tphi2 / scphi2);
+<a name="l00331"></a>00331         _qx * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(1 - _e2 * tphi2 / scphi2);
 <a name="l00332"></a>00332       tphi += dtphi;
 <a name="l00333"></a>00333       <span class="keywordflow">if</span> (!(abs(dtphi) >= stol))
 <a name="l00334"></a>00334         <span class="keywordflow">break</span>;
@@ -387,7 +402,7 @@
 <a name="l00338"></a>00338 
 <a name="l00339"></a>00339   <span class="comment">// return atanh(sqrt(x))/sqrt(x) - 1 = y/3 + y^2/5 + y^3/7 + ...</span>
 <a name="l00340"></a>00340   <span class="comment">// typical x < e^2 = 2*f</span>
-<a name="l00341"></a>00341   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::atanhxm1(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00341"></a>00341   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::atanhxm1(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
 <a name="l00342"></a>00342     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s = 0;
 <a name="l00343"></a>00343     <span class="keywordflow">if</span> (abs(x) < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) {
 <a name="l00344"></a>00344       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> os = -1, y = 1, k = 1;
@@ -399,13 +414,13 @@
 <a name="l00350"></a>00350       }
 <a name="l00351"></a>00351     } <span class="keywordflow">else</span> {
 <a name="l00352"></a>00352       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xs = sqrt(abs(x));
-<a name="l00353"></a>00353       s = (x > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(xs) : atan(xs)) / xs - 1;
+<a name="l00353"></a>00353       s = (x > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(xs) : atan(xs)) / xs - 1;
 <a name="l00354"></a>00354     }
 <a name="l00355"></a>00355     <span class="keywordflow">return</span> s;
 <a name="l00356"></a>00356   }
 <a name="l00357"></a>00357 
 <a name="l00358"></a>00358   <span class="comment">// return (Datanhee(1,y) - Datanhee(1,x))/(y-x)</span>
-<a name="l00359"></a>00359   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::DDatanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00359"></a>00359   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::DDatanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00360"></a>00360     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s = 0;
 <a name="l00361"></a>00361     <span class="keywordflow">if</span> (_e2 * (abs(x) + abs(y)) < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) {
 <a name="l00362"></a>00362       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> os = -1, z = 1, k = 1, t = 0, c = 0, en = 1;
@@ -436,7 +451,7 @@
 <a name="l00387"></a>00387       lon -= lon0;
 <a name="l00388"></a>00388     lat *= _sign;
 <a name="l00389"></a>00389     real
-<a name="l00390"></a>00390       lam = lon * Math::degree<real>(),
+<a name="l00390"></a>00390       lam = lon * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00391"></a>00391       phi = lat * Math::degree<real>(),
 <a name="l00392"></a>00392       sphi = sin(phi), cphi = abs(lat) != 90 ? cos(phi) : epsx_,
 <a name="l00393"></a>00393       tphi = sphi/cphi, txi = txif(tphi), sxi = txi/hyp(txi),
@@ -447,12 +462,12 @@
 <a name="l00398"></a>00398     x = t * (_n0 != 0 ? stheta / _n0 : _k2 * lam) / _k0;
 <a name="l00399"></a>00399     y = (_nrho0 *
 <a name="l00400"></a>00400          (_n0 != 0 ?
-<a name="l00401"></a>00401           (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(stheta)/(1 + ctheta)) / _n0 :
+<a name="l00401"></a>00401           (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(stheta)/(1 + ctheta)) / _n0 :
 <a name="l00402"></a>00402           0)
 <a name="l00403"></a>00403          - drho * ctheta) / _k0;
 <a name="l00404"></a>00404     k = _k0 * (t != 0 ? t * hyp(_fm * tphi) / _a : 1);
 <a name="l00405"></a>00405     y *= _sign;
-<a name="l00406"></a>00406     gamma = _sign * theta / Math::degree<real>();
+<a name="l00406"></a>00406     gamma = _sign * theta / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00407"></a>00407   }
 <a name="l00408"></a>00408 
 <a name="l00409"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">00409</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">AlbersEqualArea::Reverse</a>(real lon0, real x, real y,
@@ -462,19 +477,19 @@
 <a name="l00413"></a>00413     y *= _sign;
 <a name="l00414"></a>00414     real
 <a name="l00415"></a>00415       nx = _k0 * _n0 * x, ny = _k0 * _n0 * y, y1 =  _nrho0 - ny,
-<a name="l00416"></a>00416       den = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
+<a name="l00416"></a>00416       den = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
 <a name="l00417"></a>00417       drho = den != 0 ? (_k0*x*nx - 2*_k0*y*_nrho0 + _k0*y*ny) / den : 0,
 <a name="l00418"></a>00418       <span class="comment">// dsxia = scxi0 * dsxi</span>
 <a name="l00419"></a>00419       dsxia = - _scxi0 * (2 * _nrho0 + _n0 * drho) * drho /
-<a name="l00420"></a>00420               (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_a) * _qZ),
+<a name="l00420"></a>00420               (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_a) * _qZ),
 <a name="l00421"></a>00421       txi = (_txi0 + dsxia) / sqrt(max(1 - dsxia * (2*_txi0 + dsxia), epsx2_)),
 <a name="l00422"></a>00422       tphi = tphif(txi),
 <a name="l00423"></a>00423       phi = _sign * atan(tphi),
 <a name="l00424"></a>00424       theta = atan2(nx, y1),
 <a name="l00425"></a>00425       lam = _n0 != 0 ? theta / (_k2 * _n0) : x / (y1 * _k0);
-<a name="l00426"></a>00426     gamma = _sign * theta / Math::degree<real>();
-<a name="l00427"></a>00427     lat = phi / Math::degree<real>();
-<a name="l00428"></a>00428     lon = lam / Math::degree<real>();
+<a name="l00426"></a>00426     gamma = _sign * theta / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00427"></a>00427     lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00428"></a>00428     lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00429"></a>00429     <span class="comment">// Avoid losing a bit of accuracy in lon (assuming lon0 is an integer)</span>
 <a name="l00430"></a>00430     <span class="keywordflow">if</span> (lon + lon0 >= 180)
 <a name="l00431"></a>00431       lon += lon0 - 360;
@@ -486,7 +501,7 @@
 <a name="l00437"></a>00437   }
 <a name="l00438"></a>00438 
 <a name="l00439"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a0c00022edeb6b67dcd4e00f087b412c4">00439</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a0c00022edeb6b67dcd4e00f087b412c4">AlbersEqualArea::SetScale</a>(real lat, real k) {
-<a name="l00440"></a>00440     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k) && k > 0))
+<a name="l00440"></a>00440     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k) && k > 0))
 <a name="l00441"></a>00441       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00442"></a>00442     <span class="keywordflow">if</span> (!(abs(lat) < 90))
 <a name="l00443"></a>00443       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude for SetScale not in (-90, 90)"</span>);
@@ -494,14 +509,19 @@
 <a name="l00445"></a>00445     <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aac57f3a9c0c08fb897a1e37034d127c1">Forward</a>(0, lat, 0, x, y, gamma, kold);
 <a name="l00446"></a>00446     k /= kold;
 <a name="l00447"></a>00447     _k0 *= k;
-<a name="l00448"></a>00448     _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_k0);
+<a name="l00448"></a>00448     _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_k0);
 <a name="l00449"></a>00449   }
 <a name="l00450"></a>00450 
 <a name="l00451"></a>00451 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AlbersEqualArea_8hpp.html b/doc/html/AlbersEqualArea_8hpp.html
index ebc8e5b..f21285a 100644
--- a/doc/html/AlbersEqualArea_8hpp.html
+++ b/doc/html/AlbersEqualArea_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AlbersEqualArea.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,13 +82,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8hpp.html#aa9494d369d907d2b285fcb2f45b4689c">GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</a>   "$Id: c9f194023273bee32876018a1f6a548e35303836 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8hpp.html#aa9494d369d907d2b285fcb2f45b4689c">GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</a>   "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP   "$Id: c9f194023273bee32876018a1f6a548e35303836 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP   "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AlbersEqualArea_8hpp_source.html b/doc/html/AlbersEqualArea_8hpp_source.html
index bee5400..b4d684f 100644
--- a/doc/html/AlbersEqualArea_8hpp_source.html
+++ b/doc/html/AlbersEqualArea_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AlbersEqualArea.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_ALBERSEQUALAREA_HPP)</span>
 <a name="l00011"></a><a class="code" href="AlbersEqualArea_8hpp.html#aa9494d369d907d2b285fcb2f45b4689c">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: c9f194023273bee32876018a1f6a548e35303836 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <algorithm></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -104,260 +119,271 @@
 <a name="l00054"></a>00054 <span class="comment">   *</span>
 <a name="l00055"></a>00055 <span class="comment">   * Example of use:</span>
 <a name="l00056"></a>00056 <span class="comment">   * \include example-AlbersEqualArea.cpp</span>
-<a name="l00057"></a>00057 <span class="comment">   **********************************************************************/</span>
-<a name="l00058"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html">00058</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> {
-<a name="l00059"></a>00059   <span class="keyword">private</span>:
-<a name="l00060"></a>00060     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00061"></a>00061     real _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx;
-<a name="l00062"></a>00062     real _sign, _lat0, _k0;
-<a name="l00063"></a>00063     real _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0;
-<a name="l00064"></a>00064     <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00065"></a>00065     <span class="keyword">static</span> <span class="keyword">const</span> real epsx_;
-<a name="l00066"></a>00066     <span class="keyword">static</span> <span class="keyword">const</span> real epsx2_;
-<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keyword">const</span> real tol0_;
-<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> real ahypover_;
-<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;   <span class="comment">// Newton iterations in Reverse</span>
-<a name="l00071"></a>00071     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit0_ = 20; <span class="comment">// Newton iterations in Init</span>
-<a name="l00072"></a>00072     <span class="keyword">static</span> <span class="keyword">inline</span> real hyp(real x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), x); }
-<a name="l00073"></a>00073     <span class="comment">// atanh(      e   * x)/      e   if f > 0</span>
-<a name="l00074"></a>00074     <span class="comment">// atan (sqrt(-e2) * x)/sqrt(-e2) if f < 0</span>
-<a name="l00075"></a>00075     <span class="comment">// x                              if f = 0</span>
-<a name="l00076"></a>00076     <span class="keyword">inline</span> real atanhee(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00077"></a>00077       <span class="keywordflow">return</span> _f > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x)/_e :
-<a name="l00078"></a>00078         (_f < 0 ? std::atan(_e * x)/_e : x);
-<a name="l00079"></a>00079     }
-<a name="l00080"></a>00080     <span class="comment">// return atanh(sqrt(x))/sqrt(x) - 1, accurate for small x</span>
-<a name="l00081"></a>00081     <span class="keyword">static</span> real atanhxm1(real x) <span class="keywordflow">throw</span>();
-<a name="l00082"></a>00082 
-<a name="l00083"></a>00083     <span class="comment">// Divided differences</span>
-<a name="l00084"></a>00084     <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
-<a name="l00085"></a>00085     <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
-<a name="l00086"></a>00086     <span class="comment">// Symbolic computation of divided differences,</span>
-<a name="l00087"></a>00087     <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
-<a name="l00088"></a>00088     <span class="comment">// http://doi.acm.org/10.1145/334714.334716</span>
-<a name="l00089"></a>00089     <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
-<a name="l00090"></a>00090     <span class="comment">//</span>
-<a name="l00091"></a>00091     <span class="comment">// General rules</span>
-<a name="l00092"></a>00092     <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
-<a name="l00093"></a>00093     <span class="comment">// h(x) = f(x)*g(x):</span>
-<a name="l00094"></a>00094     <span class="comment">//        Dh(x,y) = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
-<a name="l00095"></a>00095     <span class="comment">//</span>
-<a name="l00096"></a>00096     <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
-<a name="l00097"></a>00097     <span class="keyword">static</span> <span class="keyword">inline</span> real Dsn(real x, real y, real sx, real sy) <span class="keywordflow">throw</span>() {
-<a name="l00098"></a>00098       <span class="comment">// sx = x/hyp(x)</span>
-<a name="l00099"></a>00099       real t = x * y;
-<a name="l00100"></a>00100       <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
-<a name="l00101"></a>00101         (x - y != 0 ? (sx - sy) / (x - y) : 1);
-<a name="l00102"></a>00102     }
-<a name="l00103"></a>00103     <span class="comment">// Datanhee(x,y) = atanhee((x-y)/(1-e^2*x*y))/(x-y)</span>
-<a name="l00104"></a>00104     <span class="keyword">inline</span> real Datanhee(real x, real y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105       real t = x - y, d = 1 - _e2 * x * y;
-<a name="l00106"></a>00106       <span class="keywordflow">return</span> t != 0 ? atanhee(t / d) / t : 1 / d;
-<a name="l00107"></a>00107     }
-<a name="l00108"></a>00108     <span class="comment">// DDatanhee(x,y) = (Datanhee(1,y) - Datanhee(1,x))/(y-x)</span>
-<a name="l00109"></a>00109     real DDatanhee(real x, real y) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00110"></a>00110     <span class="keywordtype">void</span> Init(real sphi1, real cphi1, real sphi2, real cphi2, real k1) <span class="keywordflow">throw</span>();
-<a name="l00111"></a>00111     real txif(real tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00112"></a>00112     real tphif(real txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00113"></a>00113   <span class="keyword">public</span>:
-<a name="l00114"></a>00114 <span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment">    /**</span>
-<a name="l00116"></a>00116 <span class="comment">     * Constructor with a single standard parallel.</span>
-<a name="l00117"></a>00117 <span class="comment">     *</span>
-<a name="l00118"></a>00118 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00119"></a>00119 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00120"></a>00120 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00121"></a>00121 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00122"></a>00122 <span class="comment">     * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
-<a name="l00123"></a>00123 <span class="comment">     * @param[in] k0 azimuthal scale on the standard parallel.</span>
-<a name="l00124"></a>00124 <span class="comment">     *</span>
-<a name="l00125"></a>00125 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
-<a name="l00126"></a>00126 <span class="comment">     * is not in the range [-90, 90].</span>
-<a name="l00127"></a>00127 <span class="comment">     **********************************************************************/</span>
-<a name="l00128"></a>00128     <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(real a, real f, real stdlat, real k0);
-<a name="l00129"></a>00129 <span class="comment"></span>
-<a name="l00130"></a>00130 <span class="comment">    /**</span>
-<a name="l00131"></a>00131 <span class="comment">     * Constructor with two standard parallels.</span>
-<a name="l00132"></a>00132 <span class="comment">     *</span>
-<a name="l00133"></a>00133 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00134"></a>00134 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00135"></a>00135 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00136"></a>00136 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00137"></a>00137 <span class="comment">     * @param[in] stdlat1 first standard parallel (degrees).</span>
-<a name="l00138"></a>00138 <span class="comment">     * @param[in] stdlat2 second standard parallel (degrees).</span>
-<a name="l00139"></a>00139 <span class="comment">     * @param[in] k1 azimuthal scale on the standard parallels.</span>
-<a name="l00140"></a>00140 <span class="comment">     *</span>
-<a name="l00141"></a>00141 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
-<a name="l00142"></a>00142 <span class="comment">     * or \e stdlat2 is not in the range [-90, 90].  In addition, an exception</span>
-<a name="l00143"></a>00143 <span class="comment">     * is thrown if \e stdlat1 and \e stdlat2 are opposite poles.</span>
-<a name="l00144"></a>00144 <span class="comment">     **********************************************************************/</span>
-<a name="l00145"></a>00145     <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(real a, real f, real stdlat1, real stdlat2, real k1);
-<a name="l00146"></a>00146 <span class="comment"></span>
-<a name="l00147"></a>00147 <span class="comment">    /**</span>
-<a name="l00148"></a>00148 <span class="comment">     * Constructor with two standard parallels specified by sines and cosines.</span>
-<a name="l00149"></a>00149 <span class="comment">     *</span>
-<a name="l00150"></a>00150 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00151"></a>00151 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00152"></a>00152 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00153"></a>00153 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00154"></a>00154 <span class="comment">     * @param[in] sinlat1 sine of first standard parallel.</span>
-<a name="l00155"></a>00155 <span class="comment">     * @param[in] coslat1 cosine of first standard parallel.</span>
-<a name="l00156"></a>00156 <span class="comment">     * @param[in] sinlat2 sine of second standard parallel.</span>
-<a name="l00157"></a>00157 <span class="comment">     * @param[in] coslat2 cosine of second standard parallel.</span>
-<a name="l00158"></a>00158 <span class="comment">     * @param[in] k1 azimuthal scale on the standard parallels.</span>
-<a name="l00159"></a>00159 <span class="comment">     *</span>
-<a name="l00160"></a>00160 <span class="comment">     * This allows parallels close to the poles to be specified accurately.</span>
-<a name="l00161"></a>00161 <span class="comment">     * This routine computes the latitude of origin and the azimuthal scale at</span>
-<a name="l00162"></a>00162 <span class="comment">     * this latitude.  If \e dlat = abs(\e lat2 - \e lat1) <= 160<sup>o</sup>,</span>
-<a name="l00163"></a>00163 <span class="comment">     * then the error in the latitude of origin is less than</span>
-<a name="l00164"></a>00164 <span class="comment">     * 4.5e-14<sup>o</sup>.</span>
-<a name="l00165"></a>00165 <span class="comment">     **********************************************************************/</span>
-<a name="l00166"></a>00166     <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(real a, real f,
-<a name="l00167"></a>00167                     real sinlat1, real coslat1,
-<a name="l00168"></a>00168                     real sinlat2, real coslat2,
-<a name="l00169"></a>00169                     real k1);
-<a name="l00170"></a>00170 <span class="comment"></span>
-<a name="l00171"></a>00171 <span class="comment">    /**</span>
-<a name="l00172"></a>00172 <span class="comment">     * Set the azimuthal scale for the projection.</span>
-<a name="l00173"></a>00173 <span class="comment">     *</span>
-<a name="l00174"></a>00174 <span class="comment">     * @param[in] lat (degrees).</span>
-<a name="l00175"></a>00175 <span class="comment">     * @param[in] k azimuthal scale at latitude \e lat (default 1).</span>
-<a name="l00176"></a>00176 <span class="comment">     *</span>
-<a name="l00177"></a>00177 <span class="comment">     * This allows a "latitude of conformality" to be specified.  An exception</span>
-<a name="l00178"></a>00178 <span class="comment">     * is thrown if \e k is not positive or if \e lat is not in the range (-90,</span>
-<a name="l00179"></a>00179 <span class="comment">     * 90).</span>
-<a name="l00180"></a>00180 <span class="comment">     **********************************************************************/</span>
-<a name="l00181"></a>00181     <span class="keywordtype">void</span> SetScale(real lat, real k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
-<a name="l00182"></a>00182 <span class="comment"></span>
-<a name="l00183"></a>00183 <span class="comment">    /**</span>
-<a name="l00184"></a>00184 <span class="comment">     * Forward projection, from geographic to Lambert conformal conic.</span>
-<a name="l00185"></a>00185 <span class="comment">     *</span>
-<a name="l00186"></a>00186 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00187"></a>00187 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00188"></a>00188 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00189"></a>00189 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00190"></a>00190 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00191"></a>00191 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00192"></a>00192 <span class="comment">     * @param[out] k azimuthal scale of projection at point; the radial</span>
-<a name="l00193"></a>00193 <span class="comment">     *   scale is the 1/\e k.</span>
-<a name="l00194"></a>00194 <span class="comment">     *</span>
-<a name="l00195"></a>00195 <span class="comment">     * The latitude origin is given by AlbersEqualArea::LatitudeOrigin().  No</span>
-<a name="l00196"></a>00196 <span class="comment">     * false easting or northing is added and \e lat should be in the range</span>
-<a name="l00197"></a>00197 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].  The</span>
-<a name="l00198"></a>00198 <span class="comment">     * values of \e x and \e y returned for points which project to infinity</span>
-<a name="l00199"></a>00199 <span class="comment">     * (i.e., one or both of the poles) will be large but finite.</span>
-<a name="l00200"></a>00200 <span class="comment">     **********************************************************************/</span>
-<a name="l00201"></a>00201     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00202"></a>00202                  real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00203"></a>00203 <span class="comment"></span>
-<a name="l00204"></a>00204 <span class="comment">    /**</span>
-<a name="l00205"></a>00205 <span class="comment">     * Reverse projection, from Lambert conformal conic to geographic.</span>
-<a name="l00206"></a>00206 <span class="comment">     *</span>
-<a name="l00207"></a>00207 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00208"></a>00208 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00209"></a>00209 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00210"></a>00210 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00211"></a>00211 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00212"></a>00212 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00213"></a>00213 <span class="comment">     * @param[out] k azimuthal scale of projection at point; the radial</span>
-<a name="l00214"></a>00214 <span class="comment">     *   scale is the 1/\e k.</span>
-<a name="l00215"></a>00215 <span class="comment">     *</span>
-<a name="l00216"></a>00216 <span class="comment">     * The latitude origin is given by AlbersEqualArea::LatitudeOrigin().  No</span>
-<a name="l00217"></a>00217 <span class="comment">     * false easting or northing is added.  \e lon0 should be in the range</span>
-<a name="l00218"></a>00218 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00219"></a>00219 <span class="comment">     * The value of \e lat returned is in the range [-90,90].  If the input</span>
-<a name="l00220"></a>00220 <span class="comment">     * point is outside the legal projected space the nearest pole is returned.</span>
-<a name="l00221"></a>00221 <span class="comment">     **********************************************************************/</span>
-<a name="l00222"></a>00222     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00223"></a>00223                  real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00224"></a>00224 <span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment">    /**</span>
-<a name="l00226"></a>00226 <span class="comment">     * AlbersEqualArea::Forward without returning the convergence and</span>
-<a name="l00227"></a>00227 <span class="comment">     * scale.</span>
-<a name="l00228"></a>00228 <span class="comment">     **********************************************************************/</span>
-<a name="l00229"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">00229</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00230"></a>00230                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00231"></a>00231       real gamma, k;
-<a name="l00232"></a>00232       Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00233"></a>00233     }
-<a name="l00234"></a>00234 <span class="comment"></span>
-<a name="l00235"></a>00235 <span class="comment">    /**</span>
-<a name="l00236"></a>00236 <span class="comment">     * AlbersEqualArea::Reverse without returning the convergence and</span>
-<a name="l00237"></a>00237 <span class="comment">     * scale.</span>
-<a name="l00238"></a>00238 <span class="comment">     **********************************************************************/</span>
-<a name="l00239"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a871246cba03145512f3f12ceb3e3e3a8">00239</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00240"></a>00240                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00241"></a>00241       real gamma, k;
-<a name="l00242"></a>00242       Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00243"></a>00243     }
-<a name="l00244"></a>00244 <span class="comment"></span>
-<a name="l00245"></a>00245 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00246"></a>00246 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00247"></a>00247 <span class="comment">    ///@{</span>
-<a name="l00248"></a>00248 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00249"></a>00249 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00250"></a>00250 <span class="comment">     *   the value used in the constructor.</span>
-<a name="l00251"></a>00251 <span class="comment">     **********************************************************************/</span>
-<a name="l00252"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">00252</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00253"></a>00253 <span class="comment"></span>
-<a name="l00254"></a>00254 <span class="comment">    /**</span>
-<a name="l00255"></a>00255 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
-<a name="l00256"></a>00256 <span class="comment">     *   the constructor.</span>
-<a name="l00257"></a>00257 <span class="comment">     **********************************************************************/</span>
-<a name="l00258"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">00258</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00259"></a>00259 <span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment">    /**</span>
-<a name="l00261"></a>00261 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00262"></a>00262 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00263"></a>00263 <span class="comment">     **********************************************************************/</span>
-<a name="l00264"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">00264</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00265"></a>00265 <span class="comment"></span>
-<a name="l00266"></a>00266 <span class="comment">    /**</span>
-<a name="l00267"></a>00267 <span class="comment">     * @return latitude of the origin for the projection (degrees).</span>
-<a name="l00268"></a>00268 <span class="comment">     *</span>
-<a name="l00269"></a>00269 <span class="comment">     * This is the latitude of minimum azimuthal scale and equals the \e stdlat</span>
-<a name="l00270"></a>00270 <span class="comment">     * in the 1-parallel constructor and lies between \e stdlat1 and \e stdlat2</span>
-<a name="l00271"></a>00271 <span class="comment">     * in the 2-parallel constructors.</span>
-<a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">00273</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
-<a name="l00274"></a>00274 <span class="comment"></span>
-<a name="l00275"></a>00275 <span class="comment">    /**</span>
-<a name="l00276"></a>00276 <span class="comment">     * @return central scale for the projection.  This is the azimuthal scale</span>
-<a name="l00277"></a>00277 <span class="comment">     *   on the latitude of origin.</span>
+<a name="l00057"></a>00057 <span class="comment">   *</span>
+<a name="l00058"></a>00058 <span class="comment">   * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility</span>
+<a name="l00059"></a>00059 <span class="comment">   * providing access to the functionality of LambertConformalConic and</span>
+<a name="l00060"></a>00060 <span class="comment">   * AlbersEqualArea.</span>
+<a name="l00061"></a>00061 <span class="comment">   **********************************************************************/</span>
+<a name="l00062"></a>00062   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> AlbersEqualArea {
+<a name="l00063"></a>00063   <span class="keyword">private</span>:
+<a name="l00064"></a>00064     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00065"></a>00065     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx;
+<a name="l00066"></a>00066     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _sign, _lat0, _k0;
+<a name="l00067"></a>00067     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0;
+<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> epsx_;
+<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> epsx2_;
+<a name="l00071"></a>00071     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00072"></a>00072     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol0_;
+<a name="l00073"></a>00073     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ahypover_;
+<a name="l00074"></a>00074     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;   <span class="comment">// Newton iterations in Reverse</span>
+<a name="l00075"></a>00075     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit0_ = 20; <span class="comment">// Newton iterations in Init</span>
+<a name="l00076"></a>00076     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hyp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp. [...]
+<a name="l00077"></a>00077     <span class="comment">// atanh(      e   * x)/      e   if f > 0</span>
+<a name="l00078"></a>00078     <span class="comment">// atan (sqrt(-e2) * x)/sqrt(-e2) if f < 0</span>
+<a name="l00079"></a>00079     <span class="comment">// x                              if f = 0</span>
+<a name="l00080"></a>00080     <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> atanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00081"></a>00081       <span class="keywordflow">return</span> _f > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x)/_e :
+<a name="l00082"></a>00082         (_f < 0 ? std::atan(_e * x)/_e : x);
+<a name="l00083"></a>00083     }
+<a name="l00084"></a>00084     <span class="comment">// return atanh(sqrt(x))/sqrt(x) - 1, accurate for small x</span>
+<a name="l00085"></a>00085     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> atanhxm1(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>();
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087     <span class="comment">// Divided differences</span>
+<a name="l00088"></a>00088     <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
+<a name="l00089"></a>00089     <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
+<a name="l00090"></a>00090     <span class="comment">// Symbolic computation of divided differences,</span>
+<a name="l00091"></a>00091     <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
+<a name="l00092"></a>00092     <span class="comment">// http://doi.acm.org/10.1145/334714.334716</span>
+<a name="l00093"></a>00093     <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
+<a name="l00094"></a>00094     <span class="comment">//</span>
+<a name="l00095"></a>00095     <span class="comment">// General rules</span>
+<a name="l00096"></a>00096     <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
+<a name="l00097"></a>00097     <span class="comment">// h(x) = f(x)*g(x):</span>
+<a name="l00098"></a>00098     <span class="comment">//        Dh(x,y) = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
+<a name="l00099"></a>00099     <span class="comment">//</span>
+<a name="l00100"></a>00100     <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
+<a name="l00101"></a>00101     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dsn(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184 [...]
+<a name="l00102"></a>00102       <span class="comment">// sx = x/hyp(x)</span>
+<a name="l00103"></a>00103       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x * y;
+<a name="l00104"></a>00104       <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
+<a name="l00105"></a>00105         (x - y != 0 ? (sx - sy) / (x - y) : 1);
+<a name="l00106"></a>00106     }
+<a name="l00107"></a>00107     <span class="comment">// Datanhee(x,y) = atanhee((x-y)/(1-e^2*x*y))/(x-y)</span>
+<a name="l00108"></a>00108     <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Datanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00109"></a>00109       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y, d = 1 - _e2 * x * y;
+<a name="l00110"></a>00110       <span class="keywordflow">return</span> t != 0 ? atanhee(t / d) / t : 1 / d;
+<a name="l00111"></a>00111     }
+<a name="l00112"></a>00112     <span class="comment">// DDatanhee(x,y) = (Datanhee(1,y) - Datanhee(1,x))/(y-x)</span>
+<a name="l00113"></a>00113     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> DDatanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00114"></a>00114     <span class="keywordtype">void</span> Init(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781 [...]
+<a name="l00115"></a>00115     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00116"></a>00116     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00117"></a>00117   <span class="keyword">public</span>:
+<a name="l00118"></a>00118 <span class="comment"></span>
+<a name="l00119"></a>00119 <span class="comment">    /**</span>
+<a name="l00120"></a>00120 <span class="comment">     * Constructor with a single standard parallel.</span>
+<a name="l00121"></a>00121 <span class="comment">     *</span>
+<a name="l00122"></a>00122 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00123"></a>00123 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00124"></a>00124 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00125"></a>00125 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00126"></a>00126 <span class="comment">     * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
+<a name="l00127"></a>00127 <span class="comment">     * @param[in] k0 azimuthal scale on the standard parallel.</span>
+<a name="l00128"></a>00128 <span class="comment">     *</span>
+<a name="l00129"></a>00129 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
+<a name="l00130"></a>00130 <span class="comment">     * is not in the range [-90, 90].</span>
+<a name="l00131"></a>00131 <span class="comment">     **********************************************************************/</span>
+<a name="l00132"></a>00132     AlbersEqualArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
+<a name="l00133"></a>00133 <span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment">    /**</span>
+<a name="l00135"></a>00135 <span class="comment">     * Constructor with two standard parallels.</span>
+<a name="l00136"></a>00136 <span class="comment">     *</span>
+<a name="l00137"></a>00137 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00138"></a>00138 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00139"></a>00139 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00140"></a>00140 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00141"></a>00141 <span class="comment">     * @param[in] stdlat1 first standard parallel (degrees).</span>
+<a name="l00142"></a>00142 <span class="comment">     * @param[in] stdlat2 second standard parallel (degrees).</span>
+<a name="l00143"></a>00143 <span class="comment">     * @param[in] k1 azimuthal scale on the standard parallels.</span>
+<a name="l00144"></a>00144 <span class="comment">     *</span>
+<a name="l00145"></a>00145 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
+<a name="l00146"></a>00146 <span class="comment">     * or \e stdlat2 is not in the range [-90, 90].  In addition, an exception</span>
+<a name="l00147"></a>00147 <span class="comment">     * is thrown if \e stdlat1 and \e stdlat2 are opposite poles.</span>
+<a name="l00148"></a>00148 <span class="comment">     **********************************************************************/</span>
+<a name="l00149"></a>00149     AlbersEqualArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00150"></a>00150 <span class="comment"></span>
+<a name="l00151"></a>00151 <span class="comment">    /**</span>
+<a name="l00152"></a>00152 <span class="comment">     * Constructor with two standard parallels specified by sines and cosines.</span>
+<a name="l00153"></a>00153 <span class="comment">     *</span>
+<a name="l00154"></a>00154 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00155"></a>00155 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00156"></a>00156 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00157"></a>00157 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00158"></a>00158 <span class="comment">     * @param[in] sinlat1 sine of first standard parallel.</span>
+<a name="l00159"></a>00159 <span class="comment">     * @param[in] coslat1 cosine of first standard parallel.</span>
+<a name="l00160"></a>00160 <span class="comment">     * @param[in] sinlat2 sine of second standard parallel.</span>
+<a name="l00161"></a>00161 <span class="comment">     * @param[in] coslat2 cosine of second standard parallel.</span>
+<a name="l00162"></a>00162 <span class="comment">     * @param[in] k1 azimuthal scale on the standard parallels.</span>
+<a name="l00163"></a>00163 <span class="comment">     *</span>
+<a name="l00164"></a>00164 <span class="comment">     * This allows parallels close to the poles to be specified accurately.</span>
+<a name="l00165"></a>00165 <span class="comment">     * This routine computes the latitude of origin and the azimuthal scale at</span>
+<a name="l00166"></a>00166 <span class="comment">     * this latitude.  If \e dlat = abs(\e lat2 - \e lat1) <= 160<sup>o</sup>,</span>
+<a name="l00167"></a>00167 <span class="comment">     * then the error in the latitude of origin is less than</span>
+<a name="l00168"></a>00168 <span class="comment">     * 4.5e-14<sup>o</sup>.</span>
+<a name="l00169"></a>00169 <span class="comment">     **********************************************************************/</span>
+<a name="l00170"></a>00170     AlbersEqualArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f,
+<a name="l00171"></a>00171                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat1,
+<a name="l00172"></a>00172                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat2,
+<a name="l00173"></a>00173                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00174"></a>00174 <span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment">    /**</span>
+<a name="l00176"></a>00176 <span class="comment">     * Set the azimuthal scale for the projection.</span>
+<a name="l00177"></a>00177 <span class="comment">     *</span>
+<a name="l00178"></a>00178 <span class="comment">     * @param[in] lat (degrees).</span>
+<a name="l00179"></a>00179 <span class="comment">     * @param[in] k azimuthal scale at latitude \e lat (default 1).</span>
+<a name="l00180"></a>00180 <span class="comment">     *</span>
+<a name="l00181"></a>00181 <span class="comment">     * This allows a "latitude of conformality" to be specified.  An exception</span>
+<a name="l00182"></a>00182 <span class="comment">     * is thrown if \e k is not positive or if \e lat is not in the range (-90,</span>
+<a name="l00183"></a>00183 <span class="comment">     * 90).</span>
+<a name="l00184"></a>00184 <span class="comment">     **********************************************************************/</span>
+<a name="l00185"></a>00185     <span class="keywordtype">void</span> SetScale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
+<a name="l00186"></a>00186 <span class="comment"></span>
+<a name="l00187"></a>00187 <span class="comment">    /**</span>
+<a name="l00188"></a>00188 <span class="comment">     * Forward projection, from geographic to Lambert conformal conic.</span>
+<a name="l00189"></a>00189 <span class="comment">     *</span>
+<a name="l00190"></a>00190 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00191"></a>00191 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00192"></a>00192 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00193"></a>00193 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00194"></a>00194 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00195"></a>00195 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00196"></a>00196 <span class="comment">     * @param[out] k azimuthal scale of projection at point; the radial</span>
+<a name="l00197"></a>00197 <span class="comment">     *   scale is the 1/\e k.</span>
+<a name="l00198"></a>00198 <span class="comment">     *</span>
+<a name="l00199"></a>00199 <span class="comment">     * The latitude origin is given by AlbersEqualArea::LatitudeOrigin().  No</span>
+<a name="l00200"></a>00200 <span class="comment">     * false easting or northing is added and \e lat should be in the range</span>
+<a name="l00201"></a>00201 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].  The</span>
+<a name="l00202"></a>00202 <span class="comment">     * values of \e x and \e y returned for points which project to infinity</span>
+<a name="l00203"></a>00203 <span class="comment">     * (i.e., one or both of the poles) will be large but finite.</span>
+<a name="l00204"></a>00204 <span class="comment">     **********************************************************************/</span>
+<a name="l00205"></a>00205     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00206"></a>00206                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment">    /**</span>
+<a name="l00209"></a>00209 <span class="comment">     * Reverse projection, from Lambert conformal conic to geographic.</span>
+<a name="l00210"></a>00210 <span class="comment">     *</span>
+<a name="l00211"></a>00211 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00212"></a>00212 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00213"></a>00213 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00214"></a>00214 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00215"></a>00215 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00216"></a>00216 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00217"></a>00217 <span class="comment">     * @param[out] k azimuthal scale of projection at point; the radial</span>
+<a name="l00218"></a>00218 <span class="comment">     *   scale is the 1/\e k.</span>
+<a name="l00219"></a>00219 <span class="comment">     *</span>
+<a name="l00220"></a>00220 <span class="comment">     * The latitude origin is given by AlbersEqualArea::LatitudeOrigin().  No</span>
+<a name="l00221"></a>00221 <span class="comment">     * false easting or northing is added.  \e lon0 should be in the range</span>
+<a name="l00222"></a>00222 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00223"></a>00223 <span class="comment">     * The value of \e lat returned is in the range [-90,90].  If the input</span>
+<a name="l00224"></a>00224 <span class="comment">     * point is outside the legal projected space the nearest pole is returned.</span>
+<a name="l00225"></a>00225 <span class="comment">     **********************************************************************/</span>
+<a name="l00226"></a>00226     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00227"></a>00227                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00228"></a>00228 <span class="comment"></span>
+<a name="l00229"></a>00229 <span class="comment">    /**</span>
+<a name="l00230"></a>00230 <span class="comment">     * AlbersEqualArea::Forward without returning the convergence and</span>
+<a name="l00231"></a>00231 <span class="comment">     * scale.</span>
+<a name="l00232"></a>00232 <span class="comment">     **********************************************************************/</span>
+<a name="l00233"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">00233</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00234"></a>00234                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00235"></a>00235       real gamma, k;
+<a name="l00236"></a>00236       Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00237"></a>00237     }
+<a name="l00238"></a>00238 <span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">    /**</span>
+<a name="l00240"></a>00240 <span class="comment">     * AlbersEqualArea::Reverse without returning the convergence and</span>
+<a name="l00241"></a>00241 <span class="comment">     * scale.</span>
+<a name="l00242"></a>00242 <span class="comment">     **********************************************************************/</span>
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a871246cba03145512f3f12ceb3e3e3a8">00243</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00244"></a>00244                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00245"></a>00245       real gamma, k;
+<a name="l00246"></a>00246       Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00247"></a>00247     }
+<a name="l00248"></a>00248 <span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00250"></a>00250 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment">    ///@{</span>
+<a name="l00252"></a>00252 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00253"></a>00253 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00254"></a>00254 <span class="comment">     *   the value used in the constructor.</span>
+<a name="l00255"></a>00255 <span class="comment">     **********************************************************************/</span>
+<a name="l00256"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">00256</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment">    /**</span>
+<a name="l00259"></a>00259 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
+<a name="l00260"></a>00260 <span class="comment">     *   the constructor.</span>
+<a name="l00261"></a>00261 <span class="comment">     **********************************************************************/</span>
+<a name="l00262"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">00262</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00263"></a>00263 <span class="comment"></span>
+<a name="l00264"></a>00264 <span class="comment">    /// \cond SKIP</span>
+<a name="l00265"></a>00265 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00266"></a>00266 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00267"></a>00267 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00268"></a>00268 <span class="comment">     **********************************************************************/</span>
+<a name="l00269"></a>00269     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00270"></a>00270 <span class="comment">    /// \endcond</span>
+<a name="l00271"></a>00271 <span class="comment"></span><span class="comment"></span>
+<a name="l00272"></a>00272 <span class="comment">    /**</span>
+<a name="l00273"></a>00273 <span class="comment">     * @return latitude of the origin for the projection (degrees).</span>
+<a name="l00274"></a>00274 <span class="comment">     *</span>
+<a name="l00275"></a>00275 <span class="comment">     * This is the latitude of minimum azimuthal scale and equals the \e stdlat</span>
+<a name="l00276"></a>00276 <span class="comment">     * in the 1-parallel constructor and lies between \e stdlat1 and \e stdlat2</span>
+<a name="l00277"></a>00277 <span class="comment">     * in the 2-parallel constructors.</span>
 <a name="l00278"></a>00278 <span class="comment">     **********************************************************************/</span>
-<a name="l00279"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">00279</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00280"></a>00280 <span class="comment">    ///@}</span>
-<a name="l00281"></a>00281 <span class="comment"></span><span class="comment"></span>
-<a name="l00282"></a>00282 <span class="comment">    /**</span>
-<a name="l00283"></a>00283 <span class="comment">     * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
-<a name="l00284"></a>00284 <span class="comment">     * stdlat = 0, and \e k0 = 1.  This degenerates to the cylindrical equal</span>
-<a name="l00285"></a>00285 <span class="comment">     * area projection.</span>
-<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">00287</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">CylindricalEqualArea</a>;
-<a name="l00288"></a>00288 <span class="comment"></span>
-<a name="l00289"></a>00289 <span class="comment">    /**</span>
-<a name="l00290"></a>00290 <span class="comment">     * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
-<a name="l00291"></a>00291 <span class="comment">     * stdlat = 90<sup>o</sup>, and \e k0 = 1.  This degenerates to the</span>
-<a name="l00292"></a>00292 <span class="comment">     * Lambert azimuthal equal area projection.</span>
-<a name="l00293"></a>00293 <span class="comment">     **********************************************************************/</span>
-<a name="l00294"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">00294</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">AzimuthalEqualAreaNorth</a>;
-<a name="l00295"></a>00295 <span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment">    /**</span>
-<a name="l00297"></a>00297 <span class="comment">     * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
-<a name="l00298"></a>00298 <span class="comment">     * stdlat = -90<sup>o</sup>, and \e k0 = 1.  This degenerates to the</span>
-<a name="l00299"></a>00299 <span class="comment">     * Lambert azimuthal equal area projection.</span>
-<a name="l00300"></a>00300 <span class="comment">     **********************************************************************/</span>
-<a name="l00301"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">00301</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">AzimuthalEqualAreaSouth</a>;
-<a name="l00302"></a>00302   };
-<a name="l00303"></a>00303 
-<a name="l00304"></a>00304 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00305"></a>00305 
-<a name="l00306"></a>00306 <span class="preprocessor">#endif  // GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</span>
+<a name="l00279"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">00279</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
+<a name="l00280"></a>00280 <span class="comment"></span>
+<a name="l00281"></a>00281 <span class="comment">    /**</span>
+<a name="l00282"></a>00282 <span class="comment">     * @return central scale for the projection.  This is the azimuthal scale</span>
+<a name="l00283"></a>00283 <span class="comment">     *   on the latitude of origin.</span>
+<a name="l00284"></a>00284 <span class="comment">     **********************************************************************/</span>
+<a name="l00285"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">00285</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment" [...]
+<a name="l00286"></a>00286 <span class="comment">    ///@}</span>
+<a name="l00287"></a>00287 <span class="comment"></span><span class="comment"></span>
+<a name="l00288"></a>00288 <span class="comment">    /**</span>
+<a name="l00289"></a>00289 <span class="comment">     * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
+<a name="l00290"></a>00290 <span class="comment">     * stdlat = 0, and \e k0 = 1.  This degenerates to the cylindrical equal</span>
+<a name="l00291"></a>00291 <span class="comment">     * area projection.</span>
+<a name="l00292"></a>00292 <span class="comment">     **********************************************************************/</span>
+<a name="l00293"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">00293</a>     <span class="keyword">static</span> <span class="keyword">const</span> AlbersEqualArea <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">CylindricalEqualArea</a>;
+<a name="l00294"></a>00294 <span class="comment"></span>
+<a name="l00295"></a>00295 <span class="comment">    /**</span>
+<a name="l00296"></a>00296 <span class="comment">     * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
+<a name="l00297"></a>00297 <span class="comment">     * stdlat = 90<sup>o</sup>, and \e k0 = 1.  This degenerates to the</span>
+<a name="l00298"></a>00298 <span class="comment">     * Lambert azimuthal equal area projection.</span>
+<a name="l00299"></a>00299 <span class="comment">     **********************************************************************/</span>
+<a name="l00300"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">00300</a>     <span class="keyword">static</span> <span class="keyword">const</span> AlbersEqualArea <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">AzimuthalEqualAreaNorth</a>;
+<a name="l00301"></a>00301 <span class="comment"></span>
+<a name="l00302"></a>00302 <span class="comment">    /**</span>
+<a name="l00303"></a>00303 <span class="comment">     * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
+<a name="l00304"></a>00304 <span class="comment">     * stdlat = -90<sup>o</sup>, and \e k0 = 1.  This degenerates to the</span>
+<a name="l00305"></a>00305 <span class="comment">     * Lambert azimuthal equal area projection.</span>
+<a name="l00306"></a>00306 <span class="comment">     **********************************************************************/</span>
+<a name="l00307"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">00307</a>     <span class="keyword">static</span> <span class="keyword">const</span> AlbersEqualArea <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">AzimuthalEqualAreaSouth</a>;
+<a name="l00308"></a>00308   };
+<a name="l00309"></a>00309 
+<a name="l00310"></a>00310 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00311"></a>00311 
+<a name="l00312"></a>00312 <span class="preprocessor">#endif  // GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AzimuthalEquidistant_8cpp.html b/doc/html/AzimuthalEquidistant_8cpp.html
index ae08a4d..94cb17b 100644
--- a/doc/html/AzimuthalEquidistant_8cpp.html
+++ b/doc/html/AzimuthalEquidistant_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AzimuthalEquidistant.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP</a>   "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP</a>   "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="AzimuthalEquidistant_8cpp_source.html">AzimuthalEquidistant.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP   "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP   "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AzimuthalEquidistant_8cpp_source.html b/doc/html/AzimuthalEquidistant_8cpp_source.html
index 6e9c21b..5008193 100644
--- a/doc/html/AzimuthalEquidistant_8cpp_source.html
+++ b/doc/html/AzimuthalEquidistant_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AzimuthalEquidistant.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file AzimuthalEquidistant.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::AzimuthalEquidistant class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="AzimuthalEquidistant_8hpp.html" title="Header for GeographicLib::AzimuthalEquidistant class.">GeographicLib/AzimuthalEquidistant.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</a>)
@@ -68,7 +83,7 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> AzimuthalEquidistant::eps_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AzimuthalEquidistant::eps_ =
 <a name="l00023"></a>00023     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(numeric_limits<real>::min());
 <a name="l00024"></a>00024 
 <a name="l00025"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">00025</a>   <span class="keywordtype">void</span> AzimuthalEquidistant::Forward(real lat0, real lon0, real lat, real lon,
@@ -76,7 +91,7 @@
 <a name="l00027"></a>00027     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00028"></a>00028     real sig, s, azi0, m;
 <a name="l00029"></a>00029     sig = _earth.Inverse(lat0, lon0, lat, lon, s, azi0, azi, m);
-<a name="l00030"></a>00030     azi0 *= Math::degree<real>();
+<a name="l00030"></a>00030     azi0 *= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00031"></a>00031     x = s * sin(azi0);
 <a name="l00032"></a>00032     y = s * cos(azi0);
 <a name="l00033"></a>00033     rk = !(sig <= eps_) ? m / s : 1;
@@ -86,7 +101,7 @@
 <a name="l00037"></a>00037                                      real& lat, real& lon, real& azi, real& rk)
 <a name="l00038"></a>00038     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00039"></a>00039     real
-<a name="l00040"></a>00040       azi0 = atan2(x, y) / Math::degree<real>(),
+<a name="l00040"></a>00040       azi0 = atan2(x, y) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00041"></a>00041       s = Math::hypot(x, y);
 <a name="l00042"></a>00042     real sig, m;
 <a name="l00043"></a>00043     sig = _earth.Direct(lat0, lon0, azi0, s, lat, lon, azi, m);
@@ -96,8 +111,13 @@
 <a name="l00047"></a>00047 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AzimuthalEquidistant_8hpp.html b/doc/html/AzimuthalEquidistant_8hpp.html
index 22445f9..f7aba82 100644
--- a/doc/html/AzimuthalEquidistant_8hpp.html
+++ b/doc/html/AzimuthalEquidistant_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AzimuthalEquidistant.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</a>   "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</a>   "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP   "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP   "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/AzimuthalEquidistant_8hpp_source.html b/doc/html/AzimuthalEquidistant_8hpp_source.html
index c2b829e..16b6fc8 100644
--- a/doc/html/AzimuthalEquidistant_8hpp_source.html
+++ b/doc/html/AzimuthalEquidistant_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: AzimuthalEquidistant.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file AzimuthalEquidistant.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::AzimuthalEquidistant class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP)</span>
 <a name="l00011"></a><a class="code" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -84,118 +99,129 @@
 <a name="l00034"></a>00034 <span class="comment">   *</span>
 <a name="l00035"></a>00035 <span class="comment">   * Example of use:</span>
 <a name="l00036"></a>00036 <span class="comment">   * \include example-AzimuthalEquidistant.cpp</span>
-<a name="l00037"></a>00037 <span class="comment">   **********************************************************************/</span>
-<a name="l00038"></a>00038 
-<a name="l00039"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html">00039</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> {
-<a name="l00040"></a>00040   <span class="keyword">private</span>:
-<a name="l00041"></a>00041     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00042"></a>00042     <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00043"></a>00043     <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00044"></a>00044   <span class="keyword">public</span>:
-<a name="l00045"></a>00045 <span class="comment"></span>
-<a name="l00046"></a>00046 <span class="comment">    /**</span>
-<a name="l00047"></a>00047 <span class="comment">     * Constructor for AzimuthalEquidistant.</span>
-<a name="l00048"></a>00048 <span class="comment">     *</span>
-<a name="l00049"></a>00049 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00050"></a>00050 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
-<a name="l00051"></a>00051 <span class="comment">     **********************************************************************/</span>
-<a name="l00052"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a125571cdeed68d10192611cc12e221ce">00052</a>     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="clas [...]
-<a name="l00053"></a>00053       throw() : _earth(earth) {}
-<a name="l00054"></a>00054 <span class="comment"></span>
-<a name="l00055"></a>00055 <span class="comment">    /**</span>
-<a name="l00056"></a>00056 <span class="comment">     * Forward projection, from geographic to azimuthal equidistant.</span>
-<a name="l00057"></a>00057 <span class="comment">     *</span>
-<a name="l00058"></a>00058 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00059"></a>00059 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00060"></a>00060 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00061"></a>00061 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00062"></a>00062 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00063"></a>00063 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00064"></a>00064 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00065"></a>00065 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00066"></a>00066 <span class="comment">     *</span>
-<a name="l00067"></a>00067 <span class="comment">     * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
-<a name="l00068"></a>00068 <span class="comment">     * lon should be in the range [-180, 360].  The scale of the projection is</span>
-<a name="l00069"></a>00069 <span class="comment">     * 1 in the "radial" direction, \e azi clockwise from true north, and is</span>
-<a name="l00070"></a>00070 <span class="comment">     * 1/\e rk in the direction perpendicular to this.  A call to Forward</span>
-<a name="l00071"></a>00071 <span class="comment">     * followed by a call to Reverse will return the original (\e lat, \e lon)</span>
-<a name="l00072"></a>00072 <span class="comment">     * (to within roundoff).</span>
-<a name="l00073"></a>00073 <span class="comment">     **********************************************************************/</span>
-<a name="l00074"></a>00074     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
-<a name="l00075"></a>00075                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00076"></a>00076 <span class="comment"></span>
-<a name="l00077"></a>00077 <span class="comment">    /**</span>
-<a name="l00078"></a>00078 <span class="comment">     * Reverse projection, from azimuthal equidistant to geographic.</span>
-<a name="l00079"></a>00079 <span class="comment">     *</span>
-<a name="l00080"></a>00080 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00081"></a>00081 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00082"></a>00082 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00083"></a>00083 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00084"></a>00084 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00085"></a>00085 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00086"></a>00086 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00087"></a>00087 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00088"></a>00088 <span class="comment">     *</span>
-<a name="l00089"></a>00089 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00090"></a>00090 <span class="comment">     * range [-180, 360].  \e lat will be in the range [-90, 90] and \e lon</span>
-<a name="l00091"></a>00091 <span class="comment">     * will be in the range [-180, 180).  The scale of the projection is 1 in</span>
-<a name="l00092"></a>00092 <span class="comment">     * the "radial" direction, \e azi clockwise from true north, and is 1/\e rk</span>
-<a name="l00093"></a>00093 <span class="comment">     * in the direction perpendicular to this.  A call to Reverse followed by a</span>
-<a name="l00094"></a>00094 <span class="comment">     * call to Forward will return the original (\e x, \e y) (to roundoff) only</span>
-<a name="l00095"></a>00095 <span class="comment">     * if the geodesic to (\e x, \e y) is a shortest path.</span>
-<a name="l00096"></a>00096 <span class="comment">     **********************************************************************/</span>
-<a name="l00097"></a>00097     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
-<a name="l00098"></a>00098                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00099"></a>00099 <span class="comment"></span>
-<a name="l00100"></a>00100 <span class="comment">    /**</span>
-<a name="l00101"></a>00101 <span class="comment">     * AzimuthalEquidistant::Forward without returning the azimuth and scale.</span>
-<a name="l00102"></a>00102 <span class="comment">     **********************************************************************/</span>
-<a name="l00103"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a950431c3d269fb82e9410f332c401786">00103</a>     <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
-<a name="l00104"></a>00104                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105       real azi, rk;
-<a name="l00106"></a>00106       Forward(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00107"></a>00107     }
-<a name="l00108"></a>00108 <span class="comment"></span>
-<a name="l00109"></a>00109 <span class="comment">    /**</span>
-<a name="l00110"></a>00110 <span class="comment">     * AzimuthalEquidistant::Reverse without returning the azimuth and scale.</span>
-<a name="l00111"></a>00111 <span class="comment">     **********************************************************************/</span>
-<a name="l00112"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a6b86b19f2e1c773e028e386a0f5e00e0">00112</a>     <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
-<a name="l00113"></a>00113                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00114"></a>00114       real azi, rk;
-<a name="l00115"></a>00115       Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00116"></a>00116     }
-<a name="l00117"></a>00117 <span class="comment"></span>
-<a name="l00118"></a>00118 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00119"></a>00119 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00120"></a>00120 <span class="comment">    ///@{</span>
-<a name="l00121"></a>00121 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00122"></a>00122 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00123"></a>00123 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00124"></a>00124 <span class="comment">     **********************************************************************/</span>
-<a name="l00125"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">00125</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00126"></a>00126 <span class="comment"></span>
-<a name="l00127"></a>00127 <span class="comment">    /**</span>
-<a name="l00128"></a>00128 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00129"></a>00129 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
-<a name="l00130"></a>00130 <span class="comment">     **********************************************************************/</span>
-<a name="l00131"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">00131</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00132"></a>00132 <span class="comment"></span>
-<a name="l00133"></a>00133 <span class="comment">    /**</span>
-<a name="l00134"></a>00134 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00135"></a>00135 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00136"></a>00136 <span class="comment">     **********************************************************************/</span>
-<a name="l00137"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">00137</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00138"></a>00138     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00139"></a>00139 <span class="comment">    ///@}</span>
-<a name="l00140"></a>00140 <span class="comment"></span>  };
-<a name="l00141"></a>00141 
-<a name="l00142"></a>00142 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00143"></a>00143 
-<a name="l00144"></a>00144 <span class="preprocessor">#endif  // GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</span>
+<a name="l00037"></a>00037 <span class="comment">   *</span>
+<a name="l00038"></a>00038 <span class="comment">   * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility</span>
+<a name="l00039"></a>00039 <span class="comment">   * providing access to the functionality of AzimuthalEquidistant, Gnomonic,</span>
+<a name="l00040"></a>00040 <span class="comment">   * and CassiniSoldner.</span>
+<a name="l00041"></a>00041 <span class="comment">   **********************************************************************/</span>
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> AzimuthalEquidistant {
+<a name="l00044"></a>00044   <span class="keyword">private</span>:
+<a name="l00045"></a>00045     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00046"></a>00046     Geodesic _earth;
+<a name="l00047"></a>00047     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00048"></a>00048   <span class="keyword">public</span>:
+<a name="l00049"></a>00049 <span class="comment"></span>
+<a name="l00050"></a>00050 <span class="comment">    /**</span>
+<a name="l00051"></a>00051 <span class="comment">     * Constructor for AzimuthalEquidistant.</span>
+<a name="l00052"></a>00052 <span class="comment">     *</span>
+<a name="l00053"></a>00053 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00054"></a>00054 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
+<a name="l00055"></a>00055 <span class="comment">     **********************************************************************/</span>
+<a name="l00056"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a125571cdeed68d10192611cc12e221ce">00056</a>     <span class="keyword">explicit</span> AzimuthalEquidistant(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>)
+<a name="l00057"></a>00057       throw() : _earth(earth) {}
+<a name="l00058"></a>00058 <span class="comment"></span>
+<a name="l00059"></a>00059 <span class="comment">    /**</span>
+<a name="l00060"></a>00060 <span class="comment">     * Forward projection, from geographic to azimuthal equidistant.</span>
+<a name="l00061"></a>00061 <span class="comment">     *</span>
+<a name="l00062"></a>00062 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00063"></a>00063 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00064"></a>00064 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00065"></a>00065 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00066"></a>00066 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00067"></a>00067 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00068"></a>00068 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00069"></a>00069 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00070"></a>00070 <span class="comment">     *</span>
+<a name="l00071"></a>00071 <span class="comment">     * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
+<a name="l00072"></a>00072 <span class="comment">     * lon should be in the range [-180, 360].  The scale of the projection is</span>
+<a name="l00073"></a>00073 <span class="comment">     * 1 in the "radial" direction, \e azi clockwise from true north, and is</span>
+<a name="l00074"></a>00074 <span class="comment">     * 1/\e rk in the direction perpendicular to this.  A call to Forward</span>
+<a name="l00075"></a>00075 <span class="comment">     * followed by a call to Reverse will return the original (\e lat, \e lon)</span>
+<a name="l00076"></a>00076 <span class="comment">     * (to within roundoff).</span>
+<a name="l00077"></a>00077 <span class="comment">     **********************************************************************/</span>
+<a name="l00078"></a>00078     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00079"></a>00079                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment">    /**</span>
+<a name="l00082"></a>00082 <span class="comment">     * Reverse projection, from azimuthal equidistant to geographic.</span>
+<a name="l00083"></a>00083 <span class="comment">     *</span>
+<a name="l00084"></a>00084 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00085"></a>00085 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00086"></a>00086 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00087"></a>00087 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00088"></a>00088 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00089"></a>00089 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00090"></a>00090 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00091"></a>00091 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00092"></a>00092 <span class="comment">     *</span>
+<a name="l00093"></a>00093 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00094"></a>00094 <span class="comment">     * range [-180, 360].  \e lat will be in the range [-90, 90] and \e lon</span>
+<a name="l00095"></a>00095 <span class="comment">     * will be in the range [-180, 180).  The scale of the projection is 1 in</span>
+<a name="l00096"></a>00096 <span class="comment">     * the "radial" direction, \e azi clockwise from true north, and is 1/\e rk</span>
+<a name="l00097"></a>00097 <span class="comment">     * in the direction perpendicular to this.  A call to Reverse followed by a</span>
+<a name="l00098"></a>00098 <span class="comment">     * call to Forward will return the original (\e x, \e y) (to roundoff) only</span>
+<a name="l00099"></a>00099 <span class="comment">     * if the geodesic to (\e x, \e y) is a shortest path.</span>
+<a name="l00100"></a>00100 <span class="comment">     **********************************************************************/</span>
+<a name="l00101"></a>00101     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00102"></a>00102                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="comment">    /**</span>
+<a name="l00105"></a>00105 <span class="comment">     * AzimuthalEquidistant::Forward without returning the azimuth and scale.</span>
+<a name="l00106"></a>00106 <span class="comment">     **********************************************************************/</span>
+<a name="l00107"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a950431c3d269fb82e9410f332c401786">00107</a>     <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
+<a name="l00108"></a>00108                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00109"></a>00109       real azi, rk;
+<a name="l00110"></a>00110       Forward(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00111"></a>00111     }
+<a name="l00112"></a>00112 <span class="comment"></span>
+<a name="l00113"></a>00113 <span class="comment">    /**</span>
+<a name="l00114"></a>00114 <span class="comment">     * AzimuthalEquidistant::Reverse without returning the azimuth and scale.</span>
+<a name="l00115"></a>00115 <span class="comment">     **********************************************************************/</span>
+<a name="l00116"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a6b86b19f2e1c773e028e386a0f5e00e0">00116</a>     <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
+<a name="l00117"></a>00117                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00118"></a>00118       real azi, rk;
+<a name="l00119"></a>00119       Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00120"></a>00120     }
+<a name="l00121"></a>00121 <span class="comment"></span>
+<a name="l00122"></a>00122 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00123"></a>00123 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00124"></a>00124 <span class="comment">    ///@{</span>
+<a name="l00125"></a>00125 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00126"></a>00126 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00127"></a>00127 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00128"></a>00128 <span class="comment">     **********************************************************************/</span>
+<a name="l00129"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">00129</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00130"></a>00130 <span class="comment"></span>
+<a name="l00131"></a>00131 <span class="comment">    /**</span>
+<a name="l00132"></a>00132 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00133"></a>00133 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
+<a name="l00134"></a>00134 <span class="comment">     **********************************************************************/</span>
+<a name="l00135"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">00135</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening() [...]
+<a name="l00136"></a>00136 <span class="comment">    ///@}</span>
+<a name="l00137"></a>00137 <span class="comment"></span><span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment">    /// \cond SKIP</span>
+<a name="l00139"></a>00139 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00140"></a>00140 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00141"></a>00141 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00142"></a>00142 <span class="comment">     **********************************************************************/</span>
+<a name="l00143"></a>00143     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00144"></a>00144     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment">    /// \endcond</span>
+<a name="l00146"></a>00146 <span class="comment"></span>  };
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150 <span class="preprocessor">#endif  // GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CartConvert.1.html b/doc/html/CartConvert.1.html
index 6670d9f..a10e55c 100644
--- a/doc/html/CartConvert.1.html
+++ b/doc/html/CartConvert.1.html
@@ -44,8 +44,10 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>CartConvert</strong> [ <strong>-r</strong> ] [ <strong>-l</strong> <em>lat0</em> <em>lon0</em> <em>h0</em> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -87,6 +89,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 1/<em>f</em>.)  By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
 <em>f</em> = 1/298.257223563.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -112,8 +123,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/doc/html/CartConvert_8cpp.html b/doc/html/CartConvert_8cpp.html
index 98ae0d1..e258d5e 100644
--- a/doc/html/CartConvert_8cpp.html
+++ b/doc/html/CartConvert_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CartConvert.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for geodetic to cartesian coordinate conversions. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o CartConvert \ <a class="el" href="CartConvert_8cpp.html" title="Command line utility for geodetic to cartesian coordinate conversions.">CartConvert.cpp</a> \ ../src/DMS.cpp \ ../src/Geocentric.cpp \ ../src/LocalCartesian.cpp</p>
 <p>See the <a href="CartConvert.1.html">man page</a> for usage information. </p>
 
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="CartConvert_8cpp_source.html#l00032">32</a> of file <a class="el" href="CartConvert_8cpp_source.html">CartConvert.cpp</a>.</p>
 
-<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="Geocentric_8hpp_source.html#l00131">GeographicLib::Geocentric::Forward()</a>, <a class="el" href="LocalCartesian_8hpp_source.html#l00101">GeographicLib::LocalCartesian::Forward()</a>, <a class="el" href="Geocentric_8hpp_source.html#l00192">GeographicLib::Geocentric::Reverse()</a>, and <a class="el" href="LocalCartesian_8hpp_source.html#l00153">GeographicLib::LocalCar [...]
+<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="LocalCartesian_8hpp_source.html#l00156">GeographicLib::LocalCartesian::Reverse()</a>, <a class="el" href="Geocentric_8hpp_source.html#l00195">GeographicLib::Geocentric::Reverse()</a>, <a class="el" href="LocalCartesian_8hpp_source.html#l00104">GeographicLib::LocalCartesian::Forward()</a>, and <a class="el" href="Geocentric_8hpp_source.html#l00134">GeographicLib::Geoc [...]
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CartConvert_8cpp_source.html b/doc/html/CartConvert_8cpp_source.html
index 016ec22..9669dd3 100644
--- a/doc/html/CartConvert_8cpp_source.html
+++ b/doc/html/CartConvert_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CartConvert.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file CartConvert.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geodetic to cartesian coordinate conversions</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -81,159 +96,183 @@
 <a name="l00032"></a><a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00032</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00033"></a>00033   <span class="keywordflow">try</span> {
 <a name="l00034"></a>00034     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00035"></a>00035     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00035"></a>00035     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00036"></a>00036     <span class="keywordtype">bool</span> localcartesian = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
 <a name="l00037"></a>00037     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00038"></a>00038       a = Constants::WGS84_a<real>(),
+<a name="l00038"></a>00038       a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
 <a name="l00039"></a>00039       f = Constants::WGS84_f<real>();
 <a name="l00040"></a>00040     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0 = 0, lon0 = 0, h0 = 0;
-<a name="l00041"></a>00041     std::string istring, ifile, ofile;
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00044"></a>00044       std::string arg(argv[m]);
-<a name="l00045"></a>00045       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00046"></a>00046         reverse = <span class="keyword">true</span>;
-<a name="l00047"></a>00047       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00048"></a>00048         localcartesian = <span class="keyword">true</span>;
-<a name="l00049"></a>00049         <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00050"></a>00050         <span class="keywordflow">try</span> {
-<a name="l00051"></a>00051           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00052"></a>00052                             lat0, lon0);
-<a name="l00053"></a>00053           h0 = Utility::num<real>(std::string(argv[m + 3]));
-<a name="l00054"></a>00054         }
-<a name="l00055"></a>00055         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00056"></a>00056           std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00057"></a>00057           <span class="keywordflow">return</span> 1;
-<a name="l00058"></a>00058         }
-<a name="l00059"></a>00059         m += 3;
-<a name="l00060"></a>00060       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00061"></a>00061         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00062"></a>00062         <span class="keywordflow">try</span> {
-<a name="l00063"></a>00063           a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00064"></a>00064           f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00065"></a>00065         }
-<a name="l00066"></a>00066         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00067"></a>00067           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00068"></a>00068           <span class="keywordflow">return</span> 1;
-<a name="l00069"></a>00069         }
-<a name="l00070"></a>00070         m += 2;
-<a name="l00071"></a>00071       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00072"></a>00072         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00073"></a>00073         istring = argv[m];
-<a name="l00074"></a>00074       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00075"></a>00075         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00076"></a>00076         ifile = argv[m];
-<a name="l00077"></a>00077       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00078"></a>00078         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00079"></a>00079         ofile = argv[m];
-<a name="l00080"></a>00080       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00081"></a>00081         std::cout
-<a name="l00082"></a>00082           << argv[0]
-<a name="l00083"></a>00083           << <span class="stringliteral">": $Id: 990e4bdb8e7edc5c66bca635c284b696aa882956 $\n"</span>
-<a name="l00084"></a>00084           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085         <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086       } <span class="keywordflow">else</span>
-<a name="l00087"></a>00087         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00088"></a>00088     }
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00091"></a>00091       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00092"></a>00092       <span class="keywordflow">return</span> 1;
-<a name="l00093"></a>00093     }
-<a name="l00094"></a>00094     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00095"></a>00095     std::ifstream infile;
-<a name="l00096"></a>00096     std::istringstream instring;
-<a name="l00097"></a>00097     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00098"></a>00098       infile.open(ifile.c_str());
-<a name="l00099"></a>00099       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00100"></a>00100         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00101"></a>00101         <span class="keywordflow">return</span> 1;
-<a name="l00102"></a>00102       }
-<a name="l00103"></a>00103     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00104"></a>00104       std::string::size_type m = 0;
-<a name="l00105"></a>00105       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00106"></a>00106         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00107"></a>00107         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00108"></a>00108           <span class="keywordflow">break</span>;
-<a name="l00109"></a>00109         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00110"></a>00110       }
-<a name="l00111"></a>00111       instring.str(istring);
-<a name="l00112"></a>00112     }
-<a name="l00113"></a>00113     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00114"></a>00114       (!istring.empty() ? &instring : &std::cin);
-<a name="l00115"></a>00115 
-<a name="l00116"></a>00116     std::ofstream outfile;
-<a name="l00117"></a>00117     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00118"></a>00118     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00119"></a>00119       outfile.open(ofile.c_str());
-<a name="l00120"></a>00120       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00121"></a>00121         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00122"></a>00122         <span class="keywordflow">return</span> 1;
-<a name="l00123"></a>00123       }
-<a name="l00124"></a>00124     }
-<a name="l00125"></a>00125     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00041"></a>00041     std::string istring, ifile, ofile, cdelim;
+<a name="l00042"></a>00042     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00045"></a>00045       std::string arg(argv[m]);
+<a name="l00046"></a>00046       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00047"></a>00047         reverse = <span class="keyword">true</span>;
+<a name="l00048"></a>00048       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00049"></a>00049         localcartesian = <span class="keyword">true</span>;
+<a name="l00050"></a>00050         <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00051"></a>00051         <span class="keywordflow">try</span> {
+<a name="l00052"></a>00052           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00053"></a>00053                             lat0, lon0);
+<a name="l00054"></a>00054           h0 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 3]));
+<a name="l00055"></a>00055         }
+<a name="l00056"></a>00056         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00057"></a>00057           std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00058"></a>00058           <span class="keywordflow">return</span> 1;
+<a name="l00059"></a>00059         }
+<a name="l00060"></a>00060         m += 3;
+<a name="l00061"></a>00061       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00062"></a>00062         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00063"></a>00063         <span class="keywordflow">try</span> {
+<a name="l00064"></a>00064           a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00065"></a>00065           f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00066"></a>00066         }
+<a name="l00067"></a>00067         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00068"></a>00068           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00069"></a>00069           <span class="keywordflow">return</span> 1;
+<a name="l00070"></a>00070         }
+<a name="l00071"></a>00071         m += 2;
+<a name="l00072"></a>00072       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00073"></a>00073         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00074"></a>00074         istring = argv[m];
+<a name="l00075"></a>00075       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00076"></a>00076         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077         ifile = argv[m];
+<a name="l00078"></a>00078       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00079"></a>00079         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00080"></a>00080         ofile = argv[m];
+<a name="l00081"></a>00081       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00082"></a>00082         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00083"></a>00083         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00084"></a>00084           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00085"></a>00085           <span class="keywordflow">return</span> 1;
+<a name="l00086"></a>00086         }
+<a name="l00087"></a>00087         lsep = argv[m][0];
+<a name="l00088"></a>00088       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00089"></a>00089         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00090"></a>00090         cdelim = argv[m];
+<a name="l00091"></a>00091      } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00092"></a>00092         std::cout
+<a name="l00093"></a>00093           << argv[0]
+<a name="l00094"></a>00094           << <span class="stringliteral">": $Id: b9e53a72ea7d026978678f3ab9d726a2d8485079 $\n"</span>
+<a name="l00095"></a>00095           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00096"></a>00096         <span class="keywordflow">return</span> 0;
+<a name="l00097"></a>00097       } <span class="keywordflow">else</span>
+<a name="l00098"></a>00098         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00099"></a>00099     }
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00102"></a>00102       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00103"></a>00103       <span class="keywordflow">return</span> 1;
+<a name="l00104"></a>00104     }
+<a name="l00105"></a>00105     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00106"></a>00106     std::ifstream infile;
+<a name="l00107"></a>00107     std::istringstream instring;
+<a name="l00108"></a>00108     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00109"></a>00109       infile.open(ifile.c_str());
+<a name="l00110"></a>00110       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00111"></a>00111         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00112"></a>00112         <span class="keywordflow">return</span> 1;
+<a name="l00113"></a>00113       }
+<a name="l00114"></a>00114     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00115"></a>00115       std::string::size_type m = 0;
+<a name="l00116"></a>00116       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00117"></a>00117         m = istring.find(lsep, m);
+<a name="l00118"></a>00118         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00119"></a>00119           <span class="keywordflow">break</span>;
+<a name="l00120"></a>00120         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00121"></a>00121       }
+<a name="l00122"></a>00122       instring.str(istring);
+<a name="l00123"></a>00123     }
+<a name="l00124"></a>00124     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00125"></a>00125       (!istring.empty() ? &instring : &std::cin);
 <a name="l00126"></a>00126 
-<a name="l00127"></a>00127     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> ec(a, f);
-<a name="l00128"></a>00128     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> lc(lat0, lon0, h0, ec);
-<a name="l00129"></a>00129 
-<a name="l00130"></a>00130     std::string s;
-<a name="l00131"></a>00131     <span class="keywordtype">int</span> retval = 0;
-<a name="l00132"></a>00132     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00133"></a>00133       <span class="keywordflow">try</span> {
-<a name="l00134"></a>00134         std::istringstream str(s);
-<a name="l00135"></a>00135         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, h, x, y, z;
-<a name="l00136"></a>00136         std::string stra, strb, strc;
-<a name="l00137"></a>00137         <span class="keywordflow">if</span> (!(str >> stra >> strb >> strc))
-<a name="l00138"></a>00138           <span class="keywordflow">throw</span>  <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00139"></a>00139         <span class="keywordflow">if</span> (reverse) {
-<a name="l00140"></a>00140           x = Utility::num<real>(stra);
-<a name="l00141"></a>00141           y = Utility::num<real>(strb);
-<a name="l00142"></a>00142           z = Utility::num<real>(strc);
-<a name="l00143"></a>00143         } <span class="keywordflow">else</span> {
-<a name="l00144"></a>00144           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00145"></a>00145           h = Utility::num<real>(strc);
-<a name="l00146"></a>00146         }
-<a name="l00147"></a>00147         std::string strd;
-<a name="l00148"></a>00148         <span class="keywordflow">if</span> (str >> strd)
-<a name="l00149"></a>00149           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strd);
-<a name="l00150"></a>00150         <span class="keywordflow">if</span> (reverse) {
-<a name="l00151"></a>00151           <span class="keywordflow">if</span> (localcartesian)
-<a name="l00152"></a>00152             lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">Reverse</a>(x, y, z, lat, lon, h);
-<a name="l00153"></a>00153           <span class="keywordflow">else</span>
-<a name="l00154"></a>00154             ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">Reverse</a>(x, y, z, lat, lon, h);
-<a name="l00155"></a>00155           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00156"></a>00156                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00157"></a>00157                   << Utility::str<real>(h, 12) << <span class="stringliteral">"\n"</span>;
-<a name="l00158"></a>00158         } <span class="keywordflow">else</span> {
-<a name="l00159"></a>00159           <span class="keywordflow">if</span> (localcartesian)
-<a name="l00160"></a>00160             lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">Forward</a>(lat, lon, h, x, y, z);
-<a name="l00161"></a>00161           <span class="keywordflow">else</span>
-<a name="l00162"></a>00162             ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">Forward</a>(lat, lon, h, x, y, z);
-<a name="l00163"></a>00163           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00164"></a>00164                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00165"></a>00165                   << Utility::str<real>(z, 10) << <span class="stringliteral">"\n"</span>;
-<a name="l00166"></a>00166         }
-<a name="l00167"></a>00167       }
-<a name="l00168"></a>00168       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00169"></a>00169         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00170"></a>00170         retval = 1;
-<a name="l00171"></a>00171       }
-<a name="l00172"></a>00172     }
-<a name="l00173"></a>00173     <span class="keywordflow">return</span> retval;
-<a name="l00174"></a>00174   }
-<a name="l00175"></a>00175   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00176"></a>00176     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00177"></a>00177     <span class="keywordflow">return</span> 1;
-<a name="l00178"></a>00178   }
-<a name="l00179"></a>00179   <span class="keywordflow">catch</span> (...) {
-<a name="l00180"></a>00180     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00181"></a>00181     <span class="keywordflow">return</span> 1;
-<a name="l00182"></a>00182   }
-<a name="l00183"></a>00183 }
+<a name="l00127"></a>00127     std::ofstream outfile;
+<a name="l00128"></a>00128     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00129"></a>00129     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00130"></a>00130       outfile.open(ofile.c_str());
+<a name="l00131"></a>00131       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00132"></a>00132         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00133"></a>00133         <span class="keywordflow">return</span> 1;
+<a name="l00134"></a>00134       }
+<a name="l00135"></a>00135     }
+<a name="l00136"></a>00136     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> ec(a, f);
+<a name="l00139"></a>00139     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> lc(lat0, lon0, h0, ec);
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141     std::string s;
+<a name="l00142"></a>00142     <span class="keywordtype">int</span> retval = 0;
+<a name="l00143"></a>00143     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00144"></a>00144       <span class="keywordflow">try</span> {
+<a name="l00145"></a>00145         std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00146"></a>00146         <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00147"></a>00147           std::string::size_type m = s.find(cdelim);
+<a name="l00148"></a>00148           <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00149"></a>00149             eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00150"></a>00150             s = s.substr(0, m);
+<a name="l00151"></a>00151           }
+<a name="l00152"></a>00152         }
+<a name="l00153"></a>00153         std::istringstream str(s);
+<a name="l00154"></a>00154         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, h, x, y, z;
+<a name="l00155"></a>00155         std::string stra, strb, strc;
+<a name="l00156"></a>00156         <span class="keywordflow">if</span> (!(str >> stra >> strb >> strc))
+<a name="l00157"></a>00157           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00158"></a>00158         <span class="keywordflow">if</span> (reverse) {
+<a name="l00159"></a>00159           x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00160"></a>00160           y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00161"></a>00161           z = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strc);
+<a name="l00162"></a>00162         } <span class="keywordflow">else</span> {
+<a name="l00163"></a>00163           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00164"></a>00164           h = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strc);
+<a name="l00165"></a>00165         }
+<a name="l00166"></a>00166         std::string strd;
+<a name="l00167"></a>00167         <span class="keywordflow">if</span> (str >> strd)
+<a name="l00168"></a>00168           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strd);
+<a name="l00169"></a>00169         <span class="keywordflow">if</span> (reverse) {
+<a name="l00170"></a>00170           <span class="keywordflow">if</span> (localcartesian)
+<a name="l00171"></a>00171             lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">Reverse</a>(x, y, z, lat, lon, h);
+<a name="l00172"></a>00172           <span class="keywordflow">else</span>
+<a name="l00173"></a>00173             ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">Reverse</a>(x, y, z, lat, lon, h);
+<a name="l00174"></a>00174           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00175"></a>00175                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00176"></a>00176                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(h, 12) << eol;
+<a name="l00177"></a>00177         } <span class="keywordflow">else</span> {
+<a name="l00178"></a>00178           <span class="keywordflow">if</span> (localcartesian)
+<a name="l00179"></a>00179             lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">Forward</a>(lat, lon, h, x, y, z);
+<a name="l00180"></a>00180           <span class="keywordflow">else</span>
+<a name="l00181"></a>00181             ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">Forward</a>(lat, lon, h, x, y, z);
+<a name="l00182"></a>00182           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00183"></a>00183                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00184"></a>00184                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(z, 10) << eol;
+<a name="l00185"></a>00185         }
+<a name="l00186"></a>00186       }
+<a name="l00187"></a>00187       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00188"></a>00188         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00189"></a>00189         retval = 1;
+<a name="l00190"></a>00190       }
+<a name="l00191"></a>00191     }
+<a name="l00192"></a>00192     <span class="keywordflow">return</span> retval;
+<a name="l00193"></a>00193   }
+<a name="l00194"></a>00194   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00195"></a>00195     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00196"></a>00196     <span class="keywordflow">return</span> 1;
+<a name="l00197"></a>00197   }
+<a name="l00198"></a>00198   <span class="keywordflow">catch</span> (...) {
+<a name="l00199"></a>00199     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00200"></a>00200     <span class="keywordflow">return</span> 1;
+<a name="l00201"></a>00201   }
+<a name="l00202"></a>00202 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CassiniSoldner_8cpp.html b/doc/html/CassiniSoldner_8cpp.html
index 4896ff9..a9e0538 100644
--- a/doc/html/CassiniSoldner_8cpp.html
+++ b/doc/html/CassiniSoldner_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CassiniSoldner.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">GEOGRAPHICLIB_CASSINISOLDNER_CPP</a>   "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">GEOGRAPHICLIB_CASSINISOLDNER_CPP</a>   "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="CassiniSoldner_8cpp_source.html">CassiniSoldner.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_CPP   "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_CPP   "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CassiniSoldner_8cpp_source.html b/doc/html/CassiniSoldner_8cpp_source.html
index fa78125..21b1ab8 100644
--- a/doc/html/CassiniSoldner_8cpp_source.html
+++ b/doc/html/CassiniSoldner_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CassiniSoldner.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file CassiniSoldner.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::CassiniSoldner class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="CassiniSoldner_8hpp.html" title="Header for GeographicLib::CassiniSoldner class.">GeographicLib/CassiniSoldner.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_CASSINISOLDNER_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">GEOGRAPHICLIB_CASSINISOLDNER_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">GEOGRAPHICLIB_CASSINISOLDNER_HPP</a>)
@@ -68,9 +83,9 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> CassiniSoldner::eps1_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> CassiniSoldner::eps1_ =
 <a name="l00023"></a>00023     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(numeric_limits<real>::epsilon());
-<a name="l00024"></a>00024   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> CassiniSoldner::tiny_ = sqrt(numeric_limits<real>::min());
+<a name="l00024"></a>00024   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> CassiniSoldner::tiny_ = sqrt(numeric_limits<real>::min());
 <a name="l00025"></a>00025 
 <a name="l00026"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#af9bdc7088bca547dcc191691b2737759">00026</a>   <span class="keywordtype">void</span> CassiniSoldner::Reset(real lat0, real lon0) <span class="keywordflow">throw</span>() {
 <a name="l00027"></a>00027     _meridian = _earth.Line(lat0, lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
@@ -78,7 +93,7 @@
 <a name="l00029"></a>00029                             Geodesic::DISTANCE | Geodesic::DISTANCE_IN |
 <a name="l00030"></a>00030                             Geodesic::AZIMUTH);
 <a name="l00031"></a>00031     real
-<a name="l00032"></a>00032       phi = LatitudeOrigin() * Math::degree<real>(),
+<a name="l00032"></a>00032       phi = LatitudeOrigin() * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00033"></a>00033       f = _earth.Flattening();
 <a name="l00034"></a>00034     _sbet0 = (1 - f) * sin(phi);
 <a name="l00035"></a>00035     _cbet0 = abs(LatitudeOrigin()) == 90 ? 0 : cos(phi);
@@ -121,13 +136,13 @@
 <a name="l00072"></a>00072                      t, t, t, t, t, t, rk, t);
 <a name="l00073"></a>00073 
 <a name="l00074"></a>00074     real
-<a name="l00075"></a>00075       alp0 = perp.EquatorialAzimuth() * Math::degree<real>(),
+<a name="l00075"></a>00075       alp0 = perp.EquatorialAzimuth() * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00076"></a>00076       calp0 = cos(alp0), salp0 = sin(alp0),
 <a name="l00077"></a>00077       sbet1 = lat >=0 ? calp0 : -calp0,
 <a name="l00078"></a>00078       cbet1 = abs(dlon) <= 90 ? abs(salp0) : -abs(salp0),
 <a name="l00079"></a>00079       sbet01 = sbet1 * _cbet0 - cbet1 * _sbet0,
 <a name="l00080"></a>00080       cbet01 = cbet1 * _cbet0 + sbet1 * _sbet0,
-<a name="l00081"></a>00081       sig01 = atan2(sbet01, cbet01) / Math::degree<real>();
+<a name="l00081"></a>00081       sig01 = atan2(sbet01, cbet01) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00082"></a>00082     _meridian.GenPosition(<span class="keyword">true</span>, sig01,
 <a name="l00083"></a>00083                           Geodesic::DISTANCE,
 <a name="l00084"></a>00084                           t, t, t, y, t, t, t, t);
@@ -146,8 +161,13 @@
 <a name="l00097"></a>00097 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CassiniSoldner_8hpp.html b/doc/html/CassiniSoldner_8hpp.html
index 7d89e81..4abd88a 100644
--- a/doc/html/CassiniSoldner_8hpp.html
+++ b/doc/html/CassiniSoldner_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CassiniSoldner.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,17 +83,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">GEOGRAPHICLIB_CASSINISOLDNER_HPP</a>   "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">GEOGRAPHICLIB_CASSINISOLDNER_HPP</a>   "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_HPP   "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_HPP   "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"</td>
         </tr>
       </table>
 </div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CassiniSoldner_8hpp_source.html b/doc/html/CassiniSoldner_8hpp_source.html
index ed3ee67..09ef314 100644
--- a/doc/html/CassiniSoldner_8hpp_source.html
+++ b/doc/html/CassiniSoldner_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CassiniSoldner.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file CassiniSoldner.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::CassiniSoldner class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CASSINISOLDNER_HPP)</span>
 <a name="l00011"></a><a class="code" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_CASSINISOLDNER_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
@@ -111,184 +126,195 @@
 <a name="l00061"></a>00061 <span class="comment">   *</span>
 <a name="l00062"></a>00062 <span class="comment">   * Example of use:</span>
 <a name="l00063"></a>00063 <span class="comment">   * \include example-CassiniSoldner.cpp</span>
-<a name="l00064"></a>00064 <span class="comment">   **********************************************************************/</span>
-<a name="l00065"></a>00065 
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html">00066</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> {
-<a name="l00067"></a>00067   <span class="keyword">private</span>:
-<a name="l00068"></a>00068     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00069"></a>00069     <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00070"></a>00070     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> _meridian;
-<a name="l00071"></a>00071     real _sbet0, _cbet0;
-<a name="l00072"></a>00072     <span class="keyword">static</span> <span class="keyword">const</span> real eps1_;
-<a name="l00073"></a>00073     <span class="keyword">static</span> <span class="keyword">const</span> real tiny_;
-<a name="l00074"></a>00074     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ =  10;
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076     <span class="comment">// The following private helper functions are copied from Geodesic.</span>
-<a name="l00077"></a>00077     <span class="keyword">static</span> <span class="keyword">inline</span> real AngNormalize(real x) <span class="keywordflow">throw</span>() {
-<a name="l00078"></a>00078       <span class="comment">// Place angle in [-180, 180).  Assumes x is in [-540, 540).</span>
-<a name="l00079"></a>00079       <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
-<a name="l00080"></a>00080     }
-<a name="l00081"></a>00081     <span class="keyword">static</span> <span class="keyword">inline</span> real AngRound(real x) <span class="keywordflow">throw</span>() {
-<a name="l00082"></a>00082       <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
-<a name="l00083"></a>00083       <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees.  (This</span>
-<a name="l00084"></a>00084       <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
-<a name="l00085"></a>00085       <span class="comment">// degrees.)  We use this to avoid having to deal with near singular</span>
-<a name="l00086"></a>00086       <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
-<a name="l00087"></a>00087       <span class="keyword">const</span> real z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
-<a name="l00088"></a>00088       <span class="keyword">volatile</span> real y = std::abs(x);
-<a name="l00089"></a>00089       <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
-<a name="l00090"></a>00090       y = y < z ? z - (z - y) : y;
-<a name="l00091"></a>00091       <span class="keywordflow">return</span> x < 0 ? -y : y;
-<a name="l00092"></a>00092     }
-<a name="l00093"></a>00093     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(real& sinx, real& cosx) <span class="keywordflow">throw</span>() {
-<a name="l00094"></a>00094       real r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sinx, cosx);
-<a name="l00095"></a>00095       sinx /= r;
-<a name="l00096"></a>00096       cosx /= r;
-<a name="l00097"></a>00097     }
-<a name="l00098"></a>00098   <span class="keyword">public</span>:
-<a name="l00099"></a>00099 <span class="comment"></span>
-<a name="l00100"></a>00100 <span class="comment">    /**</span>
-<a name="l00101"></a>00101 <span class="comment">     * Constructor for CassiniSoldner.</span>
-<a name="l00102"></a>00102 <span class="comment">     *</span>
-<a name="l00103"></a>00103 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00104"></a>00104 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
-<a name="l00105"></a>00105 <span class="comment">     *</span>
-<a name="l00106"></a>00106 <span class="comment">     * This constructor makes an "uninitialized" object.  Call Reset to set the</span>
-<a name="l00107"></a>00107 <span class="comment">     * central latitude and longitude, prior to calling Forward and Reverse.</span>
-<a name="l00108"></a>00108 <span class="comment">     **********************************************************************/</span>
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">00109</a>     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodes [...]
-<a name="l00110"></a>00110       : _earth(earth) {}
-<a name="l00111"></a>00111 <span class="comment"></span>
-<a name="l00112"></a>00112 <span class="comment">    /**</span>
-<a name="l00113"></a>00113 <span class="comment">     * Constructor for CassiniSoldner specifying a center point.</span>
-<a name="l00114"></a>00114 <span class="comment">     *</span>
-<a name="l00115"></a>00115 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00116"></a>00116 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00117"></a>00117 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00118"></a>00118 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
-<a name="l00119"></a>00119 <span class="comment">     *</span>
-<a name="l00120"></a>00120 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00121"></a>00121 <span class="comment">     * range [-180, 360].</span>
-<a name="l00122"></a>00122 <span class="comment">     **********************************************************************/</span>
-<a name="l00123"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a1b19cedb287ec9bbe59ec18a0ad2a5e4">00123</a>     <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(real lat0, real lon0,
-<a name="l00124"></a>00124                    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>) throw()
-<a name="l00125"></a>00125       : _earth(earth) {
-<a name="l00126"></a>00126       Reset(lat0, lon0);
-<a name="l00127"></a>00127     }
-<a name="l00128"></a>00128 <span class="comment"></span>
-<a name="l00129"></a>00129 <span class="comment">    /**</span>
-<a name="l00130"></a>00130 <span class="comment">     * Set the central point of the projection</span>
-<a name="l00131"></a>00131 <span class="comment">     *</span>
-<a name="l00132"></a>00132 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00133"></a>00133 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00134"></a>00134 <span class="comment">     *</span>
-<a name="l00135"></a>00135 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00136"></a>00136 <span class="comment">     * range [-180, 360].</span>
-<a name="l00137"></a>00137 <span class="comment">     **********************************************************************/</span>
-<a name="l00138"></a>00138     <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0) <span class="keywordflow">throw</span>();
-<a name="l00139"></a>00139 <span class="comment"></span>
-<a name="l00140"></a>00140 <span class="comment">    /**</span>
-<a name="l00141"></a>00141 <span class="comment">     * Forward projection, from geographic to Cassini-Soldner.</span>
-<a name="l00142"></a>00142 <span class="comment">     *</span>
-<a name="l00143"></a>00143 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00144"></a>00144 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00145"></a>00145 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00146"></a>00146 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00147"></a>00147 <span class="comment">     * @param[out] azi azimuth of easting direction at point (degrees).</span>
-<a name="l00148"></a>00148 <span class="comment">     * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
-<a name="l00149"></a>00149 <span class="comment">     *</span>
-<a name="l00150"></a>00150 <span class="comment">     * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
-<a name="l00151"></a>00151 <span class="comment">     * range [-180, 360].  A call to Forward followed by a call to Reverse will</span>
-<a name="l00152"></a>00152 <span class="comment">     * return the original (\e lat, \e lon) (to within roundoff).  The routine</span>
-<a name="l00153"></a>00153 <span class="comment">     * does nothing if the origin has not been set.</span>
-<a name="l00154"></a>00154 <span class="comment">     **********************************************************************/</span>
-<a name="l00155"></a>00155     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
-<a name="l00156"></a>00156                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00157"></a>00157 <span class="comment"></span>
-<a name="l00158"></a>00158 <span class="comment">    /**</span>
-<a name="l00159"></a>00159 <span class="comment">     * Reverse projection, from Cassini-Soldner to geographic.</span>
-<a name="l00160"></a>00160 <span class="comment">     *</span>
-<a name="l00161"></a>00161 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00162"></a>00162 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00163"></a>00163 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00164"></a>00164 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00165"></a>00165 <span class="comment">     * @param[out] azi azimuth of easting direction at point (degrees).</span>
-<a name="l00166"></a>00166 <span class="comment">     * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
-<a name="l00167"></a>00167 <span class="comment">     *</span>
-<a name="l00168"></a>00168 <span class="comment">     * A call to Reverse followed by a call to Forward will return the original</span>
-<a name="l00169"></a>00169 <span class="comment">     * (\e x, \e y) (to within roundoff), provided that \e x and \e y are</span>
-<a name="l00170"></a>00170 <span class="comment">     * sufficiently small not to "wrap around" the earth.  The routine does</span>
-<a name="l00171"></a>00171 <span class="comment">     * nothing if the origin has not been set.</span>
-<a name="l00172"></a>00172 <span class="comment">     **********************************************************************/</span>
-<a name="l00173"></a>00173     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
-<a name="l00174"></a>00174                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00175"></a>00175 <span class="comment"></span>
-<a name="l00176"></a>00176 <span class="comment">    /**</span>
-<a name="l00177"></a>00177 <span class="comment">     * CassiniSoldner::Forward without returning the azimuth and scale.</span>
-<a name="l00178"></a>00178 <span class="comment">     **********************************************************************/</span>
-<a name="l00179"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a87bf8d3b416bbfd8b7a2c5269245e693">00179</a>     <span class="keywordtype">void</span> Forward(real lat, real lon,
-<a name="l00180"></a>00180                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00181"></a>00181       real azi, rk;
-<a name="l00182"></a>00182       Forward(lat, lon, x, y, azi, rk);
-<a name="l00183"></a>00183     }
-<a name="l00184"></a>00184 <span class="comment"></span>
-<a name="l00185"></a>00185 <span class="comment">    /**</span>
-<a name="l00186"></a>00186 <span class="comment">     * CassiniSoldner::Reverse without returning the azimuth and scale.</span>
-<a name="l00187"></a>00187 <span class="comment">     **********************************************************************/</span>
-<a name="l00188"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a27a675e995d2c1fdd0ab4c0ab397e065">00188</a>     <span class="keywordtype">void</span> Reverse(real x, real y,
-<a name="l00189"></a>00189                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00190"></a>00190       real azi, rk;
-<a name="l00191"></a>00191       Reverse(x, y, lat, lon, azi, rk);
-<a name="l00192"></a>00192     }
-<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00195"></a>00195 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment">    ///@{</span>
-<a name="l00197"></a>00197 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00198"></a>00198 <span class="comment">     * @return true if the object has been initialized.</span>
-<a name="l00199"></a>00199 <span class="comment">     **********************************************************************/</span>
-<a name="l00200"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">00200</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _meridian.Init(); }
-<a name="l00201"></a>00201 <span class="comment"></span>
-<a name="l00202"></a>00202 <span class="comment">    /**</span>
-<a name="l00203"></a>00203 <span class="comment">     * @return \e lat0 the latitude of origin (degrees).</span>
-<a name="l00204"></a>00204 <span class="comment">     **********************************************************************/</span>
-<a name="l00205"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a2aa51120af199603f57d54b8c9a0bdde">00205</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> LatitudeOrigin() <span class="keyword">const</span> throw()
-<a name="l00206"></a>00206     { <span class="keywordflow">return</span> _meridian.Latitude(); }
-<a name="l00207"></a>00207 <span class="comment"></span>
-<a name="l00208"></a>00208 <span class="comment">    /**</span>
-<a name="l00209"></a>00209 <span class="comment">     * @return \e lon0 the longitude of origin (degrees).</span>
-<a name="l00210"></a>00210 <span class="comment">     **********************************************************************/</span>
-<a name="l00211"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">00211</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> LongitudeOrigin() <span class="keyword">const</span> throw()
-<a name="l00212"></a>00212     { <span class="keywordflow">return</span> _meridian.Longitude(); }
-<a name="l00213"></a>00213 <span class="comment"></span>
-<a name="l00214"></a>00214 <span class="comment">    /**</span>
-<a name="l00215"></a>00215 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00216"></a>00216 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00217"></a>00217 <span class="comment">     **********************************************************************/</span>
-<a name="l00218"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">00218</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00219"></a>00219 <span class="comment"></span>
-<a name="l00220"></a>00220 <span class="comment">    /**</span>
-<a name="l00221"></a>00221 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00222"></a>00222 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
-<a name="l00223"></a>00223 <span class="comment">     **********************************************************************/</span>
-<a name="l00224"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">00224</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00225"></a>00225 <span class="comment"></span>
-<a name="l00226"></a>00226 <span class="comment">    /**</span>
-<a name="l00227"></a>00227 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00228"></a>00228 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00229"></a>00229 <span class="comment">     **********************************************************************/</span>
-<a name="l00230"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">00230</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00231"></a>00231     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00232"></a>00232 <span class="comment">    ///@}</span>
-<a name="l00233"></a>00233 <span class="comment"></span>  };
-<a name="l00234"></a>00234 
-<a name="l00235"></a>00235 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00236"></a>00236 
-<a name="l00237"></a>00237 <span class="preprocessor">#endif  // GEOGRAPHICLIB_CASSINISOLDNER_HPP</span>
+<a name="l00064"></a>00064 <span class="comment">   *</span>
+<a name="l00065"></a>00065 <span class="comment">   * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility</span>
+<a name="l00066"></a>00066 <span class="comment">   * providing access to the functionality of AzimuthalEquidistant, Gnomonic,</span>
+<a name="l00067"></a>00067 <span class="comment">   * and CassiniSoldner.</span>
+<a name="l00068"></a>00068 <span class="comment">   **********************************************************************/</span>
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> CassiniSoldner {
+<a name="l00071"></a>00071   <span class="keyword">private</span>:
+<a name="l00072"></a>00072     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00073"></a>00073     Geodesic _earth;
+<a name="l00074"></a>00074     GeodesicLine _meridian;
+<a name="l00075"></a>00075     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _sbet0, _cbet0;
+<a name="l00076"></a>00076     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps1_;
+<a name="l00077"></a>00077     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tiny_;
+<a name="l00078"></a>00078     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 10;
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     <span class="comment">// The following private helper functions are copied from Geodesic.</span>
+<a name="l00081"></a>00081     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00082"></a>00082       <span class="comment">// Place angle in [-180, 180).  Assumes x is in [-540, 540).</span>
+<a name="l00083"></a>00083       <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
+<a name="l00084"></a>00084     }
+<a name="l00085"></a>00085     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngRound(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00086"></a>00086       <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
+<a name="l00087"></a>00087       <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees.  (This</span>
+<a name="l00088"></a>00088       <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
+<a name="l00089"></a>00089       <span class="comment">// degrees.)  We use this to avoid having to deal with near singular</span>
+<a name="l00090"></a>00090       <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
+<a name="l00091"></a>00091       <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
+<a name="l00092"></a>00092       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = std::abs(x);
+<a name="l00093"></a>00093       <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
+<a name="l00094"></a>00094       y = y < z ? z - (z - y) : y;
+<a name="l00095"></a>00095       <span class="keywordflow">return</span> x < 0 ? -y : y;
+<a name="l00096"></a>00096     }
+<a name="l00097"></a>00097     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx) <span class="keywordflow">throw</span>() {
+<a name="l00098"></a>00098       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sinx, cosx);
+<a name="l00099"></a>00099       sinx /= r;
+<a name="l00100"></a>00100       cosx /= r;
+<a name="l00101"></a>00101     }
+<a name="l00102"></a>00102   <span class="keyword">public</span>:
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="comment">    /**</span>
+<a name="l00105"></a>00105 <span class="comment">     * Constructor for CassiniSoldner.</span>
+<a name="l00106"></a>00106 <span class="comment">     *</span>
+<a name="l00107"></a>00107 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00108"></a>00108 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
+<a name="l00109"></a>00109 <span class="comment">     *</span>
+<a name="l00110"></a>00110 <span class="comment">     * This constructor makes an "uninitialized" object.  Call Reset to set the</span>
+<a name="l00111"></a>00111 <span class="comment">     * central latitude and longitude, prior to calling Forward and Reverse.</span>
+<a name="l00112"></a>00112 <span class="comment">     **********************************************************************/</span>
+<a name="l00113"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">00113</a>     <span class="keyword">explicit</span> CassiniSoldner(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>) throw()
+<a name="l00114"></a>00114       : _earth(earth) {}
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">    /**</span>
+<a name="l00117"></a>00117 <span class="comment">     * Constructor for CassiniSoldner specifying a center point.</span>
+<a name="l00118"></a>00118 <span class="comment">     *</span>
+<a name="l00119"></a>00119 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00120"></a>00120 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00121"></a>00121 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00122"></a>00122 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
+<a name="l00123"></a>00123 <span class="comment">     *</span>
+<a name="l00124"></a>00124 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00125"></a>00125 <span class="comment">     * range [-180, 360].</span>
+<a name="l00126"></a>00126 <span class="comment">     **********************************************************************/</span>
+<a name="l00127"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a1b19cedb287ec9bbe59ec18a0ad2a5e4">00127</a>     CassiniSoldner(real lat0, real lon0,
+<a name="l00128"></a>00128                    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>) throw()
+<a name="l00129"></a>00129       : _earth(earth) {
+<a name="l00130"></a>00130       Reset(lat0, lon0);
+<a name="l00131"></a>00131     }
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="comment">    /**</span>
+<a name="l00134"></a>00134 <span class="comment">     * Set the central point of the projection</span>
+<a name="l00135"></a>00135 <span class="comment">     *</span>
+<a name="l00136"></a>00136 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00137"></a>00137 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00138"></a>00138 <span class="comment">     *</span>
+<a name="l00139"></a>00139 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00140"></a>00140 <span class="comment">     * range [-180, 360].</span>
+<a name="l00141"></a>00141 <span class="comment">     **********************************************************************/</span>
+<a name="l00142"></a>00142     <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0) <span class="keywordflow">throw</span>();
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">    /**</span>
+<a name="l00145"></a>00145 <span class="comment">     * Forward projection, from geographic to Cassini-Soldner.</span>
+<a name="l00146"></a>00146 <span class="comment">     *</span>
+<a name="l00147"></a>00147 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00148"></a>00148 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00149"></a>00149 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00150"></a>00150 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00151"></a>00151 <span class="comment">     * @param[out] azi azimuth of easting direction at point (degrees).</span>
+<a name="l00152"></a>00152 <span class="comment">     * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
+<a name="l00153"></a>00153 <span class="comment">     *</span>
+<a name="l00154"></a>00154 <span class="comment">     * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
+<a name="l00155"></a>00155 <span class="comment">     * range [-180, 360].  A call to Forward followed by a call to Reverse will</span>
+<a name="l00156"></a>00156 <span class="comment">     * return the original (\e lat, \e lon) (to within roundoff).  The routine</span>
+<a name="l00157"></a>00157 <span class="comment">     * does nothing if the origin has not been set.</span>
+<a name="l00158"></a>00158 <span class="comment">     **********************************************************************/</span>
+<a name="l00159"></a>00159     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00160"></a>00160                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">    /**</span>
+<a name="l00163"></a>00163 <span class="comment">     * Reverse projection, from Cassini-Soldner to geographic.</span>
+<a name="l00164"></a>00164 <span class="comment">     *</span>
+<a name="l00165"></a>00165 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00166"></a>00166 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00167"></a>00167 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00168"></a>00168 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00169"></a>00169 <span class="comment">     * @param[out] azi azimuth of easting direction at point (degrees).</span>
+<a name="l00170"></a>00170 <span class="comment">     * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
+<a name="l00171"></a>00171 <span class="comment">     *</span>
+<a name="l00172"></a>00172 <span class="comment">     * A call to Reverse followed by a call to Forward will return the original</span>
+<a name="l00173"></a>00173 <span class="comment">     * (\e x, \e y) (to within roundoff), provided that \e x and \e y are</span>
+<a name="l00174"></a>00174 <span class="comment">     * sufficiently small not to "wrap around" the earth.  The routine does</span>
+<a name="l00175"></a>00175 <span class="comment">     * nothing if the origin has not been set.</span>
+<a name="l00176"></a>00176 <span class="comment">     **********************************************************************/</span>
+<a name="l00177"></a>00177     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00178"></a>00178                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00179"></a>00179 <span class="comment"></span>
+<a name="l00180"></a>00180 <span class="comment">    /**</span>
+<a name="l00181"></a>00181 <span class="comment">     * CassiniSoldner::Forward without returning the azimuth and scale.</span>
+<a name="l00182"></a>00182 <span class="comment">     **********************************************************************/</span>
+<a name="l00183"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a87bf8d3b416bbfd8b7a2c5269245e693">00183</a>     <span class="keywordtype">void</span> Forward(real lat, real lon,
+<a name="l00184"></a>00184                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00185"></a>00185       real azi, rk;
+<a name="l00186"></a>00186       Forward(lat, lon, x, y, azi, rk);
+<a name="l00187"></a>00187     }
+<a name="l00188"></a>00188 <span class="comment"></span>
+<a name="l00189"></a>00189 <span class="comment">    /**</span>
+<a name="l00190"></a>00190 <span class="comment">     * CassiniSoldner::Reverse without returning the azimuth and scale.</span>
+<a name="l00191"></a>00191 <span class="comment">     **********************************************************************/</span>
+<a name="l00192"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a27a675e995d2c1fdd0ab4c0ab397e065">00192</a>     <span class="keywordtype">void</span> Reverse(real x, real y,
+<a name="l00193"></a>00193                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00194"></a>00194       real azi, rk;
+<a name="l00195"></a>00195       Reverse(x, y, lat, lon, azi, rk);
+<a name="l00196"></a>00196     }
+<a name="l00197"></a>00197 <span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00199"></a>00199 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">    ///@{</span>
+<a name="l00201"></a>00201 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00202"></a>00202 <span class="comment">     * @return true if the object has been initialized.</span>
+<a name="l00203"></a>00203 <span class="comment">     **********************************************************************/</span>
+<a name="l00204"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">00204</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _meridian.Init(); }
+<a name="l00205"></a>00205 <span class="comment"></span>
+<a name="l00206"></a>00206 <span class="comment">    /**</span>
+<a name="l00207"></a>00207 <span class="comment">     * @return \e lat0 the latitude of origin (degrees).</span>
+<a name="l00208"></a>00208 <span class="comment">     **********************************************************************/</span>
+<a name="l00209"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a2aa51120af199603f57d54b8c9a0bdde">00209</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real LatitudeOrigin() <span class="keyword">const</span> throw()
+<a name="l00210"></a>00210     { <span class="keywordflow">return</span> _meridian.Latitude(); }
+<a name="l00211"></a>00211 <span class="comment"></span>
+<a name="l00212"></a>00212 <span class="comment">    /**</span>
+<a name="l00213"></a>00213 <span class="comment">     * @return \e lon0 the longitude of origin (degrees).</span>
+<a name="l00214"></a>00214 <span class="comment">     **********************************************************************/</span>
+<a name="l00215"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">00215</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real LongitudeOrigin() <span class="keyword">const</span> throw()
+<a name="l00216"></a>00216     { <span class="keywordflow">return</span> _meridian.Longitude(); }
+<a name="l00217"></a>00217 <span class="comment"></span>
+<a name="l00218"></a>00218 <span class="comment">    /**</span>
+<a name="l00219"></a>00219 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00220"></a>00220 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00221"></a>00221 <span class="comment">     **********************************************************************/</span>
+<a name="l00222"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">00222</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00223"></a>00223 <span class="comment"></span>
+<a name="l00224"></a>00224 <span class="comment">    /**</span>
+<a name="l00225"></a>00225 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00226"></a>00226 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
+<a name="l00227"></a>00227 <span class="comment">     **********************************************************************/</span>
+<a name="l00228"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">00228</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span cla [...]
+<a name="l00229"></a>00229 <span class="comment">    ///@}</span>
+<a name="l00230"></a>00230 <span class="comment"></span><span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment">    /// \cond SKIP</span>
+<a name="l00232"></a>00232 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00233"></a>00233 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00234"></a>00234 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00235"></a>00235 <span class="comment">     **********************************************************************/</span>
+<a name="l00236"></a>00236     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00237"></a>00237     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00238"></a>00238 <span class="comment">    /// \endcond</span>
+<a name="l00239"></a>00239 <span class="comment"></span>  };
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243 <span class="preprocessor">#endif  // GEOGRAPHICLIB_CASSINISOLDNER_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CircularEngine_8cpp.html b/doc/html/CircularEngine_8cpp.html
index ff1cc1e..1606779 100644
--- a/doc/html/CircularEngine_8cpp.html
+++ b/doc/html/CircularEngine_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CircularEngine.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,10 +76,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8cpp.html#af686808d87a6f2cd0b1305f1aeac536d">GEOGRAPHICLIB_CIRCULARENGINE_CPP</a>   "$Id: bdd0d21aa34063706e4042410f06bb0f7844fea9 $"</td></tr>
@@ -91,8 +104,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CircularEngine_8cpp_source.html b/doc/html/CircularEngine_8cpp_source.html
index b457151..927052b 100644
--- a/doc/html/CircularEngine_8cpp_source.html
+++ b/doc/html/CircularEngine_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CircularEngine.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,7 @@
 <a name="l00020"></a>00020 
 <a name="l00021"></a>00021   <span class="keyword">using namespace </span>std;
 <a name="l00022"></a>00022 
-<a name="l00023"></a>00023   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> CircularEngine::Value(<span class="keywordtype">bool</span> gradp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cl, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sl,
+<a name="l00023"></a>00023   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> CircularEngine::Value(<span class="keywordtype">bool</span> gradp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cl, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sl,
 <a name="l00024"></a>00024                                    <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grady, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradz)
 <a name="l00025"></a>00025     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00026"></a>00026     gradp = _gradp && gradp;
@@ -152,8 +167,13 @@
 <a name="l00103"></a>00103 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CircularEngine_8hpp.html b/doc/html/CircularEngine_8hpp.html
index 40f02bf..c520ece 100644
--- a/doc/html/CircularEngine_8hpp.html
+++ b/doc/html/CircularEngine_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CircularEngine.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,10 +83,8 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8hpp.html#abfcea264d0e3f7a45c8ff8de7f2e539f">GEOGRAPHICLIB_CIRCULARENGINE_HPP</a>   "$Id: d0528f468369dbc1b7af11e02278ad7a361d398b $"</td></tr>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/CircularEngine_8hpp_source.html b/doc/html/CircularEngine_8hpp_source.html
index 313411e..fbf5550 100644
--- a/doc/html/CircularEngine_8hpp_source.html
+++ b/doc/html/CircularEngine_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: CircularEngine.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -100,26 +115,26 @@
 <a name="l00050"></a>00050 <span class="comment">   * \include example-CircularEngine.cpp</span>
 <a name="l00051"></a>00051 <span class="comment">   **********************************************************************/</span>
 <a name="l00052"></a>00052 
-<a name="l00053"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html">00053</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> {
+<a name="l00053"></a>00053   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> CircularEngine {
 <a name="l00054"></a>00054   <span class="keyword">private</span>:
-<a name="l00055"></a>00055     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00055"></a>00055     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00056"></a>00056     <span class="keyword">enum</span> normalization {
-<a name="l00057"></a>00057       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,
-<a name="l00058"></a>00058       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,
+<a name="l00057"></a>00057       FULL = SphericalEngine::FULL,
+<a name="l00058"></a>00058       SCHMIDT = SphericalEngine::SCHMIDT,
 <a name="l00059"></a>00059     };
 <a name="l00060"></a>00060     <span class="keywordtype">int</span> _M;
 <a name="l00061"></a>00061     <span class="keywordtype">bool</span> _gradp;
 <a name="l00062"></a>00062     <span class="keywordtype">unsigned</span> _norm;
-<a name="l00063"></a>00063     real _a, _r, _u, _t;
+<a name="l00063"></a>00063     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _r, _u, _t;
 <a name="l00064"></a>00064     std::vector<real> _wc, _ws, _wrc, _wrs, _wtc, _wts;
-<a name="l00065"></a>00065     real _q, _uq, _uq2;
+<a name="l00065"></a>00065     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _q, _uq, _uq2;
 <a name="l00066"></a>00066 
-<a name="l00067"></a>00067     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Value(<span class="keywordtype">bool</span> gradp, real cl, real sl,
-<a name="l00068"></a>00068                      real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00067"></a>00067     Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Value(<span class="keywordtype">bool</span> gradp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cl, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sl,
+<a name="l00068"></a>00068                      <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grady, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00069"></a>00069 
-<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> cossin(real x, real& cosx, real& sinx) {
+<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> cossin(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx) {
 <a name="l00071"></a>00071       x = x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
-<a name="l00072"></a>00072       real xi = x * Math::degree<real>();
+<a name="l00072"></a>00072       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xi = x * Math::degree<real>();
 <a name="l00073"></a>00073       cosx = std::abs(x) ==   90 ? 0 : cos(xi);
 <a name="l00074"></a>00074       sinx =          x  == -180 ? 0 : sin(xi);
 <a name="l00075"></a>00075     }
@@ -127,7 +142,7 @@
 <a name="l00077"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#ab89064f7f3c32a745c72d8c3188f7485">00077</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>;
 <a name="l00078"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a243c90a7f9bf3f7aa96877a4b0667a89">00078</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;  <span class="comment">// Access to cossin</span>
 <a name="l00079"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a7294f6a1cc932f8fd1562a15602e9e86">00079</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>; <span class="comment">// Access to cossin</span>
-<a name="l00080"></a>00080     <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>(<span class="keywordtype">int</span> M, <span class="keywordtype">bool</span> gradp, <span class="keywordtype">unsigned</span> norm,
+<a name="l00080"></a>00080     CircularEngine(<span class="keywordtype">int</span> M, <span class="keywordtype">bool</span> gradp, <span class="keywordtype">unsigned</span> norm,
 <a name="l00081"></a>00081                    real a, real r, real u, real t)
 <a name="l00082"></a>00082       : _M(M)
 <a name="l00083"></a>00083       , _gradp(gradp)
@@ -145,7 +160,7 @@
 <a name="l00095"></a>00095       {
 <a name="l00096"></a>00096         _q = _a / _r;
 <a name="l00097"></a>00097         _uq = _u * _q;
-<a name="l00098"></a>00098         _uq2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_uq);
+<a name="l00098"></a>00098         _uq2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_uq);
 <a name="l00099"></a>00099       }
 <a name="l00100"></a>00100 
 <a name="l00101"></a>00101     <span class="keywordtype">void</span> SetCoeff(<span class="keywordtype">int</span> m, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> wc, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ws)
@@ -167,7 +182,7 @@
 <a name="l00117"></a>00117 <span class="comment">     * object returns zero.  The resulting object can be assigned to the result</span>
 <a name="l00118"></a>00118 <span class="comment">     * of SphericalHarmonic::Circle.</span>
 <a name="l00119"></a>00119 <span class="comment">     **********************************************************************/</span>
-<a name="l00120"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a91dd2b9cc408e35f8cb6482cdf3aadbf">00120</a>     <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>()
+<a name="l00120"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a91dd2b9cc408e35f8cb6482cdf3aadbf">00120</a>     CircularEngine()
 <a name="l00121"></a>00121       : _M(-1)
 <a name="l00122"></a>00122       , _gradp(true)
 <a name="l00123"></a>00123       , _u(0)
@@ -185,7 +200,7 @@
 <a name="l00135"></a>00135 <span class="comment">     * The arguments must satisfy <i>coslon</i><sup>2</sup> +</span>
 <a name="l00136"></a>00136 <span class="comment">     * <i>sinlon</i><sup>2</sup> = 1.</span>
 <a name="l00137"></a>00137 <span class="comment">     **********************************************************************/</span>
-<a name="l00138"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">00138</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">operator()</a>(real coslon, real sinlon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">00138</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">operator()</a>(real coslon, real sinlon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00139"></a>00139       real dummy;
 <a name="l00140"></a>00140       <span class="keywordflow">return</span> Value(<span class="keyword">false</span>, coslon, sinlon, dummy, dummy, dummy);
 <a name="l00141"></a>00141     }
@@ -196,7 +211,7 @@
 <a name="l00146"></a>00146 <span class="comment">     * @param[in] lon the longitude (degrees).</span>
 <a name="l00147"></a>00147 <span class="comment">     * @return \e V the value of the sum.</span>
 <a name="l00148"></a>00148 <span class="comment">     **********************************************************************/</span>
-<a name="l00149"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">00149</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">operator()</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00149"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">00149</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">operator()</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00150"></a>00150       real coslon, sinlon;
 <a name="l00151"></a>00151       cossin(lon, coslon, sinlon);
 <a name="l00152"></a>00152       <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(coslon, sinlon);
@@ -219,7 +234,7 @@
 <a name="l00169"></a>00169 <span class="comment">     * touched.  The arguments must satisfy <i>coslon</i><sup>2</sup> +</span>
 <a name="l00170"></a>00170 <span class="comment">     * <i>sinlon</i><sup>2</sup> = 1.</span>
 <a name="l00171"></a>00171 <span class="comment">     **********************************************************************/</span>
-<a name="l00172"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#aa15c408a0ff4cf17575e62edfeae77a6">00172</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real coslon, real sinlon,
+<a name="l00172"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#aa15c408a0ff4cf17575e62edfeae77a6">00172</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real coslon, real sinlon,
 <a name="l00173"></a>00173                           real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00174"></a>00174       <span class="keywordflow">return</span> Value(<span class="keyword">true</span>, coslon, sinlon, gradx, grady, gradz);
 <a name="l00175"></a>00175     }
@@ -238,7 +253,7 @@
 <a name="l00188"></a>00188 <span class="comment">     * SphericalHarmonic::Circle).  If not, \e gradx, etc., will not be</span>
 <a name="l00189"></a>00189 <span class="comment">     * touched.</span>
 <a name="l00190"></a>00190 <span class="comment">     **********************************************************************/</span>
-<a name="l00191"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">00191</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real lon,
+<a name="l00191"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">00191</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real lon,
 <a name="l00192"></a>00192                           real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00193"></a>00193       real coslon, sinlon;
 <a name="l00194"></a>00194       cossin(lon, coslon, sinlon);
@@ -255,8 +270,13 @@
 <a name="l00205"></a>00205 <span class="preprocessor">#endif  // GEOGRAPHICLIB_CIRCULARENGINE_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/ConicProj.1.html b/doc/html/ConicProj.1.html
index 70c00ed..056a59f 100644
--- a/doc/html/ConicProj.1.html
+++ b/doc/html/ConicProj.1.html
@@ -44,8 +44,11 @@
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>ConicProj</strong> ( <strong>-c</strong> | <strong>-a</strong> ) <em>lat1</em> <em>lat2</em>
 [ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -122,6 +125,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 1/<em>f</em>.)  By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
 <em>f</em> = 1/298.257223563.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -147,8 +159,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/doc/html/ConicProj_8cpp.html b/doc/html/ConicProj_8cpp.html
index f00460b..ddbb0d9 100644
--- a/doc/html/ConicProj_8cpp.html
+++ b/doc/html/ConicProj_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: ConicProj.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for conical projections. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o ConicProj \ <a class="el" href="ConicProj_8cpp.html" title="Command line utility for conical projections.">ConicProj.cpp</a> \ ../src/AlbersEqualArea.cpp \ ../src/DMS.cpp \ ../src/LambertConformalConic.cpp</p>
 <p>See the <a href="ConicProj.1.html">man page</a> for usage information. </p>
 
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="ConicProj_8cpp_source.html#l00032">32</a> of file <a class="el" href="ConicProj_8cpp_source.html">ConicProj.cpp</a>.</p>
 
-<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>, and <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>.</p>
+<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>, <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>, and <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/ConicProj_8cpp_source.html b/doc/html/ConicProj_8cpp_source.html
index 26a962b..1f1c636 100644
--- a/doc/html/ConicProj_8cpp_source.html
+++ b/doc/html/ConicProj_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: ConicProj.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file ConicProj.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for conical projections</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -81,199 +96,223 @@
 <a name="l00032"></a><a class="code" href="ConicProj_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00032</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00033"></a>00033   <span class="keywordflow">try</span> {
 <a name="l00034"></a>00034     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00035"></a>00035     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00035"></a>00035     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00036"></a>00036     <span class="keywordtype">bool</span> lcc = <span class="keyword">false</span>, albers = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
 <a name="l00037"></a>00037     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1 = 0, lat2 = 0, lon0 = 0, k1 = 1;
 <a name="l00038"></a>00038     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00039"></a>00039       a = Constants::WGS84_a<real>(),
+<a name="l00039"></a>00039       a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
 <a name="l00040"></a>00040       f = Constants::WGS84_f<real>();
-<a name="l00041"></a>00041     std::string istring, ifile, ofile;
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00044"></a>00044       std::string arg(argv[m]);
-<a name="l00045"></a>00045       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00046"></a>00046         reverse = <span class="keyword">true</span>;
-<a name="l00047"></a>00047       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-a"</span>) {
-<a name="l00048"></a>00048         lcc = arg == <span class="stringliteral">"-c"</span>;
-<a name="l00049"></a>00049         albers = arg == <span class="stringliteral">"-a"</span>;
-<a name="l00050"></a>00050         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00051"></a>00051         <span class="keywordflow">try</span> {
-<a name="l00052"></a>00052           <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i =  0; i < 2; ++i) {
-<a name="l00053"></a>00053             <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00054"></a>00054             (i ? lat2 : lat1) = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
-<a name="l00055"></a>00055             <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
-<a name="l00056"></a>00056               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
-<a name="l00057"></a>00057           }
-<a name="l00058"></a>00058         }
-<a name="l00059"></a>00059         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00060"></a>00060           std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00061"></a>00061                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00062"></a>00062           <span class="keywordflow">return</span> 1;
-<a name="l00063"></a>00063         }
-<a name="l00064"></a>00064       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00065"></a>00065         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00066"></a>00066         <span class="keywordflow">try</span> {
-<a name="l00067"></a>00067           <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00068"></a>00068           lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
-<a name="l00069"></a>00069           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00070"></a>00070             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
-<a name="l00071"></a>00071           <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
-<a name="l00072"></a>00072             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
-<a name="l00073"></a>00073           <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
-<a name="l00074"></a>00074         }
-<a name="l00075"></a>00075         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00076"></a>00076           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00077"></a>00077                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00078"></a>00078           <span class="keywordflow">return</span> 1;
-<a name="l00079"></a>00079         }
-<a name="l00080"></a>00080       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
-<a name="l00081"></a>00081         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00082"></a>00082         <span class="keywordflow">try</span> {
-<a name="l00083"></a>00083           k1 = Utility::num<real>(std::string(argv[m]));
-<a name="l00084"></a>00084         }
-<a name="l00085"></a>00085         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00086"></a>00086           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00087"></a>00087                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00088"></a>00088           <span class="keywordflow">return</span> 1;
-<a name="l00089"></a>00089         }
-<a name="l00090"></a>00090       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00091"></a>00091         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00092"></a>00092         <span class="keywordflow">try</span> {
-<a name="l00093"></a>00093           a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00094"></a>00094           f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00095"></a>00095         }
-<a name="l00096"></a>00096         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00097"></a>00097           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00098"></a>00098           <span class="keywordflow">return</span> 1;
-<a name="l00099"></a>00099         }
-<a name="l00100"></a>00100         m += 2;
-<a name="l00101"></a>00101       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00102"></a>00102         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103         istring = argv[m];
-<a name="l00104"></a>00104       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00105"></a>00105         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00106"></a>00106         ifile = argv[m];
-<a name="l00107"></a>00107       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00108"></a>00108         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00109"></a>00109         ofile = argv[m];
-<a name="l00110"></a>00110       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00111"></a>00111         std::cout
-<a name="l00112"></a>00112           << argv[0]
-<a name="l00113"></a>00113           << <span class="stringliteral">": $Id: 28e29944bd28097eaff577dad02e18ea927a1a87 $\n"</span>
-<a name="l00114"></a>00114           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00115"></a>00115         <span class="keywordflow">return</span> 0;
-<a name="l00116"></a>00116       } <span class="keywordflow">else</span>
-<a name="l00117"></a>00117         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00118"></a>00118     }
-<a name="l00119"></a>00119 
-<a name="l00120"></a>00120     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00121"></a>00121       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00122"></a>00122       <span class="keywordflow">return</span> 1;
-<a name="l00123"></a>00123     }
-<a name="l00124"></a>00124     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00125"></a>00125     std::ifstream infile;
-<a name="l00126"></a>00126     std::istringstream instring;
-<a name="l00127"></a>00127     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00128"></a>00128       infile.open(ifile.c_str());
-<a name="l00129"></a>00129       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00130"></a>00130         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00131"></a>00131         <span class="keywordflow">return</span> 1;
-<a name="l00132"></a>00132       }
-<a name="l00133"></a>00133     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00134"></a>00134       std::string::size_type m = 0;
-<a name="l00135"></a>00135       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00136"></a>00136         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00137"></a>00137         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00138"></a>00138           <span class="keywordflow">break</span>;
-<a name="l00139"></a>00139         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00140"></a>00140       }
-<a name="l00141"></a>00141       instring.str(istring);
-<a name="l00142"></a>00142     }
-<a name="l00143"></a>00143     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00144"></a>00144       (!istring.empty() ? &instring : &std::cin);
-<a name="l00145"></a>00145 
-<a name="l00146"></a>00146     std::ofstream outfile;
-<a name="l00147"></a>00147     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00148"></a>00148     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00149"></a>00149       outfile.open(ofile.c_str());
-<a name="l00150"></a>00150       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00151"></a>00151         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00152"></a>00152         <span class="keywordflow">return</span> 1;
-<a name="l00153"></a>00153       }
-<a name="l00154"></a>00154     }
-<a name="l00155"></a>00155     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00041"></a>00041     std::string istring, ifile, ofile, cdelim;
+<a name="l00042"></a>00042     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00045"></a>00045       std::string arg(argv[m]);
+<a name="l00046"></a>00046       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00047"></a>00047         reverse = <span class="keyword">true</span>;
+<a name="l00048"></a>00048       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-a"</span>) {
+<a name="l00049"></a>00049         lcc = arg == <span class="stringliteral">"-c"</span>;
+<a name="l00050"></a>00050         albers = arg == <span class="stringliteral">"-a"</span>;
+<a name="l00051"></a>00051         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00052"></a>00052         <span class="keywordflow">try</span> {
+<a name="l00053"></a>00053           <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 2; ++i) {
+<a name="l00054"></a>00054             <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00055"></a>00055             (i ? lat2 : lat1) = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
+<a name="l00056"></a>00056             <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
+<a name="l00057"></a>00057               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
+<a name="l00058"></a>00058           }
+<a name="l00059"></a>00059         }
+<a name="l00060"></a>00060         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00061"></a>00061           std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00062"></a>00062                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00063"></a>00063           <span class="keywordflow">return</span> 1;
+<a name="l00064"></a>00064         }
+<a name="l00065"></a>00065       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00066"></a>00066         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00067"></a>00067         <span class="keywordflow">try</span> {
+<a name="l00068"></a>00068           <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00069"></a>00069           lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
+<a name="l00070"></a>00070           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00071"></a>00071             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
+<a name="l00072"></a>00072           <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
+<a name="l00073"></a>00073             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
+<a name="l00074"></a>00074           <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
+<a name="l00075"></a>00075         }
+<a name="l00076"></a>00076         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00077"></a>00077           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00078"></a>00078                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00079"></a>00079           <span class="keywordflow">return</span> 1;
+<a name="l00080"></a>00080         }
+<a name="l00081"></a>00081       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
+<a name="l00082"></a>00082         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00083"></a>00083         <span class="keywordflow">try</span> {
+<a name="l00084"></a>00084           k1 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00085"></a>00085         }
+<a name="l00086"></a>00086         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00087"></a>00087           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00088"></a>00088                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00089"></a>00089           <span class="keywordflow">return</span> 1;
+<a name="l00090"></a>00090         }
+<a name="l00091"></a>00091       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00092"></a>00092         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00093"></a>00093         <span class="keywordflow">try</span> {
+<a name="l00094"></a>00094           a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00095"></a>00095           f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00096"></a>00096         }
+<a name="l00097"></a>00097         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00098"></a>00098           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00099"></a>00099           <span class="keywordflow">return</span> 1;
+<a name="l00100"></a>00100         }
+<a name="l00101"></a>00101         m += 2;
+<a name="l00102"></a>00102       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00103"></a>00103         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104         istring = argv[m];
+<a name="l00105"></a>00105       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00106"></a>00106         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107         ifile = argv[m];
+<a name="l00108"></a>00108       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00109"></a>00109         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00110"></a>00110         ofile = argv[m];
+<a name="l00111"></a>00111       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00112"></a>00112         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00113"></a>00113         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00114"></a>00114           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00115"></a>00115           <span class="keywordflow">return</span> 1;
+<a name="l00116"></a>00116         }
+<a name="l00117"></a>00117         lsep = argv[m][0];
+<a name="l00118"></a>00118       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00119"></a>00119         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00120"></a>00120         cdelim = argv[m];
+<a name="l00121"></a>00121       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00122"></a>00122         std::cout
+<a name="l00123"></a>00123           << argv[0]
+<a name="l00124"></a>00124           << <span class="stringliteral">": $Id: 8efb8dcae1b8e8f1abac4d5d6f60e8730ecaa81c $\n"</span>
+<a name="l00125"></a>00125           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00126"></a>00126         <span class="keywordflow">return</span> 0;
+<a name="l00127"></a>00127       } <span class="keywordflow">else</span>
+<a name="l00128"></a>00128         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00129"></a>00129     }
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00132"></a>00132       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00133"></a>00133       <span class="keywordflow">return</span> 1;
+<a name="l00134"></a>00134     }
+<a name="l00135"></a>00135     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00136"></a>00136     std::ifstream infile;
+<a name="l00137"></a>00137     std::istringstream instring;
+<a name="l00138"></a>00138     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00139"></a>00139       infile.open(ifile.c_str());
+<a name="l00140"></a>00140       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00141"></a>00141         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00142"></a>00142         <span class="keywordflow">return</span> 1;
+<a name="l00143"></a>00143       }
+<a name="l00144"></a>00144     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00145"></a>00145       std::string::size_type m = 0;
+<a name="l00146"></a>00146       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00147"></a>00147         m = istring.find(lsep, m);
+<a name="l00148"></a>00148         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00149"></a>00149           <span class="keywordflow">break</span>;
+<a name="l00150"></a>00150         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00151"></a>00151       }
+<a name="l00152"></a>00152       instring.str(istring);
+<a name="l00153"></a>00153     }
+<a name="l00154"></a>00154     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00155"></a>00155       (!istring.empty() ? &instring : &std::cin);
 <a name="l00156"></a>00156 
-<a name="l00157"></a>00157     <span class="keywordflow">if</span> (!(lcc || albers)) {
-<a name="l00158"></a>00158       std::cerr << <span class="stringliteral">"Must specify \"-c lat1 lat2\" or "</span>
-<a name="l00159"></a>00159                 << <span class="stringliteral">"\"-a lat1 lat2\"\n"</span>;
-<a name="l00160"></a>00160       <span class="keywordflow">return</span> 1;
-<a name="l00161"></a>00161     }
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> lproj =
-<a name="l00164"></a>00164       lcc ? <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(a, f, lat1, lat2, k1)
-<a name="l00165"></a>00165       : LambertConformalConic(1, 0, 0, 0, 1);
-<a name="l00166"></a>00166     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> aproj =
-<a name="l00167"></a>00167       albers ? <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(a, f, lat1, lat2, k1)
-<a name="l00168"></a>00168       : AlbersEqualArea(1, 0, 0, 0, 1);
-<a name="l00169"></a>00169 
-<a name="l00170"></a>00170     std::string s;
-<a name="l00171"></a>00171     <span class="keywordtype">int</span> retval = 0;
-<a name="l00172"></a>00172     std::cout << std::fixed;
-<a name="l00173"></a>00173     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00174"></a>00174       <span class="keywordflow">try</span> {
-<a name="l00175"></a>00175         std::istringstream str(s);
-<a name="l00176"></a>00176         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, gamma, k;
-<a name="l00177"></a>00177         std::string stra, strb;
-<a name="l00178"></a>00178         <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00179"></a>00179           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00180"></a>00180         <span class="keywordflow">if</span> (reverse) {
-<a name="l00181"></a>00181           x = Utility::num<real>(stra);
-<a name="l00182"></a>00182           y = Utility::num<real>(strb);
-<a name="l00183"></a>00183         } <span class="keywordflow">else</span>
-<a name="l00184"></a>00184           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00185"></a>00185         std::string strc;
-<a name="l00186"></a>00186         <span class="keywordflow">if</span> (str >> strc)
-<a name="l00187"></a>00187           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00188"></a>00188         <span class="keywordflow">if</span> (reverse) {
-<a name="l00189"></a>00189           <span class="keywordflow">if</span> (lcc)
-<a name="l00190"></a>00190             lproj.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00191"></a>00191           <span class="keywordflow">else</span>
-<a name="l00192"></a>00192             aproj.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00193"></a>00193           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00194"></a>00194                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00195"></a>00195                   << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00196"></a>00196                   << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00197"></a>00197         } <span class="keywordflow">else</span> {
-<a name="l00198"></a>00198           <span class="keywordflow">if</span> (lcc)
-<a name="l00199"></a>00199             lproj.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00200"></a>00200           <span class="keywordflow">else</span>
-<a name="l00201"></a>00201             aproj.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00202"></a>00202           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00203"></a>00203                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00204"></a>00204                   << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00205"></a>00205                   << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00206"></a>00206         }
-<a name="l00207"></a>00207       }
-<a name="l00208"></a>00208       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00209"></a>00209         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00210"></a>00210         retval = 1;
-<a name="l00211"></a>00211       }
-<a name="l00212"></a>00212     }
-<a name="l00213"></a>00213     <span class="keywordflow">return</span> retval;
-<a name="l00214"></a>00214   }
-<a name="l00215"></a>00215   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00216"></a>00216     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00217"></a>00217     <span class="keywordflow">return</span> 1;
-<a name="l00218"></a>00218   }
-<a name="l00219"></a>00219   <span class="keywordflow">catch</span> (...) {
-<a name="l00220"></a>00220     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00221"></a>00221     <span class="keywordflow">return</span> 1;
-<a name="l00222"></a>00222   }
-<a name="l00223"></a>00223 }
+<a name="l00157"></a>00157     std::ofstream outfile;
+<a name="l00158"></a>00158     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00159"></a>00159     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00160"></a>00160       outfile.open(ofile.c_str());
+<a name="l00161"></a>00161       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00162"></a>00162         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00163"></a>00163         <span class="keywordflow">return</span> 1;
+<a name="l00164"></a>00164       }
+<a name="l00165"></a>00165     }
+<a name="l00166"></a>00166     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168     <span class="keywordflow">if</span> (!(lcc || albers)) {
+<a name="l00169"></a>00169       std::cerr << <span class="stringliteral">"Must specify \"-c lat1 lat2\" or "</span>
+<a name="l00170"></a>00170                 << <span class="stringliteral">"\"-a lat1 lat2\"\n"</span>;
+<a name="l00171"></a>00171       <span class="keywordflow">return</span> 1;
+<a name="l00172"></a>00172     }
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> lproj =
+<a name="l00175"></a>00175       lcc ? <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(a, f, lat1, lat2, k1)
+<a name="l00176"></a>00176       : LambertConformalConic(1, 0, 0, 0, 1);
+<a name="l00177"></a>00177     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> aproj =
+<a name="l00178"></a>00178       albers ? <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(a, f, lat1, lat2, k1)
+<a name="l00179"></a>00179       : AlbersEqualArea(1, 0, 0, 0, 1);
+<a name="l00180"></a>00180 
+<a name="l00181"></a>00181     std::string s;
+<a name="l00182"></a>00182     <span class="keywordtype">int</span> retval = 0;
+<a name="l00183"></a>00183     std::cout << std::fixed;
+<a name="l00184"></a>00184     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00185"></a>00185       <span class="keywordflow">try</span> {
+<a name="l00186"></a>00186         std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00187"></a>00187         <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00188"></a>00188           std::string::size_type m = s.find(cdelim);
+<a name="l00189"></a>00189           <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00190"></a>00190             eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00191"></a>00191             s = s.substr(0, m);
+<a name="l00192"></a>00192           }
+<a name="l00193"></a>00193         }
+<a name="l00194"></a>00194         std::istringstream str(s);
+<a name="l00195"></a>00195         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, gamma, k;
+<a name="l00196"></a>00196         std::string stra, strb;
+<a name="l00197"></a>00197         <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00198"></a>00198           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00199"></a>00199         <span class="keywordflow">if</span> (reverse) {
+<a name="l00200"></a>00200           x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00201"></a>00201           y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00202"></a>00202         } <span class="keywordflow">else</span>
+<a name="l00203"></a>00203           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00204"></a>00204         std::string strc;
+<a name="l00205"></a>00205         <span class="keywordflow">if</span> (str >> strc)
+<a name="l00206"></a>00206           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00207"></a>00207         <span class="keywordflow">if</span> (reverse) {
+<a name="l00208"></a>00208           <span class="keywordflow">if</span> (lcc)
+<a name="l00209"></a>00209             lproj.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00210"></a>00210           <span class="keywordflow">else</span>
+<a name="l00211"></a>00211             aproj.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00212"></a>00212           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00213"></a>00213                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00214"></a>00214                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00215"></a>00215                   << Utility::str<real>(k, 16) << eol;
+<a name="l00216"></a>00216         } <span class="keywordflow">else</span> {
+<a name="l00217"></a>00217           <span class="keywordflow">if</span> (lcc)
+<a name="l00218"></a>00218             lproj.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00219"></a>00219           <span class="keywordflow">else</span>
+<a name="l00220"></a>00220             aproj.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00221"></a>00221           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00222"></a>00222                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00223"></a>00223                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00224"></a>00224                   << Utility::str<real>(k, 16) << eol;
+<a name="l00225"></a>00225         }
+<a name="l00226"></a>00226       }
+<a name="l00227"></a>00227       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00228"></a>00228         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00229"></a>00229         retval = 1;
+<a name="l00230"></a>00230       }
+<a name="l00231"></a>00231     }
+<a name="l00232"></a>00232     <span class="keywordflow">return</span> retval;
+<a name="l00233"></a>00233   }
+<a name="l00234"></a>00234   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00235"></a>00235     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00236"></a>00236     <span class="keywordflow">return</span> 1;
+<a name="l00237"></a>00237   }
+<a name="l00238"></a>00238   <span class="keywordflow">catch</span> (...) {
+<a name="l00239"></a>00239     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00240"></a>00240     <span class="keywordflow">return</span> 1;
+<a name="l00241"></a>00241   }
+<a name="l00242"></a>00242 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Constants_8hpp.html b/doc/html/Constants_8hpp.html
index e91ec4d..b5b105f 100644
--- a/doc/html/Constants_8hpp.html
+++ b/doc/html/Constants_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Constants.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,20 +85,18 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">GEOGRAPHICLIB_CONSTANTS_HPP</a>   "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">GEOGRAPHICLIB_CONSTANTS_HPP</a>   "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(cond, reason)   { enum{ STATIC_ASSERT_ENUM = 1/int(cond) }; }</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(x)   namespace { char VAR_ ## x [] = x; }</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">GeographicLib::Constants</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -92,7 +105,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_CONSTANTS_HPP   "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_CONSTANTS_HPP   "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"</td>
         </tr>
       </table>
 </div>
@@ -126,11 +139,11 @@ Defines</h2></td></tr>
       </table>
 </div>
 <div class="memdoc">
-<p>A compile-time assert. Use C++0X static_assert, if available. </p>
+<p>A compile-time assert. Use C++11 static_assert, if available. </p>
 
 <p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00025">25</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="Accumulator_8hpp_source.html#l00116">GeographicLib::Accumulator< real >::Accumulator()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, <a class="el" href="TransverseMercator_8cpp_source.html#l00060">GeographicLib::TransverseMercator::TransverseMercator()</a>, and <a class="el" href="SphericalEngine_8cpp_source.html#l00159">GeographicLib::SphericalEngine::Value()</a>.</p>
+<p>Referenced by <a class="el" href="Accumulator_8hpp_source.html#l00116">GeographicLib::Accumulator< real >::Accumulator()</a>, <a class="el" href="Geoid_8cpp_source.html#l00208">GeographicLib::Geoid::Geoid()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00159">GeographicLib::SphericalEngine::Value()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, and <a class="el" href="TransverseMercator_8cpp_source.htm [...]
 
 </div>
 </div>
@@ -170,8 +183,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Constants_8hpp_source.html b/doc/html/Constants_8hpp_source.html
index 42a0b75..79d7163 100644
--- a/doc/html/Constants_8hpp_source.html
+++ b/doc/html/Constants_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Constants.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,19 +67,19 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Constants.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Constants class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CONSTANTS_HPP)</span>
 <a name="l00011"></a><a class="code" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_CONSTANTS_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <GeographicLib/Config.h></span>
 <a name="l00015"></a>00015 <span class="comment"></span>
 <a name="l00016"></a>00016 <span class="comment">/**</span>
-<a name="l00017"></a>00017 <span class="comment"> * A compile-time assert.  Use C++0X static_assert, if available.</span>
+<a name="l00017"></a>00017 <span class="comment"> * A compile-time assert.  Use C++11 static_assert, if available.</span>
 <a name="l00018"></a>00018 <span class="comment"> **********************************************************************/</span>
 <a name="l00019"></a>00019 <span class="preprocessor">#if !defined(STATIC_ASSERT)</span>
 <a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#  if defined(__GXX_EXPERIMENTAL_CXX0X__)</span>
@@ -119,26 +134,26 @@
 <a name="l00069"></a>00069 <span class="comment">   * Example of use:</span>
 <a name="l00070"></a>00070 <span class="comment">   * \include example-Constants.cpp</span>
 <a name="l00071"></a>00071 <span class="comment">   **********************************************************************/</span>
-<a name="l00072"></a><a class="code" href="classGeographicLib_1_1Constants.html">00072</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a> {
+<a name="l00072"></a>00072   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Constants {
 <a name="l00073"></a>00073   <span class="keyword">private</span>:
-<a name="l00074"></a>00074     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00075"></a>00075     <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>();                <span class="comment">// Disable constructor</span>
+<a name="l00074"></a>00074     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00075"></a>00075     Constants();                <span class="comment">// Disable constructor</span>
 <a name="l00076"></a>00076 
 <a name="l00077"></a>00077   <span class="keyword">public</span>:<span class="comment"></span>
 <a name="l00078"></a>00078 <span class="comment">    /**</span>
 <a name="l00079"></a>00079 <span class="comment">     * A synonym for Math::degree<real>().</span>
 <a name="l00080"></a>00080 <span class="comment">     **********************************************************************/</span>
-<a name="l00081"></a><a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">00081</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">degree</a>() throw() { <span class="keywordflow">return</span> Math::degree<real>(); }< [...]
+<a name="l00081"></a><a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">00081</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">degree</a>() throw() { <span class="keywordflow">return</span> <a class [...]
 <a name="l00082"></a>00082 <span class="comment">    /**</span>
 <a name="l00083"></a>00083 <span class="comment">     * @return the number of radians in an arcminute.</span>
 <a name="l00084"></a>00084 <span class="comment">     **********************************************************************/</span>
-<a name="l00085"></a><a class="code" href="classGeographicLib_1_1Constants.html#a8f8e6d3bd08abb72b686a0f4398b587b">00085</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> arcminute() throw()
-<a name="l00086"></a>00086     { <span class="keywordflow">return</span> Math::degree<real>() / 60; }<span class="comment"></span>
+<a name="l00085"></a><a class="code" href="classGeographicLib_1_1Constants.html#a8f8e6d3bd08abb72b686a0f4398b587b">00085</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real arcminute() throw()
+<a name="l00086"></a>00086     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() / 60; }<span class="comment"></span>
 <a name="l00087"></a>00087 <span class="comment">    /**</span>
 <a name="l00088"></a>00088 <span class="comment">     * @return the number of radians in an arcsecond.</span>
 <a name="l00089"></a>00089 <span class="comment">     **********************************************************************/</span>
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">00090</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> arcsecond() throw()
-<a name="l00091"></a>00091     { <span class="keywordflow">return</span> Math::degree<real>() / 3600; }
+<a name="l00090"></a><a class="code" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">00090</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real arcsecond() throw()
+<a name="l00091"></a>00091     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() / 3600; }
 <a name="l00092"></a>00092 <span class="comment"></span>
 <a name="l00093"></a>00093 <span class="comment">    /** \name Ellipsoid parameters</span>
 <a name="l00094"></a>00094 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
@@ -147,237 +162,244 @@
 <a name="l00097"></a>00097 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00098"></a>00098 <span class="comment">     * @return the equatorial radius of WGS84 ellipsoid (6378137 m).</span>
 <a name="l00099"></a>00099 <span class="comment">     **********************************************************************/</span>
-<a name="l00100"></a><a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">00100</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_a() throw()
+<a name="l00100"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">00100</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_a() throw()
 <a name="l00101"></a>00101     { <span class="keywordflow">return</span> T(6378137) * meter<T>(); }<span class="comment"></span>
 <a name="l00102"></a>00102 <span class="comment">    /**</span>
 <a name="l00103"></a>00103 <span class="comment">     * A synonym for WGS84_a<real>().</span>
 <a name="l00104"></a>00104 <span class="comment">     **********************************************************************/</span>
-<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">00105</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a>() throw() { <span class="keywordflow">return</span> WGS84_a<real>(); }<span [...]
+<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">00105</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a>() throw() { <span class="keywordflow">return</span> WGS84_a [...]
 <a name="l00106"></a>00106 <span class="comment">    /**</span>
 <a name="l00107"></a>00107 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00108"></a>00108 <span class="comment">     * @return the flattening of WGS84 ellipsoid (1/298.257223563).</span>
 <a name="l00109"></a>00109 <span class="comment">     **********************************************************************/</span>
-<a name="l00110"></a><a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">00110</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_f() throw()
+<a name="l00110"></a><a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">00110</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_f() throw()
 <a name="l00111"></a>00111     { <span class="keywordflow">return</span> T(1) / ( T(298) + T(257223563) / T(1000000000) ); }<span class="comment"></span>
 <a name="l00112"></a>00112 <span class="comment">    /**</span>
 <a name="l00113"></a>00113 <span class="comment">     * A synonym for WGS84_f<real>().</span>
 <a name="l00114"></a>00114 <span class="comment">     **********************************************************************/</span>
-<a name="l00115"></a><a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">00115</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a>() throw() { <span class="keywordflow">return</span> WGS84_f<real>(); }<span [...]
+<a name="l00115"></a><a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">00115</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a>() throw() { <span class="keywordflow">return</span> WGS84_f [...]
 <a name="l00116"></a>00116 <span class="comment">    /**</span>
 <a name="l00117"></a>00117 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00118"></a>00118 <span class="comment">     * @return the gravitational constant of the WGS84 ellipsoid, \e GM, in</span>
 <a name="l00119"></a>00119 <span class="comment">     *   m<sup>3</sup> s<sup>-2</sup>.</span>
 <a name="l00120"></a>00120 <span class="comment">     **********************************************************************/</span>
-<a name="l00121"></a><a class="code" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">00121</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_GM() throw()
+<a name="l00121"></a><a class="code" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">00121</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_GM() throw()
 <a name="l00122"></a>00122     { <span class="keywordflow">return</span> T(3986004) * T(100000000) + T(41800000); }<span class="comment"></span>
 <a name="l00123"></a>00123 <span class="comment">    /**</span>
 <a name="l00124"></a>00124 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00125"></a>00125 <span class="comment">     * @return the angular velocity of the the WGS84 ellipsoid, \e omega, in</span>
 <a name="l00126"></a>00126 <span class="comment">     *   rad s<sup>-1</sup>.</span>
 <a name="l00127"></a>00127 <span class="comment">     **********************************************************************/</span>
-<a name="l00128"></a><a class="code" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">00128</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_omega() throw()
+<a name="l00128"></a><a class="code" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">00128</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_omega() throw()
 <a name="l00129"></a>00129     { <span class="keywordflow">return</span> T(7292115) / (T(1000000) * T(100000)); }<span class="comment"></span>
-<a name="l00130"></a>00130 <span class="comment">    /**</span>
-<a name="l00131"></a>00131 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00132"></a>00132 <span class="comment">     * @return the reciprocal flattening of WGS84 ellipsoid.</span>
-<a name="l00133"></a>00133 <span class="comment">     **********************************************************************/</span>
-<a name="l00134"></a><a class="code" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">00134</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_r() throw()
-<a name="l00135"></a>00135     { <span class="keywordflow">return</span> 1/WGS84_f<T>(); }<span class="comment"></span>
-<a name="l00136"></a>00136 <span class="comment">    /**</span>
-<a name="l00137"></a>00137 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00138"></a>00138 <span class="comment">     * A synonym for WGS84_r<real>().</span>
-<a name="l00139"></a>00139 <span class="comment">     **********************************************************************/</span>
-<a name="l00140"></a><a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">00140</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a>() throw() { <span class="keywordflow">return</span> WGS84_r<real>(); }<span [...]
-<a name="l00141"></a>00141 <span class="comment">    /**</span>
-<a name="l00142"></a>00142 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00143"></a>00143 <span class="comment">     * @return the equatorial radius of GRS80 ellipsoid, \e a, in m.</span>
-<a name="l00144"></a>00144 <span class="comment">     **********************************************************************/</span>
-<a name="l00145"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">00145</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_a() throw()
-<a name="l00146"></a>00146     { <span class="keywordflow">return</span> T(6378137); }<span class="comment"></span>
-<a name="l00147"></a>00147 <span class="comment">    /**</span>
-<a name="l00148"></a>00148 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00149"></a>00149 <span class="comment">     * @return the gravitational constant of the GRS80 ellipsoid, \e GM, in</span>
-<a name="l00150"></a>00150 <span class="comment">     *   m<sup>3</sup> s<sup>-2</sup>.</span>
-<a name="l00151"></a>00151 <span class="comment">     **********************************************************************/</span>
-<a name="l00152"></a><a class="code" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">00152</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_GM() throw()
-<a name="l00153"></a>00153     { <span class="keywordflow">return</span> T(3986005) * T(100000000); }<span class="comment"></span>
-<a name="l00154"></a>00154 <span class="comment">    /**</span>
-<a name="l00155"></a>00155 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00156"></a>00156 <span class="comment">     * @return the angular velocity of the the GRS80 ellipsoid, \e omega, in</span>
-<a name="l00157"></a>00157 <span class="comment">     *   rad s<sup>-1</sup>.</span>
-<a name="l00158"></a>00158 <span class="comment">     *</span>
-<a name="l00159"></a>00159 <span class="comment">     * This is about 2*pi*366.25 / (365.25*24*3600) rad s<sup>-1</sup>.  365.25</span>
-<a name="l00160"></a>00160 <span class="comment">     * is the number of days in a Julian year and 365.35/366.25 converts from</span>
-<a name="l00161"></a>00161 <span class="comment">     * solar days to sidereal days.  Using the number of days in a Gregorian</span>
-<a name="l00162"></a>00162 <span class="comment">     * year (365.2425) results in a worse approximation (because the Gregorian</span>
-<a name="l00163"></a>00163 <span class="comment">     * year includes the precession of the earth's axis).</span>
-<a name="l00164"></a>00164 <span class="comment">     **********************************************************************/</span>
-<a name="l00165"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">00165</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_omega() throw()
-<a name="l00166"></a>00166     { <span class="keywordflow">return</span> T(7292115) / (T(1000000) * T(100000)); }<span class="comment"></span>
-<a name="l00167"></a>00167 <span class="comment">    /**</span>
-<a name="l00168"></a>00168 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00169"></a>00169 <span class="comment">     * @return the dynamical form factor of the GRS80 ellipsoid,</span>
-<a name="l00170"></a>00170 <span class="comment">     *   <i>J</i><sub>2</sub>.</span>
-<a name="l00171"></a>00171 <span class="comment">     **********************************************************************/</span>
-<a name="l00172"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">00172</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_J2() throw()
-<a name="l00173"></a>00173     { <span class="keywordflow">return</span> T(108263) / T(100000000); }<span class="comment"></span>
-<a name="l00174"></a>00174 <span class="comment">    /**</span>
-<a name="l00175"></a>00175 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00176"></a>00176 <span class="comment">     * @return the central scale factor for UTM (0.9996).</span>
-<a name="l00177"></a>00177 <span class="comment">     **********************************************************************/</span>
-<a name="l00178"></a><a class="code" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">00178</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UTM_k0() throw()
-<a name="l00179"></a>00179     {<span class="keywordflow">return</span> T(9996) / T(10000); }<span class="comment"></span>
-<a name="l00180"></a>00180 <span class="comment">    /**</span>
-<a name="l00181"></a>00181 <span class="comment">     * A synonym for UTM_k0<real>().</span>
-<a name="l00182"></a>00182 <span class="comment">     **********************************************************************/</span>
-<a name="l00183"></a><a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">00183</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a>() throw() { <span class="keywordflow">return</span> UTM_k0<real>(); }<span c [...]
-<a name="l00184"></a>00184 <span class="comment">    /**</span>
-<a name="l00185"></a>00185 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00186"></a>00186 <span class="comment">     * @return the central scale factor for UPS (0.994).</span>
-<a name="l00187"></a>00187 <span class="comment">     **********************************************************************/</span>
-<a name="l00188"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">00188</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UPS_k0() throw()
-<a name="l00189"></a>00189     { <span class="keywordflow">return</span> T(994) / T(1000); }<span class="comment"></span>
-<a name="l00190"></a>00190 <span class="comment">    /**</span>
-<a name="l00191"></a>00191 <span class="comment">     * A synonym for UPS_k0<real>().</span>
-<a name="l00192"></a>00192 <span class="comment">     **********************************************************************/</span>
-<a name="l00193"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">00193</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a>() throw() { <span class="keywordflow">return</span> UPS_k0<real>(); }<span c [...]
-<a name="l00194"></a>00194 <span class="comment">    ///@}</span>
-<a name="l00195"></a>00195 <span class="comment"></span><span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment">    /** \name SI units</span>
-<a name="l00197"></a>00197 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment">    ///@{</span>
-<a name="l00199"></a>00199 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00200"></a>00200 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00201"></a>00201 <span class="comment">     * @return the number of meters in a meter.</span>
-<a name="l00202"></a>00202 <span class="comment">     *</span>
-<a name="l00203"></a>00203 <span class="comment">     * This is unity, but this lets the internal system of units be changed if</span>
-<a name="l00204"></a>00204 <span class="comment">     * necessary.</span>
-<a name="l00205"></a>00205 <span class="comment">     **********************************************************************/</span>
-<a name="l00206"></a><a class="code" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">00206</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter</a>() throw() { <span class="keywordflow">return</span> T(1); }<span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment">    /**</span>
-<a name="l00208"></a>00208 <span class="comment">     * A synonym for meter<real>().</span>
-<a name="l00209"></a>00209 <span class="comment">     **********************************************************************/</span>
-<a name="l00210"></a><a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">00210</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a>() throw() { <span class="keywordflow">return</span> meter<real>(); }<span cla [...]
-<a name="l00211"></a>00211 <span class="comment">    /**</span>
-<a name="l00212"></a>00212 <span class="comment">     * @return the number of meters in a kilometer.</span>
-<a name="l00213"></a>00213 <span class="comment">     **********************************************************************/</span>
-<a name="l00214"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">00214</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> kilometer() throw()
-<a name="l00215"></a>00215     { <span class="keywordflow">return</span> 1000 * meter<real>(); }<span class="comment"></span>
-<a name="l00216"></a>00216 <span class="comment">    /**</span>
-<a name="l00217"></a>00217 <span class="comment">     * @return the number of meters in a nautical mile (approximately 1 arc</span>
-<a name="l00218"></a>00218 <span class="comment">     *   minute)</span>
-<a name="l00219"></a>00219 <span class="comment">     **********************************************************************/</span>
-<a name="l00220"></a><a class="code" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">00220</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> nauticalmile() throw()
-<a name="l00221"></a>00221     { <span class="keywordflow">return</span> 1852 * meter<real>(); }
-<a name="l00222"></a>00222 <span class="comment"></span>
-<a name="l00223"></a>00223 <span class="comment">    /**</span>
-<a name="l00224"></a>00224 <span class="comment">     * @tparam T the type of the returned value.</span>
-<a name="l00225"></a>00225 <span class="comment">     * @return the number of square meters in a square meter.</span>
-<a name="l00226"></a>00226 <span class="comment">     *</span>
-<a name="l00227"></a>00227 <span class="comment">     * This is unity, but this lets the internal system of units be changed if</span>
-<a name="l00228"></a>00228 <span class="comment">     * necessary.</span>
-<a name="l00229"></a>00229 <span class="comment">     **********************************************************************/</span>
-<a name="l00230"></a><a class="code" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">00230</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T square_meter() throw()
-<a name="l00231"></a>00231     { <span class="keywordflow">return</span> meter<real>() * meter<real>(); }<span class="comment"></span>
-<a name="l00232"></a>00232 <span class="comment">    /**</span>
-<a name="l00233"></a>00233 <span class="comment">     * A synonym for square_meter<real>().</span>
-<a name="l00234"></a>00234 <span class="comment">     **********************************************************************/</span>
-<a name="l00235"></a><a class="code" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">00235</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> square_meter() throw()
-<a name="l00236"></a>00236     { <span class="keywordflow">return</span> square_meter<real>(); }<span class="comment"></span>
-<a name="l00237"></a>00237 <span class="comment">    /**</span>
-<a name="l00238"></a>00238 <span class="comment">     * @return the number of square meters in a hectare.</span>
-<a name="l00239"></a>00239 <span class="comment">     **********************************************************************/</span>
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">00240</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> hectare() throw()
-<a name="l00241"></a>00241     { <span class="keywordflow">return</span> 10000 * square_meter<real>(); }<span class="comment"></span>
-<a name="l00242"></a>00242 <span class="comment">    /**</span>
-<a name="l00243"></a>00243 <span class="comment">     * @return the number of square meters in a square kilometer.</span>
-<a name="l00244"></a>00244 <span class="comment">     **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">00245</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> square_kilometer() throw()
-<a name="l00246"></a>00246     { <span class="keywordflow">return</span> kilometer() * kilometer(); }<span class="comment"></span>
-<a name="l00247"></a>00247 <span class="comment">    /**</span>
-<a name="l00248"></a>00248 <span class="comment">     * @return the number of square meters in a square nautical mile.</span>
-<a name="l00249"></a>00249 <span class="comment">     **********************************************************************/</span>
-<a name="l00250"></a><a class="code" href="classGeographicLib_1_1Constants.html#a5acf6b2c23d1c9ddf140a6b4e588e88a">00250</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> square_nauticalmile() throw()
-<a name="l00251"></a>00251     { <span class="keywordflow">return</span> nauticalmile() * nauticalmile(); }<span class="comment"></span>
-<a name="l00252"></a>00252 <span class="comment">    ///@}</span>
-<a name="l00253"></a>00253 <span class="comment"></span><span class="comment"></span>
-<a name="l00254"></a>00254 <span class="comment">    /** \name Anachronistic British units</span>
-<a name="l00255"></a>00255 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00256"></a>00256 <span class="comment">    ///@{</span>
-<a name="l00257"></a>00257 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00258"></a>00258 <span class="comment">     * @return the number of meters in an international foot.</span>
-<a name="l00259"></a>00259 <span class="comment">     **********************************************************************/</span>
-<a name="l00260"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac69f40e7e56c71bc72011c7591f7bef9">00260</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> foot() throw()
-<a name="l00261"></a>00261     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0254L) * 12 * meter<real>(); }<span class="comment"></span>
-<a name="l00262"></a>00262 <span class="comment">    /**</span>
-<a name="l00263"></a>00263 <span class="comment">     * @return the number of meters in a yard.</span>
-<a name="l00264"></a>00264 <span class="comment">     **********************************************************************/</span>
-<a name="l00265"></a><a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">00265</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">yard</a>() throw() { <span class="keywordflow">return</span> 3 * foot(); }<span class="commen [...]
-<a name="l00266"></a>00266 <span class="comment">    /**</span>
-<a name="l00267"></a>00267 <span class="comment">     * @return the number of meters in a fathom.</span>
-<a name="l00268"></a>00268 <span class="comment">     **********************************************************************/</span>
-<a name="l00269"></a><a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">00269</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">fathom</a>() throw() { <span class="keywordflow">return</span> 2 * yard(); }<span class="comm [...]
-<a name="l00270"></a>00270 <span class="comment">    /**</span>
-<a name="l00271"></a>00271 <span class="comment">     * @return the number of meters in a chain.</span>
-<a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">00273</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">chain</a>() throw() { <span class="keywordflow">return</span> 22 * yard(); }<span class="comm [...]
-<a name="l00274"></a>00274 <span class="comment">    /**</span>
-<a name="l00275"></a>00275 <span class="comment">     * @return the number of meters in a furlong.</span>
-<a name="l00276"></a>00276 <span class="comment">     **********************************************************************/</span>
-<a name="l00277"></a><a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">00277</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">furlong</a>() throw() { <span class="keywordflow">return</span> 10 * chain(); }<span class="c [...]
-<a name="l00278"></a>00278 <span class="comment">    /**</span>
-<a name="l00279"></a>00279 <span class="comment">     * @return the number of meters in a statute mile.</span>
-<a name="l00280"></a>00280 <span class="comment">     **********************************************************************/</span>
-<a name="l00281"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">00281</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">mile</a>() throw() { <span class="keywordflow">return</span> 8 * furlong(); }<span class="com [...]
-<a name="l00282"></a>00282 <span class="comment">    /**</span>
-<a name="l00283"></a>00283 <span class="comment">     * @return the number of square meters in an acre.</span>
-<a name="l00284"></a>00284 <span class="comment">     **********************************************************************/</span>
-<a name="l00285"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">00285</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">acre</a>() throw() { <span class="keywordflow">return</span> chain() * furlong(); }<span clas [...]
-<a name="l00286"></a>00286 <span class="comment">    /**</span>
-<a name="l00287"></a>00287 <span class="comment">     * @return the number of square meters in a square statute mile.</span>
-<a name="l00288"></a>00288 <span class="comment">     **********************************************************************/</span>
-<a name="l00289"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">00289</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">square_mile</a>() throw() { <span class="keywordflow">return</span> mile() * mile(); }<span c [...]
-<a name="l00290"></a>00290 <span class="comment">    ///@}</span>
-<a name="l00291"></a>00291 <span class="comment"></span><span class="comment"></span>
-<a name="l00292"></a>00292 <span class="comment">    /** \name Anachronistic US units</span>
-<a name="l00293"></a>00293 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00294"></a>00294 <span class="comment">    ///@{</span>
-<a name="l00295"></a>00295 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00296"></a>00296 <span class="comment">     * @return the number of meters in a US survey foot.</span>
-<a name="l00297"></a>00297 <span class="comment">     **********************************************************************/</span>
-<a name="l00298"></a><a class="code" href="classGeographicLib_1_1Constants.html#a7faf6e7435791c0a8061296a79c0be08">00298</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> surveyfoot() throw()
-<a name="l00299"></a>00299     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1200) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3937) * meter<real>(); }<span class="comment"></span>
-<a name="l00300"></a>00300 <span class="comment">    ///@}</span>
-<a name="l00301"></a>00301 <span class="comment"></span>  };
-<a name="l00302"></a>00302 <span class="comment"></span>
-<a name="l00303"></a>00303 <span class="comment">  /**</span>
-<a name="l00304"></a>00304 <span class="comment">   * \brief Exception handling for %GeographicLib</span>
-<a name="l00305"></a>00305 <span class="comment">   *</span>
-<a name="l00306"></a>00306 <span class="comment">   * A class to handle exceptions.  It's derived from std::runtime_error so it</span>
-<a name="l00307"></a>00307 <span class="comment">   * can be caught by the usual catch clauses.</span>
-<a name="l00308"></a>00308 <span class="comment">   *</span>
-<a name="l00309"></a>00309 <span class="comment">   * Example of use:</span>
-<a name="l00310"></a>00310 <span class="comment">   * \include example-GeographicErr.cpp</span>
-<a name="l00311"></a>00311 <span class="comment">   **********************************************************************/</span>
-<a name="l00312"></a><a class="code" href="classGeographicLib_1_1GeographicErr.html">00312</a>   <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a> : <span class="keyword">public</span> std::runtime_error {
-<a name="l00313"></a>00313   <span class="keyword">public</span>:
-<a name="l00314"></a>00314 <span class="comment"></span>
-<a name="l00315"></a>00315 <span class="comment">    /**</span>
-<a name="l00316"></a>00316 <span class="comment">     * Constructor</span>
-<a name="l00317"></a>00317 <span class="comment">     *</span>
-<a name="l00318"></a>00318 <span class="comment">     * @param[in] msg a string message, which is accessible in the catch</span>
-<a name="l00319"></a>00319 <span class="comment">     *   clause, via what().</span>
-<a name="l00320"></a>00320 <span class="comment">     **********************************************************************/</span>
-<a name="l00321"></a><a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">00321</a>     <a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">GeographicErr</a>(<span class="keyword">const</span> std::string& msg) : std::runtime_error(msg) {}
-<a name="l00322"></a>00322   };
-<a name="l00323"></a>00323 
-<a name="l00324"></a>00324 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00130"></a>00130 <span class="comment">    /// \cond SKIP</span>
+<a name="l00131"></a>00131 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00132"></a>00132 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00133"></a>00133 <span class="comment">     * @return the reciprocal flattening of WGS84 ellipsoid.</span>
+<a name="l00134"></a>00134 <span class="comment">     **********************************************************************/</span>
+<a name="l00135"></a>00135     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_r() throw()
+<a name="l00136"></a>00136     { <span class="keywordflow">return</span> 1/WGS84_f<T>(); }<span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment">    /**</span>
+<a name="l00138"></a>00138 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00139"></a>00139 <span class="comment">     * A synonym for WGS84_r<real>().</span>
+<a name="l00140"></a>00140 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">    /// \endcond</span>
+<a name="l00142"></a><a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">00142</a> <span class="comment"></span>    <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a>() throw() { <span class="keywo [...]
+<a name="l00143"></a>00143 <span class="comment">    /**</span>
+<a name="l00144"></a>00144 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00145"></a>00145 <span class="comment">     * @return the equatorial radius of GRS80 ellipsoid, \e a, in m.</span>
+<a name="l00146"></a>00146 <span class="comment">     **********************************************************************/</span>
+<a name="l00147"></a><a class="code" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">00147</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_a() throw()
+<a name="l00148"></a>00148     { <span class="keywordflow">return</span> T(6378137); }<span class="comment"></span>
+<a name="l00149"></a>00149 <span class="comment">    /**</span>
+<a name="l00150"></a>00150 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00151"></a>00151 <span class="comment">     * @return the gravitational constant of the GRS80 ellipsoid, \e GM, in</span>
+<a name="l00152"></a>00152 <span class="comment">     *   m<sup>3</sup> s<sup>-2</sup>.</span>
+<a name="l00153"></a>00153 <span class="comment">     **********************************************************************/</span>
+<a name="l00154"></a><a class="code" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">00154</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_GM() throw()
+<a name="l00155"></a>00155     { <span class="keywordflow">return</span> T(3986005) * T(100000000); }<span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment">    /**</span>
+<a name="l00157"></a>00157 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00158"></a>00158 <span class="comment">     * @return the angular velocity of the the GRS80 ellipsoid, \e omega, in</span>
+<a name="l00159"></a>00159 <span class="comment">     *   rad s<sup>-1</sup>.</span>
+<a name="l00160"></a>00160 <span class="comment">     *</span>
+<a name="l00161"></a>00161 <span class="comment">     * This is about 2*pi*366.25 / (365.25*24*3600) rad s<sup>-1</sup>.  365.25</span>
+<a name="l00162"></a>00162 <span class="comment">     * is the number of days in a Julian year and 365.35/366.25 converts from</span>
+<a name="l00163"></a>00163 <span class="comment">     * solar days to sidereal days.  Using the number of days in a Gregorian</span>
+<a name="l00164"></a>00164 <span class="comment">     * year (365.2425) results in a worse approximation (because the Gregorian</span>
+<a name="l00165"></a>00165 <span class="comment">     * year includes the precession of the earth's axis).</span>
+<a name="l00166"></a>00166 <span class="comment">     **********************************************************************/</span>
+<a name="l00167"></a><a class="code" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">00167</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_omega() throw()
+<a name="l00168"></a>00168     { <span class="keywordflow">return</span> T(7292115) / (T(1000000) * T(100000)); }<span class="comment"></span>
+<a name="l00169"></a>00169 <span class="comment">    /**</span>
+<a name="l00170"></a>00170 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00171"></a>00171 <span class="comment">     * @return the dynamical form factor of the GRS80 ellipsoid,</span>
+<a name="l00172"></a>00172 <span class="comment">     *   <i>J</i><sub>2</sub>.</span>
+<a name="l00173"></a>00173 <span class="comment">     **********************************************************************/</span>
+<a name="l00174"></a><a class="code" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">00174</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_J2() throw()
+<a name="l00175"></a>00175     { <span class="keywordflow">return</span> T(108263) / T(100000000); }<span class="comment"></span>
+<a name="l00176"></a>00176 <span class="comment">    /**</span>
+<a name="l00177"></a>00177 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00178"></a>00178 <span class="comment">     * @return the central scale factor for UTM (0.9996).</span>
+<a name="l00179"></a>00179 <span class="comment">     **********************************************************************/</span>
+<a name="l00180"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">00180</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UTM_k0() throw()
+<a name="l00181"></a>00181     {<span class="keywordflow">return</span> T(9996) / T(10000); }<span class="comment"></span>
+<a name="l00182"></a>00182 <span class="comment">    /**</span>
+<a name="l00183"></a>00183 <span class="comment">     * A synonym for UTM_k0<real>().</span>
+<a name="l00184"></a>00184 <span class="comment">     **********************************************************************/</span>
+<a name="l00185"></a><a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">00185</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a>() throw() { <span class="keywordflow">return</span> UTM_k0&l [...]
+<a name="l00186"></a>00186 <span class="comment">    /**</span>
+<a name="l00187"></a>00187 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00188"></a>00188 <span class="comment">     * @return the central scale factor for UPS (0.994).</span>
+<a name="l00189"></a>00189 <span class="comment">     **********************************************************************/</span>
+<a name="l00190"></a><a class="code" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">00190</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UPS_k0() throw()
+<a name="l00191"></a>00191     { <span class="keywordflow">return</span> T(994) / T(1000); }<span class="comment"></span>
+<a name="l00192"></a>00192 <span class="comment">    /**</span>
+<a name="l00193"></a>00193 <span class="comment">     * A synonym for UPS_k0<real>().</span>
+<a name="l00194"></a>00194 <span class="comment">     **********************************************************************/</span>
+<a name="l00195"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">00195</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a>() throw() { <span class="keywordflow">return</span> UPS_k0&l [...]
+<a name="l00196"></a>00196 <span class="comment">    ///@}</span>
+<a name="l00197"></a>00197 <span class="comment"></span><span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment">    /** \name SI units</span>
+<a name="l00199"></a>00199 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">    ///@{</span>
+<a name="l00201"></a>00201 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00202"></a>00202 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00203"></a>00203 <span class="comment">     * @return the number of meters in a meter.</span>
+<a name="l00204"></a>00204 <span class="comment">     *</span>
+<a name="l00205"></a>00205 <span class="comment">     * This is unity, but this lets the internal system of units be changed if</span>
+<a name="l00206"></a>00206 <span class="comment">     * necessary.</span>
+<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">00208</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter</a>() throw() { <span class="keywordflow">return</span> T(1); }<span class="comment"></span>
+<a name="l00209"></a>00209 <span class="comment">    /**</span>
+<a name="l00210"></a>00210 <span class="comment">     * A synonym for meter<real>().</span>
+<a name="l00211"></a>00211 <span class="comment">     **********************************************************************/</span>
+<a name="l00212"></a><a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">00212</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a>() throw() { <span class="keywordflow">return</span> meter< [...]
+<a name="l00213"></a>00213 <span class="comment">    /**</span>
+<a name="l00214"></a>00214 <span class="comment">     * @return the number of meters in a kilometer.</span>
+<a name="l00215"></a>00215 <span class="comment">     **********************************************************************/</span>
+<a name="l00216"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">00216</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real kilometer() throw()
+<a name="l00217"></a>00217     { <span class="keywordflow">return</span> 1000 * meter<real>(); }<span class="comment"></span>
+<a name="l00218"></a>00218 <span class="comment">    /**</span>
+<a name="l00219"></a>00219 <span class="comment">     * @return the number of meters in a nautical mile (approximately 1 arc</span>
+<a name="l00220"></a>00220 <span class="comment">     *   minute)</span>
+<a name="l00221"></a>00221 <span class="comment">     **********************************************************************/</span>
+<a name="l00222"></a><a class="code" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">00222</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real nauticalmile() throw()
+<a name="l00223"></a>00223     { <span class="keywordflow">return</span> 1852 * meter<real>(); }
+<a name="l00224"></a>00224 <span class="comment"></span>
+<a name="l00225"></a>00225 <span class="comment">    /**</span>
+<a name="l00226"></a>00226 <span class="comment">     * @tparam T the type of the returned value.</span>
+<a name="l00227"></a>00227 <span class="comment">     * @return the number of square meters in a square meter.</span>
+<a name="l00228"></a>00228 <span class="comment">     *</span>
+<a name="l00229"></a>00229 <span class="comment">     * This is unity, but this lets the internal system of units be changed if</span>
+<a name="l00230"></a>00230 <span class="comment">     * necessary.</span>
+<a name="l00231"></a>00231 <span class="comment">     **********************************************************************/</span>
+<a name="l00232"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">00232</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T square_meter() throw()
+<a name="l00233"></a>00233     { <span class="keywordflow">return</span> meter<real>() * meter<real>(); }<span class="comment"></span>
+<a name="l00234"></a>00234 <span class="comment">    /**</span>
+<a name="l00235"></a>00235 <span class="comment">     * A synonym for square_meter<real>().</span>
+<a name="l00236"></a>00236 <span class="comment">     **********************************************************************/</span>
+<a name="l00237"></a><a class="code" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">00237</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real square_meter() throw()
+<a name="l00238"></a>00238     { <span class="keywordflow">return</span> square_meter<real>(); }<span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">    /**</span>
+<a name="l00240"></a>00240 <span class="comment">     * @return the number of square meters in a hectare.</span>
+<a name="l00241"></a>00241 <span class="comment">     **********************************************************************/</span>
+<a name="l00242"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">00242</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real hectare() throw()
+<a name="l00243"></a>00243     { <span class="keywordflow">return</span> 10000 * square_meter<real>(); }<span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">    /**</span>
+<a name="l00245"></a>00245 <span class="comment">     * @return the number of square meters in a square kilometer.</span>
+<a name="l00246"></a>00246 <span class="comment">     **********************************************************************/</span>
+<a name="l00247"></a><a class="code" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">00247</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real square_kilometer() throw()
+<a name="l00248"></a>00248     { <span class="keywordflow">return</span> kilometer() * kilometer(); }<span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment">    /**</span>
+<a name="l00250"></a>00250 <span class="comment">     * @return the number of square meters in a square nautical mile.</span>
+<a name="l00251"></a>00251 <span class="comment">     **********************************************************************/</span>
+<a name="l00252"></a><a class="code" href="classGeographicLib_1_1Constants.html#a5acf6b2c23d1c9ddf140a6b4e588e88a">00252</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real square_nauticalmile() throw()
+<a name="l00253"></a>00253     { <span class="keywordflow">return</span> nauticalmile() * nauticalmile(); }<span class="comment"></span>
+<a name="l00254"></a>00254 <span class="comment">    ///@}</span>
+<a name="l00255"></a>00255 <span class="comment"></span><span class="comment"></span>
+<a name="l00256"></a>00256 <span class="comment">    /** \name Anachronistic British units</span>
+<a name="l00257"></a>00257 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment">    ///@{</span>
+<a name="l00259"></a>00259 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00260"></a>00260 <span class="comment">     * @return the number of meters in an international foot.</span>
+<a name="l00261"></a>00261 <span class="comment">     **********************************************************************/</span>
+<a name="l00262"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac69f40e7e56c71bc72011c7591f7bef9">00262</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real foot() throw()
+<a name="l00263"></a>00263     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0254L) * 12 * meter<real>(); }<span class="comment"></span>
+<a name="l00264"></a>00264 <span class="comment">    /**</span>
+<a name="l00265"></a>00265 <span class="comment">     * @return the number of meters in a yard.</span>
+<a name="l00266"></a>00266 <span class="comment">     **********************************************************************/</span>
+<a name="l00267"></a><a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">00267</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">yard</a>() throw() { <span class="keywordflow">return</span> 3 * foot() [...]
+<a name="l00268"></a>00268 <span class="comment">    /**</span>
+<a name="l00269"></a>00269 <span class="comment">     * @return the number of meters in a fathom.</span>
+<a name="l00270"></a>00270 <span class="comment">     **********************************************************************/</span>
+<a name="l00271"></a><a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">00271</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">fathom</a>() throw() { <span class="keywordflow">return</span> 2 * yard [...]
+<a name="l00272"></a>00272 <span class="comment">    /**</span>
+<a name="l00273"></a>00273 <span class="comment">     * @return the number of meters in a chain.</span>
+<a name="l00274"></a>00274 <span class="comment">     **********************************************************************/</span>
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">00275</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">chain</a>() throw() { <span class="keywordflow">return</span> 22 * yard [...]
+<a name="l00276"></a>00276 <span class="comment">    /**</span>
+<a name="l00277"></a>00277 <span class="comment">     * @return the number of meters in a furlong.</span>
+<a name="l00278"></a>00278 <span class="comment">     **********************************************************************/</span>
+<a name="l00279"></a><a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">00279</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">furlong</a>() throw() { <span class="keywordflow">return</span> 10 * ch [...]
+<a name="l00280"></a>00280 <span class="comment">    /**</span>
+<a name="l00281"></a>00281 <span class="comment">     * @return the number of meters in a statute mile.</span>
+<a name="l00282"></a>00282 <span class="comment">     **********************************************************************/</span>
+<a name="l00283"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">00283</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">mile</a>() throw() { <span class="keywordflow">return</span> 8 * furlon [...]
+<a name="l00284"></a>00284 <span class="comment">    /**</span>
+<a name="l00285"></a>00285 <span class="comment">     * @return the number of square meters in an acre.</span>
+<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span>
+<a name="l00287"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">00287</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">acre</a>() throw() { <span class="keywordflow">return</span> chain() *  [...]
+<a name="l00288"></a>00288 <span class="comment">    /**</span>
+<a name="l00289"></a>00289 <span class="comment">     * @return the number of square meters in a square statute mile.</span>
+<a name="l00290"></a>00290 <span class="comment">     **********************************************************************/</span>
+<a name="l00291"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">00291</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">square_mile</a>() throw() { <span class="keywordflow">return</span> mil [...]
+<a name="l00292"></a>00292 <span class="comment">    ///@}</span>
+<a name="l00293"></a>00293 <span class="comment"></span><span class="comment"></span>
+<a name="l00294"></a>00294 <span class="comment">    /** \name Anachronistic US units</span>
+<a name="l00295"></a>00295 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00296"></a>00296 <span class="comment">    ///@{</span>
+<a name="l00297"></a>00297 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00298"></a>00298 <span class="comment">     * @return the number of meters in a US survey foot.</span>
+<a name="l00299"></a>00299 <span class="comment">     **********************************************************************/</span>
+<a name="l00300"></a><a class="code" href="classGeographicLib_1_1Constants.html#a7faf6e7435791c0a8061296a79c0be08">00300</a>     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real surveyfoot() throw()
+<a name="l00301"></a>00301     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1200) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3937) * meter<real>(); }<span class="comment"></span>
+<a name="l00302"></a>00302 <span class="comment">    ///@}</span>
+<a name="l00303"></a>00303 <span class="comment"></span>  };
+<a name="l00304"></a>00304 <span class="comment"></span>
+<a name="l00305"></a>00305 <span class="comment">  /**</span>
+<a name="l00306"></a>00306 <span class="comment">   * \brief Exception handling for %GeographicLib</span>
+<a name="l00307"></a>00307 <span class="comment">   *</span>
+<a name="l00308"></a>00308 <span class="comment">   * A class to handle exceptions.  It's derived from std::runtime_error so it</span>
+<a name="l00309"></a>00309 <span class="comment">   * can be caught by the usual catch clauses.</span>
+<a name="l00310"></a>00310 <span class="comment">   *</span>
+<a name="l00311"></a>00311 <span class="comment">   * Example of use:</span>
+<a name="l00312"></a>00312 <span class="comment">   * \include example-GeographicErr.cpp</span>
+<a name="l00313"></a>00313 <span class="comment">   **********************************************************************/</span>
+<a name="l00314"></a>00314   <span class="keyword">class </span>GeographicErr : <span class="keyword">public</span> std::runtime_error {
+<a name="l00315"></a>00315   <span class="keyword">public</span>:
+<a name="l00316"></a>00316 <span class="comment"></span>
+<a name="l00317"></a>00317 <span class="comment">    /**</span>
+<a name="l00318"></a>00318 <span class="comment">     * Constructor</span>
+<a name="l00319"></a>00319 <span class="comment">     *</span>
+<a name="l00320"></a>00320 <span class="comment">     * @param[in] msg a string message, which is accessible in the catch</span>
+<a name="l00321"></a>00321 <span class="comment">     *   clause, via what().</span>
+<a name="l00322"></a>00322 <span class="comment">     **********************************************************************/</span>
+<a name="l00323"></a><a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">00323</a>     <a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">GeographicErr</a>(<span class="keyword">const</span> std::string& msg) : std::runtime_error(msg) {}
+<a name="l00324"></a>00324   };
 <a name="l00325"></a>00325 
-<a name="l00326"></a>00326 <span class="preprocessor">#endif  // GEOGRAPHICLIB_CONSTANTS_HPP</span>
+<a name="l00326"></a>00326 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00327"></a>00327 
+<a name="l00328"></a>00328 <span class="preprocessor">#endif  // GEOGRAPHICLIB_CONSTANTS_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/DMS_8cpp.html b/doc/html/DMS_8cpp.html
index 21791b3..cccc9e6 100644
--- a/doc/html/DMS_8cpp.html
+++ b/doc/html/DMS_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: DMS.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -62,17 +77,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">GEOGRAPHICLIB_DMS_CPP</a>   "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">GEOGRAPHICLIB_DMS_CPP</a>   "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="DMS_8cpp_source.html">DMS.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -81,7 +94,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_DMS_CPP   "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_DMS_CPP   "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"</td>
         </tr>
       </table>
 </div>
@@ -92,8 +105,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/DMS_8cpp_source.html b/doc/html/DMS_8cpp_source.html
index 3215ace..e638cfd 100644
--- a/doc/html/DMS_8cpp_source.html
+++ b/doc/html/DMS_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: DMS.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file DMS.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::DMS class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
@@ -60,7 +75,7 @@
 <a name="l00011"></a>00011 <span class="preprocessor">#include <algorithm></span>
 <a name="l00012"></a>00012 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00013"></a>00013 
-<a name="l00014"></a><a class="code" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">00014</a> <span class="preprocessor">#define GEOGRAPHICLIB_DMS_CPP "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"</span>
+<a name="l00014"></a><a class="code" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">00014</a> <span class="preprocessor">#define GEOGRAPHICLIB_DMS_CPP "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"</span>
 <a name="l00015"></a>00015 <span class="preprocessor"></span>
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">GEOGRAPHICLIB_DMS_CPP</a>)
 <a name="l00017"></a>00017 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">GEOGRAPHICLIB_DMS_HPP</a>)
@@ -77,7 +92,7 @@
 <a name="l00028"></a>00028   <span class="keyword">const</span> <span class="keywordtype">string</span> DMS::dmsindicators_ = <span class="stringliteral">"D'\":"</span>;
 <a name="l00029"></a>00029   <span class="keyword">const</span> <span class="keywordtype">string</span> DMS::components_[] = {<span class="stringliteral">"degrees"</span>, <span class="stringliteral">"minutes"</span>, <span class="stringliteral">"seconds"</span>};
 <a name="l00030"></a>00030 
-<a name="l00031"></a><a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">00031</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DMS::Decode(<span class="keyword">const</span> std::string& dms, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a>& ind) {
+<a name="l00031"></a><a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">00031</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DMS::Decode(<span class="keyword">const</span> std::string& dms, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a>& ind) {
 <a name="l00032"></a>00032     <span class="keywordtype">string</span> errormsg;
 <a name="l00033"></a>00033     <span class="keywordtype">string</span> dmsa = dms;
 <a name="l00034"></a>00034     replace(dmsa, <span class="stringliteral">"\xc2\xb0"</span>, <span class="charliteral">'d'</span>); <span class="comment">// degree symbol (U+00b0 = UTF-8 c2 b0)</span>
@@ -245,7 +260,7 @@
 <a name="l00196"></a>00196       <span class="comment">// might be able to offer a better diagnostic).</span>
 <a name="l00197"></a>00197       <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(sign) * (fpieces[0] + (fpieces[1] + fpieces[2] / 60) / 60);
 <a name="l00198"></a>00198     } <span class="keywordflow">while</span> (<span class="keyword">false</span>);
-<a name="l00199"></a>00199     real val = Utility::nummatch<real>(dmsa);
+<a name="l00199"></a>00199     real val = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::nummatch<real>(dmsa);
 <a name="l00200"></a>00200     <span class="keywordflow">if</span> (val == 0)
 <a name="l00201"></a>00201       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(errormsg);
 <a name="l00202"></a>00202     <span class="keywordflow">else</span>
@@ -286,7 +301,7 @@
 <a name="l00237"></a>00237     lon = lon1;
 <a name="l00238"></a>00238   }
 <a name="l00239"></a>00239 
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">00240</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DMS::DecodeAngle(<span class="keyword">const</span> std::string& angstr) {
+<a name="l00240"></a><a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">00240</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DMS::DecodeAngle(<span class="keyword">const</span> std::string& angstr) {
 <a name="l00241"></a>00241     <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind;
 <a name="l00242"></a>00242     real ang = Decode(angstr, ind);
 <a name="l00243"></a>00243     <span class="keywordflow">if</span> (ind != NONE)
@@ -295,7 +310,7 @@
 <a name="l00246"></a>00246     <span class="keywordflow">return</span> ang;
 <a name="l00247"></a>00247   }
 <a name="l00248"></a>00248 
-<a name="l00249"></a><a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">00249</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DMS::DecodeAzimuth(<span class="keyword">const</span> std::string& azistr) {
+<a name="l00249"></a><a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">00249</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DMS::DecodeAzimuth(<span class="keyword">const</span> std::string& azistr) {
 <a name="l00250"></a>00250     <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind;
 <a name="l00251"></a>00251     real azi = Decode(azistr, ind);
 <a name="l00252"></a>00252     <span class="keywordflow">if</span> (ind == LATITUDE)
@@ -307,83 +322,96 @@
 <a name="l00258"></a>00258     <span class="keywordflow">return</span> azi;
 <a name="l00259"></a>00259   }
 <a name="l00260"></a>00260 
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">00261</a>   <span class="keywordtype">string</span> DMS::Encode(real angle, <a class="code" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind) {
-<a name="l00262"></a>00262     <span class="comment">// Assume check on range of input angle has been made by calling</span>
-<a name="l00263"></a>00263     <span class="comment">// routine (which might be able to offer a better diagnostic).</span>
-<a name="l00264"></a>00264     <span class="keywordflow">if</span> (!Math::isfinite(angle))
-<a name="l00265"></a>00265       <span class="keywordflow">return</span> angle < 0 ? string(<span class="stringliteral">"-inf"</span>) :
-<a name="l00266"></a>00266         (angle > 0 ? string(<span class="stringliteral">"inf"</span>) : string(<span class="stringliteral">"nan"</span>));
-<a name="l00267"></a>00267 
-<a name="l00268"></a>00268     <span class="comment">// 15 - 2 * trailing = ceiling(log10(2^53/90/60^trailing)).</span>
-<a name="l00269"></a>00269     <span class="comment">// This suffices to give full real precision for numbers in [-90,90]</span>
-<a name="l00270"></a>00270     prec = min(15 - 2 * <span class="keywordtype">unsigned</span>(trailing), prec);
-<a name="l00271"></a>00271     real scale = 1;
-<a name="l00272"></a>00272     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < unsigned(trailing); ++i)
-<a name="l00273"></a>00273       scale *= 60;
-<a name="l00274"></a>00274     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < prec; ++i)
-<a name="l00275"></a>00275       scale *= 10;
-<a name="l00276"></a>00276     <span class="keywordflow">if</span> (ind == AZIMUTH)
-<a name="l00277"></a>00277       angle -= floor(angle/360) * 360;
-<a name="l00278"></a>00278     <span class="keywordtype">int</span> sign = angle < 0 ? -1 : 1;
-<a name="l00279"></a>00279     angle *= sign;
-<a name="l00280"></a>00280 
-<a name="l00281"></a>00281     <span class="comment">// Break off integer part to preserve precision in manipulation of</span>
-<a name="l00282"></a>00282     <span class="comment">// fractional part.</span>
-<a name="l00283"></a>00283     real
-<a name="l00284"></a>00284       idegree = floor(angle),
-<a name="l00285"></a>00285       fdegree = floor((angle - idegree) * scale + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) / scale;
-<a name="l00286"></a>00286     <span class="keywordflow">if</span> (fdegree >= 1) {
-<a name="l00287"></a>00287       idegree += 1;
-<a name="l00288"></a>00288       fdegree -= 1;
-<a name="l00289"></a>00289     }
-<a name="l00290"></a>00290     real pieces[3] = {fdegree, 0, 0};
-<a name="l00291"></a>00291     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i <= unsigned(trailing); ++i) {
-<a name="l00292"></a>00292       real
-<a name="l00293"></a>00293         ip = floor(pieces[i - 1]),
-<a name="l00294"></a>00294         fp = pieces[i - 1] - ip;
-<a name="l00295"></a>00295       pieces[i] = fp * 60;
-<a name="l00296"></a>00296       pieces[i - 1] = ip;
-<a name="l00297"></a>00297     }
-<a name="l00298"></a>00298     pieces[0] += idegree;
-<a name="l00299"></a>00299     ostringstream s;
-<a name="l00300"></a>00300     s << fixed  << setfill(<span class="charliteral">'0'</span>);
-<a name="l00301"></a>00301     <span class="keywordflow">if</span> (ind == NONE && sign < 0)
-<a name="l00302"></a>00302       s << <span class="charliteral">'-'</span>;
-<a name="l00303"></a>00303     <span class="keywordflow">switch</span> (trailing) {
-<a name="l00304"></a>00304     <span class="keywordflow">case</span> DEGREE:
-<a name="l00305"></a>00305       <span class="keywordflow">if</span> (ind != NONE)
-<a name="l00306"></a>00306         s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2) + prec + (prec ? 1 : 0));
-<a name="l00307"></a>00307       s << setprecision(prec) << pieces[0];
-<a name="l00308"></a>00308       <span class="comment">// Don't include degree designator (d) if it is the trailing component.</span>
-<a name="l00309"></a>00309       <span class="keywordflow">break</span>;
-<a name="l00310"></a>00310     <span class="keywordflow">default</span>:
-<a name="l00311"></a>00311       <span class="keywordflow">if</span> (ind != NONE)
-<a name="l00312"></a>00312         s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2));
-<a name="l00313"></a>00313       s << setprecision(0) << pieces[0] << char(tolower(dmsindicators_[0]));
-<a name="l00314"></a>00314       <span class="keywordflow">switch</span> (trailing) {
-<a name="l00315"></a>00315       <span class="keywordflow">case</span> MINUTE:
-<a name="l00316"></a>00316         s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
-<a name="l00317"></a>00317           << pieces[1] <<  char(tolower(dmsindicators_[1]));
-<a name="l00318"></a>00318         <span class="keywordflow">break</span>;
-<a name="l00319"></a>00319       <span class="keywordflow">case</span> SECOND:
-<a name="l00320"></a>00320         s << setw(2) << pieces[1] <<  char(tolower(dmsindicators_[1]))
-<a name="l00321"></a>00321           << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
-<a name="l00322"></a>00322           << pieces[2] <<  char(tolower(dmsindicators_[2]));
-<a name="l00323"></a>00323         <span class="keywordflow">break</span>;
-<a name="l00324"></a>00324       <span class="keywordflow">default</span>:
-<a name="l00325"></a>00325         <span class="keywordflow">break</span>;
-<a name="l00326"></a>00326       }
-<a name="l00327"></a>00327     }
-<a name="l00328"></a>00328     <span class="keywordflow">if</span> (ind != NONE && ind != AZIMUTH)
-<a name="l00329"></a>00329       s << hemispheres_[(ind == LATITUDE ? 0 : 2) + (sign < 0 ? 0 : 1)];
-<a name="l00330"></a>00330     <span class="keywordflow">return</span> s.str();
-<a name="l00331"></a>00331   }
-<a name="l00332"></a>00332 
-<a name="l00333"></a>00333 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00261"></a><a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">00261</a>   <span class="keywordtype">string</span> DMS::Encode(real angle, <a class="code" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind,
+<a name="l00262"></a>00262                      <span class="keywordtype">char</span> dmssep) {
+<a name="l00263"></a>00263     <span class="comment">// Assume check on range of input angle has been made by calling</span>
+<a name="l00264"></a>00264     <span class="comment">// routine (which might be able to offer a better diagnostic).</span>
+<a name="l00265"></a>00265     <span class="keywordflow">if</span> (!Math::isfinite(angle))
+<a name="l00266"></a>00266       <span class="keywordflow">return</span> angle < 0 ? string(<span class="stringliteral">"-inf"</span>) :
+<a name="l00267"></a>00267         (angle > 0 ? string(<span class="stringliteral">"inf"</span>) : string(<span class="stringliteral">"nan"</span>));
+<a name="l00268"></a>00268 
+<a name="l00269"></a>00269     <span class="comment">// 15 - 2 * trailing = ceiling(log10(2^53/90/60^trailing)).</span>
+<a name="l00270"></a>00270     <span class="comment">// This suffices to give full real precision for numbers in [-90,90]</span>
+<a name="l00271"></a>00271     prec = min(15 - 2 * <span class="keywordtype">unsigned</span>(trailing), prec);
+<a name="l00272"></a>00272     real scale = 1;
+<a name="l00273"></a>00273     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < unsigned(trailing); ++i)
+<a name="l00274"></a>00274       scale *= 60;
+<a name="l00275"></a>00275     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < prec; ++i)
+<a name="l00276"></a>00276       scale *= 10;
+<a name="l00277"></a>00277     <span class="keywordflow">if</span> (ind == AZIMUTH)
+<a name="l00278"></a>00278       angle -= floor(angle/360) * 360;
+<a name="l00279"></a>00279     <span class="keywordtype">int</span> sign = angle < 0 ? -1 : 1;
+<a name="l00280"></a>00280     angle *= sign;
+<a name="l00281"></a>00281 
+<a name="l00282"></a>00282     <span class="comment">// Break off integer part to preserve precision in manipulation of</span>
+<a name="l00283"></a>00283     <span class="comment">// fractional part.</span>
+<a name="l00284"></a>00284     real
+<a name="l00285"></a>00285       idegree = floor(angle),
+<a name="l00286"></a>00286       fdegree = floor((angle - idegree) * scale + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) / scale;
+<a name="l00287"></a>00287     <span class="keywordflow">if</span> (fdegree >= 1) {
+<a name="l00288"></a>00288       idegree += 1;
+<a name="l00289"></a>00289       fdegree -= 1;
+<a name="l00290"></a>00290     }
+<a name="l00291"></a>00291     real pieces[3] = {fdegree, 0, 0};
+<a name="l00292"></a>00292     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i <= unsigned(trailing); ++i) {
+<a name="l00293"></a>00293       real
+<a name="l00294"></a>00294         ip = floor(pieces[i - 1]),
+<a name="l00295"></a>00295         fp = pieces[i - 1] - ip;
+<a name="l00296"></a>00296       pieces[i] = fp * 60;
+<a name="l00297"></a>00297       pieces[i - 1] = ip;
+<a name="l00298"></a>00298     }
+<a name="l00299"></a>00299     pieces[0] += idegree;
+<a name="l00300"></a>00300     ostringstream s;
+<a name="l00301"></a>00301     s << fixed << setfill(<span class="charliteral">'0'</span>);
+<a name="l00302"></a>00302     <span class="keywordflow">if</span> (ind == NONE && sign < 0)
+<a name="l00303"></a>00303       s << <span class="charliteral">'-'</span>;
+<a name="l00304"></a>00304     <span class="keywordflow">switch</span> (trailing) {
+<a name="l00305"></a>00305     <span class="keywordflow">case</span> DEGREE:
+<a name="l00306"></a>00306       <span class="keywordflow">if</span> (ind != NONE)
+<a name="l00307"></a>00307         s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2) + prec + (prec ? 1 : 0));
+<a name="l00308"></a>00308       s << setprecision(prec) << pieces[0];
+<a name="l00309"></a>00309       <span class="comment">// Don't include degree designator (d) if it is the trailing component.</span>
+<a name="l00310"></a>00310       <span class="keywordflow">break</span>;
+<a name="l00311"></a>00311     <span class="keywordflow">default</span>:
+<a name="l00312"></a>00312       <span class="keywordflow">if</span> (ind != NONE)
+<a name="l00313"></a>00313         s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2));
+<a name="l00314"></a>00314       s << setprecision(0) << pieces[0]
+<a name="l00315"></a>00315         << (dmssep ? dmssep : char(tolower(dmsindicators_[0])));
+<a name="l00316"></a>00316       <span class="keywordflow">switch</span> (trailing) {
+<a name="l00317"></a>00317       <span class="keywordflow">case</span> MINUTE:
+<a name="l00318"></a>00318         s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[1];
+<a name="l00319"></a>00319         <span class="keywordflow">if</span> (!dmssep)
+<a name="l00320"></a>00320           s << char(tolower(dmsindicators_[1]));
+<a name="l00321"></a>00321         <span class="keywordflow">break</span>;
+<a name="l00322"></a>00322       <span class="keywordflow">case</span> SECOND:
+<a name="l00323"></a>00323         s << setw(2)
+<a name="l00324"></a>00324           << pieces[1] << (dmssep ? dmssep : char(tolower(dmsindicators_[1])))
+<a name="l00325"></a>00325           << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[2];
+<a name="l00326"></a>00326         <span class="keywordflow">if</span> (!dmssep)
+<a name="l00327"></a>00327           s << char(tolower(dmsindicators_[2]));
+<a name="l00328"></a>00328         <span class="keywordflow">break</span>;
+<a name="l00329"></a>00329       <span class="keywordflow">default</span>:
+<a name="l00330"></a>00330         <span class="keywordflow">break</span>;
+<a name="l00331"></a>00331       }
+<a name="l00332"></a>00332     }
+<a name="l00333"></a>00333     <span class="keywordflow">if</span> (ind != NONE && ind != AZIMUTH)
+<a name="l00334"></a>00334       s << hemispheres_[(ind == LATITUDE ? 0 : 2) + (sign < 0 ? 0 : 1)];
+<a name="l00335"></a>00335     <span class="keywordflow">return</span> s.str();
+<a name="l00336"></a>00336   }
+<a name="l00337"></a>00337 
+<a name="l00338"></a><a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">00338</a>   <span class="keywordtype">string</span> DMS::Encode(real angle, <a class="code" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind)
+<a name="l00339"></a>00339   { <span class="keywordflow">return</span> Encode(angle, trailing, prec, ind, <span class="keywordtype">char</span>(0)); }
+<a name="l00340"></a>00340 
+<a name="l00341"></a>00341 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/DMS_8hpp.html b/doc/html/DMS_8hpp.html
index aaf4416..02659b2 100644
--- a/doc/html/DMS_8hpp.html
+++ b/doc/html/DMS_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: DMS.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,17 +84,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">GEOGRAPHICLIB_DMS_HPP</a>   "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">GEOGRAPHICLIB_DMS_HPP</a>   "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -88,7 +101,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_DMS_HPP   "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_DMS_HPP   "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"</td>
         </tr>
       </table>
 </div>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/DMS_8hpp_source.html b/doc/html/DMS_8hpp_source.html
index d3ab347..0cec90f 100644
--- a/doc/html/DMS_8hpp_source.html
+++ b/doc/html/DMS_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: DMS.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,13 +67,13 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file DMS.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::DMS class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_DMS_HPP)</span>
-<a name="l00011"></a><a class="code" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_DMS_HPP "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"</span>
+<a name="l00011"></a><a class="code" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_DMS_HPP "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"</span>
 <a name="l00012"></a>00012 <span class="preprocessor"></span>
 <a name="l00013"></a>00013 <span class="preprocessor">#include <sstream></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <iomanip></span>
@@ -83,9 +98,9 @@
 <a name="l00033"></a>00033 <span class="comment">   * Example of use:</span>
 <a name="l00034"></a>00034 <span class="comment">   * \include example-DMS.cpp</span>
 <a name="l00035"></a>00035 <span class="comment">   **********************************************************************/</span>
-<a name="l00036"></a><a class="code" href="classGeographicLib_1_1DMS.html">00036</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> {
+<a name="l00036"></a>00036   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> DMS {
 <a name="l00037"></a>00037   <span class="keyword">private</span>:
-<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00038"></a>00038     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00039"></a>00039     <span class="comment">// Replace all occurrences of pat by c</span>
 <a name="l00040"></a>00040     <span class="keyword">static</span> <span class="keywordtype">void</span> replace(std::string& s, <span class="keyword">const</span> std::string& pat, <span class="keywordtype">char</span> c) {
 <a name="l00041"></a>00041       std::string::size_type p = 0;
@@ -101,8 +116,8 @@
 <a name="l00051"></a>00051     <span class="keyword">static</span> <span class="keyword">const</span> std::string digits_;
 <a name="l00052"></a>00052     <span class="keyword">static</span> <span class="keyword">const</span> std::string dmsindicators_;
 <a name="l00053"></a>00053     <span class="keyword">static</span> <span class="keyword">const</span> std::string components_[3];
-<a name="l00054"></a>00054     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NumMatch(<span class="keyword">const</span> std::string& s);
-<a name="l00055"></a>00055     <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>();                      <span class="comment">// Disable constructor</span>
+<a name="l00054"></a>00054     <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NumMatch(<span class="keyword">const</span> std::string& s);
+<a name="l00055"></a>00055     DMS();                      <span class="comment">// Disable constructor</span>
 <a name="l00056"></a>00056 
 <a name="l00057"></a>00057   <span class="keyword">public</span>:
 <a name="l00058"></a>00058 <span class="comment"></span>
@@ -224,7 +239,7 @@
 <a name="l00174"></a>00174 <span class="comment">     * The codes with a leading zero byte, e.g., U+00b0, are accepted in their</span>
 <a name="l00175"></a>00175 <span class="comment">     * UTF-8 coded form 0xc2 0xb0 and as a single byte 0xb0.</span>
 <a name="l00176"></a>00176 <span class="comment">     **********************************************************************/</span>
-<a name="l00177"></a>00177     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Decode(<span class="keyword">const</span> std::string& dms, flag& ind);
+<a name="l00177"></a>00177     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Decode(<span class="keyword">const</span> std::string& dms, flag& ind);
 <a name="l00178"></a>00178 <span class="comment"></span>
 <a name="l00179"></a>00179 <span class="comment">    /**</span>
 <a name="l00180"></a>00180 <span class="comment">     * Convert DMS to an angle.</span>
@@ -238,19 +253,19 @@
 <a name="l00188"></a>00188 <span class="comment">     * -3d20' would need to be represented as - DMS::Decode(3.0, 20.0) or</span>
 <a name="l00189"></a>00189 <span class="comment">     * DMS::Decode(-3.0, -20.0).</span>
 <a name="l00190"></a>00190 <span class="comment">     **********************************************************************/</span>
-<a name="l00191"></a><a class="code" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">00191</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Decode(real d, real m = 0, real s = 0) throw()
+<a name="l00191"></a><a class="code" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">00191</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Decode(real d, real m = 0, real s = 0) throw()
 <a name="l00192"></a>00192     { <span class="keywordflow">return</span> d + (m + s/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(60))/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(60); }
 <a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment">    /**</span>
-<a name="l00195"></a>00195 <span class="comment">     * <b>DEPRECATED</b> (use Utility::num, instead).</span>
-<a name="l00196"></a>00196 <span class="comment">     * Convert a string to a real number.</span>
-<a name="l00197"></a>00197 <span class="comment">     *</span>
-<a name="l00198"></a>00198 <span class="comment">     * @param[in] str string input.</span>
-<a name="l00199"></a>00199 <span class="comment">     * @return decoded number.</span>
-<a name="l00200"></a>00200 <span class="comment">     **********************************************************************/</span>
-<a name="l00201"></a><a class="code" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">00201</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">Decode</a>(<span class="keyword">const</span> std::string& str) {
-<a name="l00202"></a>00202       <span class="keywordflow">return</span> Utility::num<real>(str);
-<a name="l00203"></a>00203     }
+<a name="l00194"></a>00194 <span class="comment">    /// \cond SKIP</span>
+<a name="l00195"></a>00195 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00196"></a>00196 <span class="comment">     * <b>DEPRECATED</b> (use Utility::num, instead).</span>
+<a name="l00197"></a>00197 <span class="comment">     * Convert a string to a real number.</span>
+<a name="l00198"></a>00198 <span class="comment">     *</span>
+<a name="l00199"></a>00199 <span class="comment">     * @param[in] str string input.</span>
+<a name="l00200"></a>00200 <span class="comment">     * @return decoded number.</span>
+<a name="l00201"></a>00201 <span class="comment">     **********************************************************************/</span>
+<a name="l00202"></a>00202     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Decode(<span class="keyword">const</span> std::string& str)
+<a name="l00203"></a>00203     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(str); }
 <a name="l00204"></a>00204 <span class="comment"></span>
 <a name="l00205"></a>00205 <span class="comment">    /**</span>
 <a name="l00206"></a>00206 <span class="comment">     * <b>DEPRECATED</b> (use Utility::fract, instead).</span>
@@ -260,10 +275,10 @@
 <a name="l00210"></a>00210 <span class="comment">     * @param[in] str string input.</span>
 <a name="l00211"></a>00211 <span class="comment">     * @return decoded number.</span>
 <a name="l00212"></a>00212 <span class="comment">     **********************************************************************/</span>
-<a name="l00213"></a><a class="code" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">00213</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">DecodeFraction</a>(<span class="keyword">const</span> std::string& str) {
-<a name="l00214"></a>00214       <span class="keywordflow">return</span> Utility::fract<real>(str);
-<a name="l00215"></a>00215     }
-<a name="l00216"></a>00216 <span class="comment"></span>
+<a name="l00213"></a>00213     <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> DecodeFraction(<span class="keyword">const</span> std::string& str)
+<a name="l00214"></a>00214     { <span class="keywordflow">return</span> Utility::fract<real>(str); }<span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment">    /// \endcond</span>
+<a name="l00216"></a>00216 <span class="comment"></span><span class="comment"></span>
 <a name="l00217"></a>00217 <span class="comment">    /**</span>
 <a name="l00218"></a>00218 <span class="comment">     * Convert a pair of strings to latitude and longitude.</span>
 <a name="l00219"></a>00219 <span class="comment">     *</span>
@@ -295,7 +310,7 @@
 <a name="l00245"></a>00245 <span class="comment">     * No hemisphere designator is allowed and no check is done on the range of</span>
 <a name="l00246"></a>00246 <span class="comment">     * the result.</span>
 <a name="l00247"></a>00247 <span class="comment">     **********************************************************************/</span>
-<a name="l00248"></a>00248     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DecodeAngle(<span class="keyword">const</span> std::string& angstr);
+<a name="l00248"></a>00248     <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> DecodeAngle(<span class="keyword">const</span> std::string& angstr);
 <a name="l00249"></a>00249 <span class="comment"></span>
 <a name="l00250"></a>00250 <span class="comment">    /**</span>
 <a name="l00251"></a>00251 <span class="comment">     * Convert a string to an azimuth in degrees.</span>
@@ -308,7 +323,7 @@
 <a name="l00258"></a>00258 <span class="comment">     * [-180<sup>o</sup>, 360<sup>o</sup>].  Finally the azimuth is reduced to</span>
 <a name="l00259"></a>00259 <span class="comment">     * the range [-180<sup>o</sup>, 180<sup>o</sup>).</span>
 <a name="l00260"></a>00260 <span class="comment">     **********************************************************************/</span>
-<a name="l00261"></a>00261     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DecodeAzimuth(<span class="keyword">const</span> std::string& azistr);
+<a name="l00261"></a>00261     <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> DecodeAzimuth(<span class="keyword">const</span> std::string& azistr);
 <a name="l00262"></a>00262 <span class="comment"></span>
 <a name="l00263"></a>00263 <span class="comment">    /**</span>
 <a name="l00264"></a>00264 <span class="comment">     * Convert angle (in degrees) into a DMS string (using d, ', and &quot;).</span>
@@ -319,84 +334,117 @@
 <a name="l00269"></a>00269 <span class="comment">     * @param[in] prec the number of digits after the decimal point for the</span>
 <a name="l00270"></a>00270 <span class="comment">     *   trailing component.</span>
 <a name="l00271"></a>00271 <span class="comment">     * @param[in] ind DMS::flag value indicated additional formatting.</span>
-<a name="l00272"></a>00272 <span class="comment">     * @return formatted string</span>
-<a name="l00273"></a>00273 <span class="comment">     *</span>
-<a name="l00274"></a>00274 <span class="comment">     * The interpretation of \e ind is as follows:</span>
-<a name="l00275"></a>00275 <span class="comment">     * - ind == DMS::NONE, signed result no leading zeros on degrees except in</span>
-<a name="l00276"></a>00276 <span class="comment">     *   the units place, e.g., -8d03'.</span>
-<a name="l00277"></a>00277 <span class="comment">     * - ind == DMS::LATITUDE, trailing N or S hemisphere designator, no sign,</span>
-<a name="l00278"></a>00278 <span class="comment">     *   pad degrees to 2 digits, e.g., 08d03'S.</span>
-<a name="l00279"></a>00279 <span class="comment">     * - ind == DMS::LONGITUDE, trailing E or W hemisphere designator, no</span>
-<a name="l00280"></a>00280 <span class="comment">     *   sign, pad degrees to 3 digits, e.g., 008d03'W.</span>
-<a name="l00281"></a>00281 <span class="comment">     * - ind == DMS::AZIMUTH, convert to the range [0, 360<sup>o</sup>), no</span>
-<a name="l00282"></a>00282 <span class="comment">     *   sign, pad degrees to 3 digits, , e.g., 351d57'.</span>
-<a name="l00283"></a>00283 <span class="comment">     * .</span>
-<a name="l00284"></a>00284 <span class="comment">     * The integer parts of the minutes and seconds components are always given</span>
-<a name="l00285"></a>00285 <span class="comment">     * with 2 digits.</span>
-<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span>
-<a name="l00287"></a>00287     <span class="keyword">static</span> std::string Encode(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angle, component trailing, <span class="keywordtype">unsigned</span> prec,
-<a name="l00288"></a>00288                               flag ind = NONE);
-<a name="l00289"></a>00289 <span class="comment"></span>
-<a name="l00290"></a>00290 <span class="comment">    /**</span>
-<a name="l00291"></a>00291 <span class="comment">     * Convert angle into a DMS string (using d, ', and &quot;) selecting the</span>
-<a name="l00292"></a>00292 <span class="comment">     * trailing component based on the precision.</span>
-<a name="l00293"></a>00293 <span class="comment">     *</span>
-<a name="l00294"></a>00294 <span class="comment">     * @param[in] angle input angle (degrees)</span>
-<a name="l00295"></a>00295 <span class="comment">     * @param[in] prec the precision relative to 1 degree.</span>
-<a name="l00296"></a>00296 <span class="comment">     * @param[in] ind DMS::flag value indicated additional formatting.</span>
-<a name="l00297"></a>00297 <span class="comment">     * @return formatted string</span>
-<a name="l00298"></a>00298 <span class="comment">     *</span>
-<a name="l00299"></a>00299 <span class="comment">     * \e prec indicates the precision relative to 1 degree, e.g., \e prec = 3</span>
-<a name="l00300"></a>00300 <span class="comment">     * gives a result accurate to 0.1' and \e prec = 4 gives a result accurate</span>
-<a name="l00301"></a>00301 <span class="comment">     * to 1&quot;.  \e ind is interpreted as in DMS::Encode with the additional</span>
-<a name="l00302"></a>00302 <span class="comment">     * facility that DMS::NUMBER represents \e angle as a number in fixed</span>
-<a name="l00303"></a>00303 <span class="comment">     * format with precision \e prec.</span>
-<a name="l00304"></a>00304 <span class="comment">     **********************************************************************/</span>
-<a name="l00305"></a><a class="code" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">00305</a>     <span class="keyword">static</span> std::string <a class="code" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">Encode</a>(real angle, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind = NONE) {
-<a name="l00306"></a>00306       <span class="keywordflow">return</span> ind == NUMBER ? Utility::str<real>(angle, int(prec)) :
-<a name="l00307"></a>00307         Encode(angle,
-<a name="l00308"></a>00308                prec < 2 ? DEGREE : (prec < 4 ? MINUTE : SECOND),
-<a name="l00309"></a>00309                prec < 2 ? prec : (prec < 4 ? prec - 2 : prec - 4),
-<a name="l00310"></a>00310                ind);
-<a name="l00311"></a>00311     }
-<a name="l00312"></a>00312 <span class="comment"></span>
-<a name="l00313"></a>00313 <span class="comment">    /**</span>
-<a name="l00314"></a>00314 <span class="comment">     * Split angle into degrees and minutes</span>
-<a name="l00315"></a>00315 <span class="comment">     *</span>
-<a name="l00316"></a>00316 <span class="comment">     * @param[in] ang angle (degrees)</span>
-<a name="l00317"></a>00317 <span class="comment">     * @param[out] d degrees (an integer returned as a real)</span>
-<a name="l00318"></a>00318 <span class="comment">     * @param[out] m arc minutes.</span>
-<a name="l00319"></a>00319 <span class="comment">     **********************************************************************/</span>
-<a name="l00320"></a><a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">00320</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a>(real ang, real& d, real& m) <span class="keywordflow">throw</span>() {
-<a name="l00321"></a>00321       d = int(ang); m = 60 * (ang - d);
-<a name="l00322"></a>00322     }
-<a name="l00323"></a>00323 <span class="comment"></span>
-<a name="l00324"></a>00324 <span class="comment">    /**</span>
-<a name="l00325"></a>00325 <span class="comment">     * Split angle into degrees and minutes and seconds.</span>
-<a name="l00326"></a>00326 <span class="comment">     *</span>
-<a name="l00327"></a>00327 <span class="comment">     * @param[in] ang angle (degrees)</span>
-<a name="l00328"></a>00328 <span class="comment">     * @param[out] d degrees (an integer returned as a real)</span>
-<a name="l00329"></a>00329 <span class="comment">     * @param[out] m arc minutes (an integer returned as a real)</span>
-<a name="l00330"></a>00330 <span class="comment">     * @param[out] s arc seconds.</span>
+<a name="l00272"></a>00272 <span class="comment">     * @param[in] dmssep if non-null, use as the DMS separator character</span>
+<a name="l00273"></a>00273 <span class="comment">     *   (instead of d, ', &quot; delimiters).</span>
+<a name="l00274"></a>00274 <span class="comment">     * @return formatted string</span>
+<a name="l00275"></a>00275 <span class="comment">     *</span>
+<a name="l00276"></a>00276 <span class="comment">     * The interpretation of \e ind is as follows:</span>
+<a name="l00277"></a>00277 <span class="comment">     * - ind == DMS::NONE, signed result no leading zeros on degrees except in</span>
+<a name="l00278"></a>00278 <span class="comment">     *   the units place, e.g., -8d03'.</span>
+<a name="l00279"></a>00279 <span class="comment">     * - ind == DMS::LATITUDE, trailing N or S hemisphere designator, no sign,</span>
+<a name="l00280"></a>00280 <span class="comment">     *   pad degrees to 2 digits, e.g., 08d03'S.</span>
+<a name="l00281"></a>00281 <span class="comment">     * - ind == DMS::LONGITUDE, trailing E or W hemisphere designator, no</span>
+<a name="l00282"></a>00282 <span class="comment">     *   sign, pad degrees to 3 digits, e.g., 008d03'W.</span>
+<a name="l00283"></a>00283 <span class="comment">     * - ind == DMS::AZIMUTH, convert to the range [0, 360<sup>o</sup>), no</span>
+<a name="l00284"></a>00284 <span class="comment">     *   sign, pad degrees to 3 digits, , e.g., 351d57'.</span>
+<a name="l00285"></a>00285 <span class="comment">     * .</span>
+<a name="l00286"></a>00286 <span class="comment">     * The integer parts of the minutes and seconds components are always given</span>
+<a name="l00287"></a>00287 <span class="comment">     * with 2 digits.</span>
+<a name="l00288"></a>00288 <span class="comment">     **********************************************************************/</span>
+<a name="l00289"></a>00289     <span class="keyword">static</span> std::string Encode(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angle, component trailing, <span class="keywordtype">unsigned</span> prec,
+<a name="l00290"></a>00290                               flag ind, <span class="keywordtype">char</span> dmssep);
+<a name="l00291"></a>00291 <span class="comment"></span>
+<a name="l00292"></a>00292 <span class="comment">    /**</span>
+<a name="l00293"></a>00293 <span class="comment">     * Convert angle (in degrees) into a DMS string (using d, ', and &quot;).</span>
+<a name="l00294"></a>00294 <span class="comment">     *</span>
+<a name="l00295"></a>00295 <span class="comment">     * @param[in] angle input angle (degrees)</span>
+<a name="l00296"></a>00296 <span class="comment">     * @param[in] trailing DMS::component value indicating the trailing units</span>
+<a name="l00297"></a>00297 <span class="comment">     *   on the string and this is given as a decimal number if necessary.</span>
+<a name="l00298"></a>00298 <span class="comment">     * @param[in] prec the number of digits after the decimal point for the</span>
+<a name="l00299"></a>00299 <span class="comment">     *   trailing component.</span>
+<a name="l00300"></a>00300 <span class="comment">     * @param[in] ind DMS::flag value indicated additional formatting.</span>
+<a name="l00301"></a>00301 <span class="comment">     * @return formatted string</span>
+<a name="l00302"></a>00302 <span class="comment">     *</span>
+<a name="l00303"></a>00303 <span class="comment">     * <b>COMPATIBILITY NOTE:</b> This function calls</span>
+<a name="l00304"></a>00304 <span class="comment">     * Encode(real, component, unsigned, flag, char) with a 5th</span>
+<a name="l00305"></a>00305 <span class="comment">     * argument of char(0).  At some point,</span>
+<a name="l00306"></a>00306 <span class="comment">     * Encode(real, component, unsigned, flag) and will be withdrawn</span>
+<a name="l00307"></a>00307 <span class="comment">     * and the interface to</span>
+<a name="l00308"></a>00308 <span class="comment">     * Encode(real, component, unsigned, flag, char) changed so that</span>
+<a name="l00309"></a>00309 <span class="comment">     * its 4th and 5th arguments have default values.  This will</span>
+<a name="l00310"></a>00310 <span class="comment">     * preserve source-level compatibility.</span>
+<a name="l00311"></a>00311 <span class="comment">     **********************************************************************/</span>
+<a name="l00312"></a>00312     <span class="keyword">static</span> std::string Encode(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angle, component trailing, <span class="keywordtype">unsigned</span> prec,
+<a name="l00313"></a>00313                               flag ind = NONE);
+<a name="l00314"></a>00314 <span class="comment"></span>
+<a name="l00315"></a>00315 <span class="comment">    /**</span>
+<a name="l00316"></a>00316 <span class="comment">     * Convert angle into a DMS string (using d, ', and &quot;) selecting the</span>
+<a name="l00317"></a>00317 <span class="comment">     * trailing component based on the precision.</span>
+<a name="l00318"></a>00318 <span class="comment">     *</span>
+<a name="l00319"></a>00319 <span class="comment">     * @param[in] angle input angle (degrees)</span>
+<a name="l00320"></a>00320 <span class="comment">     * @param[in] prec the precision relative to 1 degree.</span>
+<a name="l00321"></a>00321 <span class="comment">     * @param[in] ind DMS::flag value indicated additional formatting.</span>
+<a name="l00322"></a>00322 <span class="comment">     * @param[in] dmssep if non-null, use as the DMS separator character</span>
+<a name="l00323"></a>00323 <span class="comment">     *   (instead of d, ', &quot; delimiters).</span>
+<a name="l00324"></a>00324 <span class="comment">     * @return formatted string</span>
+<a name="l00325"></a>00325 <span class="comment">     *</span>
+<a name="l00326"></a>00326 <span class="comment">     * \e prec indicates the precision relative to 1 degree, e.g., \e prec = 3</span>
+<a name="l00327"></a>00327 <span class="comment">     * gives a result accurate to 0.1' and \e prec = 4 gives a result accurate</span>
+<a name="l00328"></a>00328 <span class="comment">     * to 1&quot;.  \e ind is interpreted as in DMS::Encode with the additional</span>
+<a name="l00329"></a>00329 <span class="comment">     * facility that DMS::NUMBER represents \e angle as a number in fixed</span>
+<a name="l00330"></a>00330 <span class="comment">     * format with precision \e prec.</span>
 <a name="l00331"></a>00331 <span class="comment">     **********************************************************************/</span>
-<a name="l00332"></a><a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">00332</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a>(real ang, real& d, real& m, real& s) <span class="keywordflow">throw</span>() {
-<a name="l00333"></a>00333       d = int(ang); ang = 60 * (ang - d);
-<a name="l00334"></a>00334       m = int(ang); s = 60 * (ang - m);
-<a name="l00335"></a>00335     }
-<a name="l00336"></a>00336 
-<a name="l00337"></a>00337   };
-<a name="l00338"></a>00338 
-<a name="l00339"></a>00339 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00340"></a>00340 
-<a name="l00341"></a>00341 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00343"></a>00343 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00344"></a>00344 <span class="preprocessor"></span>
-<a name="l00345"></a>00345 <span class="preprocessor">#endif  // GEOGRAPHICLIB_DMS_HPP</span>
+<a name="l00332"></a><a class="code" href="classGeographicLib_1_1DMS.html#aeb9d338b12e885092a611bda7e52f9f4">00332</a>     <span class="keyword">static</span> std::string Encode(real angle, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind = NONE,
+<a name="l00333"></a>00333                               <span class="keywordtype">char</span> dmssep = <span class="keywordtype">char</span>(0)) {
+<a name="l00334"></a>00334       <span class="keywordflow">return</span> ind == NUMBER ? <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(angle, int(prec)) :
+<a name="l00335"></a>00335         Encode(angle,
+<a name="l00336"></a>00336                prec < 2 ? DEGREE : (prec < 4 ? MINUTE : SECOND),
+<a name="l00337"></a>00337                prec < 2 ? prec : (prec < 4 ? prec - 2 : prec - 4),
+<a name="l00338"></a>00338                ind, dmssep);
+<a name="l00339"></a>00339     }
+<a name="l00340"></a>00340 <span class="comment"></span>
+<a name="l00341"></a>00341 <span class="comment">    /**</span>
+<a name="l00342"></a>00342 <span class="comment">     * Split angle into degrees and minutes</span>
+<a name="l00343"></a>00343 <span class="comment">     *</span>
+<a name="l00344"></a>00344 <span class="comment">     * @param[in] ang angle (degrees)</span>
+<a name="l00345"></a>00345 <span class="comment">     * @param[out] d degrees (an integer returned as a real)</span>
+<a name="l00346"></a>00346 <span class="comment">     * @param[out] m arc minutes.</span>
+<a name="l00347"></a>00347 <span class="comment">     **********************************************************************/</span>
+<a name="l00348"></a><a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">00348</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a>(real ang, real& d, real& m) <span class="keywordflow">throw</span>() {
+<a name="l00349"></a>00349       d = int(ang); m = 60 * (ang - d);
+<a name="l00350"></a>00350     }
+<a name="l00351"></a>00351 <span class="comment"></span>
+<a name="l00352"></a>00352 <span class="comment">    /**</span>
+<a name="l00353"></a>00353 <span class="comment">     * Split angle into degrees and minutes and seconds.</span>
+<a name="l00354"></a>00354 <span class="comment">     *</span>
+<a name="l00355"></a>00355 <span class="comment">     * @param[in] ang angle (degrees)</span>
+<a name="l00356"></a>00356 <span class="comment">     * @param[out] d degrees (an integer returned as a real)</span>
+<a name="l00357"></a>00357 <span class="comment">     * @param[out] m arc minutes (an integer returned as a real)</span>
+<a name="l00358"></a>00358 <span class="comment">     * @param[out] s arc seconds.</span>
+<a name="l00359"></a>00359 <span class="comment">     **********************************************************************/</span>
+<a name="l00360"></a><a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">00360</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a>(real ang, real& d, real& m, real& s) <span class="keywordflow">throw</span>() {
+<a name="l00361"></a>00361       d = int(ang); ang = 60 * (ang - d);
+<a name="l00362"></a>00362       m = int(ang); s = 60 * (ang - m);
+<a name="l00363"></a>00363     }
+<a name="l00364"></a>00364 
+<a name="l00365"></a>00365   };
+<a name="l00366"></a>00366 
+<a name="l00367"></a>00367 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00368"></a>00368 
+<a name="l00369"></a>00369 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00370"></a>00370 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00372"></a>00372 <span class="preprocessor"></span>
+<a name="l00373"></a>00373 <span class="preprocessor">#endif  // GEOGRAPHICLIB_DMS_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/EllipticFunction_8cpp.html b/doc/html/EllipticFunction_8cpp.html
index 92dd295..dc3a8eb 100644
--- a/doc/html/EllipticFunction_8cpp.html
+++ b/doc/html/EllipticFunction_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: EllipticFunction.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP</a>   "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP</a>   "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="EllipticFunction_8cpp_source.html">EllipticFunction.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP   "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP   "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/EllipticFunction_8cpp_source.html b/doc/html/EllipticFunction_8cpp_source.html
index 67a310e..1df701a 100644
--- a/doc/html/EllipticFunction_8cpp_source.html
+++ b/doc/html/EllipticFunction_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: EllipticFunction.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file EllipticFunction.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::EllipticFunction class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="EllipticFunction_8hpp.html" title="Header for GeographicLib::EllipticFunction class.">GeographicLib/EllipticFunction.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</a>)
@@ -68,14 +83,14 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tol_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tol_ =
 <a name="l00023"></a>00023     numeric_limits<real>::epsilon() * <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01);
-<a name="l00024"></a>00024   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolRF_ = pow(3 * tol_, 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6));
-<a name="l00025"></a>00025   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolRD_ =
+<a name="l00024"></a>00024   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolRF_ = pow(3 * tol_, 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6));
+<a name="l00025"></a>00025   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolRD_ =
 <a name="l00026"></a>00026     pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.25) * tol_, 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6));
-<a name="l00027"></a>00027   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolRG0_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2.7) * sqrt(tol_);
-<a name="l00028"></a>00028   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolJAC_ = sqrt(tol_);
-<a name="l00029"></a>00029   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolJAC1_ = sqrt(6 * tol_);
+<a name="l00027"></a>00027   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolRG0_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2.7) * sqrt(tol_);
+<a name="l00028"></a>00028   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolJAC_ = sqrt(tol_);
+<a name="l00029"></a>00029   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolJAC1_ = sqrt(6 * tol_);
 <a name="l00030"></a>00030 
 <a name="l00031"></a>00031   <span class="comment">/*</span>
 <a name="l00032"></a>00032 <span class="comment">   * Implementation of methods given in</span>
@@ -85,7 +100,7 @@
 <a name="l00036"></a>00036 <span class="comment">   *   Numerical Algorithms 10, 13-26 (1995)</span>
 <a name="l00037"></a>00037 <span class="comment">   */</span>
 <a name="l00038"></a>00038 
-<a name="l00039"></a>00039   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::RF(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
+<a name="l00039"></a>00039   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::RF(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
 <a name="l00040"></a>00040     <span class="comment">// Carlson, eqs 2.2 - 2.7</span>
 <a name="l00041"></a>00041     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00042"></a>00042       a0 = (x + y + z)/3,
@@ -113,7 +128,7 @@
 <a name="l00064"></a>00064     <span class="keywordflow">return</span> (1 - e2 / 10 + e3 / 14 + e2 * e2 / 24 - 3 * e2 * e3 / 44) / sqrt(an);
 <a name="l00065"></a>00065   }
 <a name="l00066"></a>00066 
-<a name="l00067"></a>00067   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::RD(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
+<a name="l00067"></a>00067   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::RD(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
 <a name="l00068"></a>00068     <span class="comment">// Carlson, eqs 2.28 - 2.34</span>
 <a name="l00069"></a>00069     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00070"></a>00070       a0 = (x + y + 3 * z)/5,
@@ -149,7 +164,7 @@
 <a name="l00100"></a>00100       + 3 * s;
 <a name="l00101"></a>00101   }
 <a name="l00102"></a>00102 
-<a name="l00103"></a>00103   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::RG0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00103"></a>00103   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::RG0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
 <a name="l00104"></a>00104     <span class="comment">// Carlson, eqs 2.36 - 2.39</span>
 <a name="l00105"></a>00105     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00106"></a>00106       x0 = sqrt(x),
@@ -168,7 +183,7 @@
 <a name="l00119"></a>00119       s += mul * t * t;
 <a name="l00120"></a>00120     }
 <a name="l00121"></a>00121     x0 = (x0 + y0)/2;
-<a name="l00122"></a>00122     <span class="keywordflow">return</span>  (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
+<a name="l00122"></a>00122     <span class="keywordflow">return</span> (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
 <a name="l00123"></a>00123   }
 <a name="l00124"></a>00124 
 <a name="l00125"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">00125</a>   EllipticFunction::EllipticFunction(real m) <span class="keywordflow">throw</span>()
@@ -244,7 +259,7 @@
 <a name="l00195"></a>00195     }
 <a name="l00196"></a>00196   }
 <a name="l00197"></a>00197 
-<a name="l00198"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#af1b3b2265bca5d2b52c17ca44dabffa8">00198</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EllipticFunction::E(real sn, real cn, real dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00198"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#af1b3b2265bca5d2b52c17ca44dabffa8">00198</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EllipticFunction::E(real sn, real cn, real dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00199"></a>00199     real
 <a name="l00200"></a>00200       cn2 = cn * cn, dn2 = dn * dn, sn2 = sn * sn,
 <a name="l00201"></a>00201       <span class="comment">// Carlson, eq. 4.6</span>
@@ -259,7 +274,7 @@
 <a name="l00210"></a>00210     <span class="keywordflow">return</span> ei;
 <a name="l00211"></a>00211   }
 <a name="l00212"></a>00212 
-<a name="l00213"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a8be312b5da54b01f2976416aa82e7d08">00213</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EllipticFunction::E(real phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00213"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a8be312b5da54b01f2976416aa82e7d08">00213</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EllipticFunction::E(real phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00214"></a>00214     real sn = sin(phi);
 <a name="l00215"></a>00215     <span class="keywordflow">return</span> E(sn, cos(phi), sqrt(1 - _m * sn * sn));
 <a name="l00216"></a>00216   }
@@ -267,8 +282,13 @@
 <a name="l00218"></a>00218 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/EllipticFunction_8hpp.html b/doc/html/EllipticFunction_8hpp.html
index 0c45263..2001ad3 100644
--- a/doc/html/EllipticFunction_8hpp.html
+++ b/doc/html/EllipticFunction_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: EllipticFunction.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,17 +81,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</a>   "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</a>   "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="EllipticFunction_8hpp_source.html">EllipticFunction.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP   "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP   "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"</td>
         </tr>
       </table>
 </div>
@@ -96,8 +109,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/EllipticFunction_8hpp_source.html b/doc/html/EllipticFunction_8hpp_source.html
index 4fe4b05..50b7287 100644
--- a/doc/html/EllipticFunction_8hpp_source.html
+++ b/doc/html/EllipticFunction_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: EllipticFunction.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file EllipticFunction.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::EllipticFunction class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)</span>
 <a name="l00011"></a><a class="code" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 
@@ -93,22 +108,22 @@
 <a name="l00043"></a>00043 <span class="comment">   * Example of use:</span>
 <a name="l00044"></a>00044 <span class="comment">   * \include example-EllipticFunction.cpp</span>
 <a name="l00045"></a>00045 <span class="comment">   **********************************************************************/</span>
-<a name="l00046"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html">00046</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> {
+<a name="l00046"></a>00046   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> EllipticFunction {
 <a name="l00047"></a>00047   <span class="keyword">private</span>:
-<a name="l00048"></a>00048     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00049"></a>00049     <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00050"></a>00050     <span class="keyword">static</span> <span class="keyword">const</span> real tolRF_;
-<a name="l00051"></a>00051     <span class="keyword">static</span> <span class="keyword">const</span> real tolRD_;
-<a name="l00052"></a>00052     <span class="keyword">static</span> <span class="keyword">const</span> real tolRG0_;
-<a name="l00053"></a>00053     <span class="keyword">static</span> <span class="keyword">const</span> real tolJAC_;
-<a name="l00054"></a>00054     <span class="keyword">static</span> <span class="keyword">const</span> real tolJAC1_;
+<a name="l00048"></a>00048     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00049"></a>00049     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00050"></a>00050     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolRF_;
+<a name="l00051"></a>00051     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolRD_;
+<a name="l00052"></a>00052     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolRG0_;
+<a name="l00053"></a>00053     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolJAC_;
+<a name="l00054"></a>00054     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolJAC1_;
 <a name="l00055"></a>00055     <span class="keyword">enum</span> { num_ = 10 }; <span class="comment">// Max depth required for sncndn.  Probably 5 is enough.</span>
-<a name="l00056"></a>00056     <span class="keyword">static</span> real RF(real x, real y, real z) <span class="keywordflow">throw</span>();
-<a name="l00057"></a>00057     <span class="keyword">static</span> real RD(real x, real y, real z) <span class="keywordflow">throw</span>();
-<a name="l00058"></a>00058     <span class="keyword">static</span> real RG0(real x, real y) <span class="keywordflow">throw</span>();
-<a name="l00059"></a>00059     real _m, _m1;
+<a name="l00056"></a>00056     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> RF(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>();
+<a name="l00057"></a>00057     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> RD(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>();
+<a name="l00058"></a>00058     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> RG0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>();
+<a name="l00059"></a>00059     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _m, _m1;
 <a name="l00060"></a>00060     <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _init;
-<a name="l00061"></a>00061     <span class="keyword">mutable</span> real _kc, _ec, _kec;
+<a name="l00061"></a>00061     <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _kc, _ec, _kec;
 <a name="l00062"></a>00062     <span class="keywordtype">bool</span> Init() <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00063"></a>00063   <span class="keyword">public</span>:
 <a name="l00064"></a>00064 <span class="comment"></span>
@@ -118,33 +133,33 @@
 <a name="l00068"></a>00068 <span class="comment">     * @param[in] m the parameter which must lie in [0, 1].  (No checking</span>
 <a name="l00069"></a>00069 <span class="comment">     *   is done.)</span>
 <a name="l00070"></a>00070 <span class="comment">     **********************************************************************/</span>
-<a name="l00071"></a>00071     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a>(real m) <span class="keywordflow">throw</span>();
+<a name="l00071"></a>00071     <span class="keyword">explicit</span> EllipticFunction(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> m) <span class="keywordflow">throw</span>();
 <a name="l00072"></a>00072 <span class="comment"></span>
 <a name="l00073"></a>00073 <span class="comment">    /**</span>
 <a name="l00074"></a>00074 <span class="comment">     * @return the parameter \e m.</span>
 <a name="l00075"></a>00075 <span class="comment">     **********************************************************************/</span>
-<a name="l00076"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">00076</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">m</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m; }
+<a name="l00076"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">00076</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">m</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m; }
 <a name="l00077"></a>00077 <span class="comment"></span>
 <a name="l00078"></a>00078 <span class="comment">    /**</span>
 <a name="l00079"></a>00079 <span class="comment">     * @return the complementary parameter \e m' = (1 - \e m).</span>
 <a name="l00080"></a>00080 <span class="comment">     **********************************************************************/</span>
-<a name="l00081"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">00081</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m1; }
+<a name="l00081"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">00081</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m1; }
 <a name="l00082"></a>00082 <span class="comment"></span>
 <a name="l00083"></a>00083 <span class="comment">    /**</span>
 <a name="l00084"></a>00084 <span class="comment">     * @return the complete integral of first kind, \e K(\e m).</span>
 <a name="l00085"></a>00085 <span class="comment">     **********************************************************************/</span>
-<a name="l00086"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">00086</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">K</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kc; }
+<a name="l00086"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">00086</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">K</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kc; }
 <a name="l00087"></a>00087 <span class="comment"></span>
 <a name="l00088"></a>00088 <span class="comment">    /**</span>
 <a name="l00089"></a>00089 <span class="comment">     * @return the complete integral of second kind, \e E(\e m).</span>
 <a name="l00090"></a>00090 <span class="comment">     **********************************************************************/</span>
-<a name="l00091"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">00091</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _ec; }
+<a name="l00091"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">00091</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _ec; }
 <a name="l00092"></a>00092 <span class="comment"></span>
 <a name="l00093"></a>00093 <span class="comment">    /**</span>
 <a name="l00094"></a>00094 <span class="comment">     * @return the difference \e K(\e m) - \e E(\e m) (which can be computed</span>
 <a name="l00095"></a>00095 <span class="comment">     *   directly).</span>
 <a name="l00096"></a>00096 <span class="comment">     **********************************************************************/</span>
-<a name="l00097"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">00097</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">KE</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kec; }
+<a name="l00097"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">00097</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">KE</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kec; }
 <a name="l00098"></a>00098 <span class="comment"></span>
 <a name="l00099"></a>00099 <span class="comment">    /**</span>
 <a name="l00100"></a>00100 <span class="comment">     * The Jacobi elliptic functions.</span>
@@ -162,7 +177,7 @@
 <a name="l00112"></a>00112 <span class="comment">     * @param[in] phi</span>
 <a name="l00113"></a>00113 <span class="comment">     * @return int sqrt(1 -  \e m sin<sup>2</sup>(\e phi)) \e dphi.</span>
 <a name="l00114"></a>00114 <span class="comment">     **********************************************************************/</span>
-<a name="l00115"></a>00115     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00115"></a>00115     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00116"></a>00116 <span class="comment"></span>
 <a name="l00117"></a>00117 <span class="comment">    /**</span>
 <a name="l00118"></a>00118 <span class="comment">     * The incomplete integral of the second kind in terms of Jacobi elliptic</span>
@@ -177,7 +192,7 @@
 <a name="l00127"></a>00127 <span class="comment">     * phi), \e cn = cos(\e phi), \e dn = sqrt(1 - \e m sin<sup>2</sup>(\e</span>
 <a name="l00128"></a>00128 <span class="comment">     * phi)).</span>
 <a name="l00129"></a>00129 <span class="comment">     **********************************************************************/</span>
-<a name="l00130"></a>00130     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00130"></a>00130     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dn) <s [...]
 <a name="l00131"></a>00131   };
 <a name="l00132"></a>00132 
 <a name="l00133"></a>00133 
@@ -186,8 +201,13 @@
 <a name="l00136"></a>00136 <span class="preprocessor">#endif  // GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoConvert.1.html b/doc/html/GeoConvert.1.html
index 518911d..ad7f237 100644
--- a/doc/html/GeoConvert.1.html
+++ b/doc/html/GeoConvert.1.html
@@ -48,10 +48,12 @@
 </p>
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
-<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-:</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ]
+[ <strong>-p</strong> <em>prec</em> ] [ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -68,7 +70,7 @@ is used (<em>a</em> = 6378137 m, <em>f</em> = 1/298.257223563).</p>
 <dt><strong><a name="geographic" class="item"><strong>geographic</strong></a></strong></dt>
 
 <dd>
-<p>2 tokens (output options <strong>-g</strong> or <strong>-d</strong>) given as <em>latitude</em>
+<p>2 tokens (output options <strong>-g</strong>, <strong>-d</strong>, or <strong>-:</strong>) given as <em>latitude</em>
 <em>longitude</em> using decimal degrees or degrees minutes seconds.  d, ',
 and " are used to denote degrees, minutes, and seconds, with the least
 significant designator optional.  (See <a href="#quoting">QUOTING</a> for how to
@@ -125,6 +127,12 @@ grid square.  For example,</p>
 <dd>
 <p>output latitude and longitude using degrees, minutes, and seconds (DMS).</p>
 </dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
 <dt><strong><a name="u" class="item"><strong>-u</strong></a></strong></dt>
 
 <dd>
@@ -179,6 +187,15 @@ square instead of the center; see <a href="#mgrs">MGRS</a>.</p>
 this can be overridden by a hemisphere designator, <em>N</em>, <em>S</em>,<em>E</em>,
 <em>W</em>).</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -204,8 +221,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -315,7 +338,7 @@ file <code>input.txt</code> should just contain the plain coordinates.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <pre>
    echo 38SMB4488 | GeoConvert         => 33.33424 44.40363
-   echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25"N 044d24'13.06"E
+   echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
    echo 38SMB4488 | GeoConvert -u      => 38N 444500 3688500
    echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488</pre>
 <p>
diff --git a/doc/html/GeoConvert_8cpp.html b/doc/html/GeoConvert_8cpp.html
index ebb01b1..e54c2f9 100644
--- a/doc/html/GeoConvert_8cpp.html
+++ b/doc/html/GeoConvert_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoConvert.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for geographic coordinate conversions. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o GeoConvert \ <a class="el" href="GeoConvert_8cpp.html" title="Command line utility for geographic coordinate conversions.">GeoConvert.cpp</a> \ ../src/DMS.cpp \ ../src/GeoCoords.cpp \ ../src/MGRS.cpp \ ../src/PolarStereographic.cpp \ ../src/TransverseMercator.cpp \ ../src/UTMUPS.cpp</p>
 <p>See the <a href="GeoConvert.1.html">man page</a> for usage information. </p>
 
@@ -102,13 +117,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="GeoConvert_8cpp_source.html#l00034">34</a> of file <a class="el" href="GeoConvert_8cpp_source.html">GeoConvert.cpp</a>.</p>
 
-<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00186">GeographicLib::UTMUPS::DecodeZone()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00104">GeographicLib::UTMUPS::MATCH</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00144">GeographicLib::UTMUPS::MAXZONE</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00128">GeographicLib::UTMUPS::MINZONE</a>, <a class="el" href="GeoCoords_8cpp_source.html#l00027">GeographicLib::GeoCoords::Reset()</a>, <a class="el" href="UTMUPS_8h [...]
+<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00186">GeographicLib::UTMUPS::DecodeZone()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00128">GeographicLib::UTMUPS::MINZONE</a>, and <a class="el" href="UTMUPS_8hpp_source.html#l00144">GeographicLib::UTMUPS::MAXZONE</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoConvert_8cpp_source.html b/doc/html/GeoConvert_8cpp_source.html
index b408944..0d3aaab 100644
--- a/doc/html/GeoConvert_8cpp_source.html
+++ b/doc/html/GeoConvert_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoConvert.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeoConvert.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geographic coordinate conversions</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -83,175 +98,203 @@
 <a name="l00034"></a><a class="code" href="GeoConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00034</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00035"></a>00035   <span class="keywordflow">try</span> {
 <a name="l00036"></a>00036     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00037"></a>00037     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00037"></a>00037     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00038"></a>00038     <span class="keyword">enum</span> { GEOGRAPHIC, <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>, <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>, <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>, CONVERGENCE };
 <a name="l00039"></a>00039     <span class="keywordtype">int</span> outputmode = GEOGRAPHIC;
 <a name="l00040"></a>00040     <span class="keywordtype">int</span> prec = 0;
-<a name="l00041"></a>00041     <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">UTMUPS::MATCH</a>;
+<a name="l00041"></a>00041     <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::MATCH;
 <a name="l00042"></a>00042     <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, swaplatlong = <span class="keyword">false</span>;
-<a name="l00043"></a>00043     std::string istring, ifile, ofile;
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00046"></a>00046       std::string arg(argv[m]);
-<a name="l00047"></a>00047       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-g"</span>)
-<a name="l00048"></a>00048         outputmode = GEOGRAPHIC;
-<a name="l00049"></a>00049       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>)
-<a name="l00050"></a>00050         outputmode = <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>;
-<a name="l00051"></a>00051       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-u"</span>)
-<a name="l00052"></a>00052         outputmode = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>;
-<a name="l00053"></a>00053       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-m"</span>)
-<a name="l00054"></a>00054         outputmode = <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>;
-<a name="l00055"></a>00055       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>)
-<a name="l00056"></a>00056         outputmode = CONVERGENCE;
-<a name="l00057"></a>00057       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>)
-<a name="l00058"></a>00058         centerp = <span class="keyword">false</span>;
-<a name="l00059"></a>00059       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-w"</span>)
-<a name="l00060"></a>00060         swaplatlong = <span class="keyword">true</span>;
-<a name="l00061"></a>00061       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00062"></a>00062         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00063"></a>00063         <span class="keywordflow">try</span> {
-<a name="l00064"></a>00064           prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00065"></a>00065         }
-<a name="l00066"></a>00066         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00067"></a>00067           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00068"></a>00068           <span class="keywordflow">return</span> 1;
-<a name="l00069"></a>00069         }
-<a name="l00070"></a>00070       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
-<a name="l00071"></a>00071         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00072"></a>00072         std::string zonestr(argv[m]);
-<a name="l00073"></a>00073         <span class="keywordflow">try</span> {
-<a name="l00074"></a>00074           <span class="keywordtype">bool</span> northp;
-<a name="l00075"></a>00075           <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zonestr, zone, northp);
-<a name="l00076"></a>00076         }
-<a name="l00077"></a>00077         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00078"></a>00078           std::istringstream str(zonestr);
-<a name="l00079"></a>00079           <span class="keywordtype">char</span> c;
-<a name="l00080"></a>00080           <span class="keywordflow">if</span> (!(str >> zone) || (str >> c)) {
-<a name="l00081"></a>00081             std::cerr << <span class="stringliteral">"Zone "</span> << zonestr
-<a name="l00082"></a>00082                       << <span class="stringliteral">" is not a number or zone+hemisphere\n"</span>;
-<a name="l00083"></a>00083             <span class="keywordflow">return</span> 1;
-<a name="l00084"></a>00084           }
-<a name="l00085"></a>00085           <span class="keywordflow">if</span> (!(zone >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zone <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
-<a name="l00086"></a>00086             std::cerr << <span class="stringliteral">"Zone "</span> << zone << <span class="stringliteral">" not in [0, 60]\n"</span>;
-<a name="l00087"></a>00087             <span class="keywordflow">return</span> 1;
-<a name="l00088"></a>00088           }
-<a name="l00089"></a>00089         }
-<a name="l00090"></a>00090       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
-<a name="l00091"></a>00091         zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>;
-<a name="l00092"></a>00092       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>)
-<a name="l00093"></a>00093         zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aacc8f89ac6144b1e445ca21cbe9a2533">UTMUPS::UTM</a>;
-<a name="l00094"></a>00094       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00095"></a>00095         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00096"></a>00096         istring = argv[m];
-<a name="l00097"></a>00097       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00098"></a>00098         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00099"></a>00099         ifile = argv[m];
-<a name="l00100"></a>00100       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00101"></a>00101         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00102"></a>00102         ofile = argv[m];
-<a name="l00103"></a>00103       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00104"></a>00104         std::cout
-<a name="l00105"></a>00105           << argv[0]
-<a name="l00106"></a>00106           << <span class="stringliteral">": $Id: e4d712327e515af5fc1f322b2bd55ddc3f91546a $\n"</span>
-<a name="l00107"></a>00107           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00108"></a>00108         <span class="keywordflow">return</span> 0;
-<a name="l00109"></a>00109       } <span class="keywordflow">else</span>
-<a name="l00110"></a>00110         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00111"></a>00111     }
-<a name="l00112"></a>00112 
-<a name="l00113"></a>00113     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00114"></a>00114       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00115"></a>00115       <span class="keywordflow">return</span> 1;
-<a name="l00116"></a>00116     }
-<a name="l00117"></a>00117     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00118"></a>00118     std::ifstream infile;
-<a name="l00119"></a>00119     std::istringstream instring;
-<a name="l00120"></a>00120     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00121"></a>00121       infile.open(ifile.c_str());
-<a name="l00122"></a>00122       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00123"></a>00123         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00124"></a>00124         <span class="keywordflow">return</span> 1;
-<a name="l00125"></a>00125       }
-<a name="l00126"></a>00126     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00127"></a>00127       std::string::size_type m = 0;
-<a name="l00128"></a>00128       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00129"></a>00129         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00130"></a>00130         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00131"></a>00131           <span class="keywordflow">break</span>;
-<a name="l00132"></a>00132         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00133"></a>00133       }
-<a name="l00134"></a>00134       instring.str(istring);
-<a name="l00135"></a>00135     }
-<a name="l00136"></a>00136     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00137"></a>00137       (!istring.empty() ? &instring : &std::cin);
-<a name="l00138"></a>00138 
-<a name="l00139"></a>00139     std::ofstream outfile;
-<a name="l00140"></a>00140     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00141"></a>00141     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00142"></a>00142       outfile.open(ofile.c_str());
-<a name="l00143"></a>00143       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00144"></a>00144         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00145"></a>00145         <span class="keywordflow">return</span> 1;
-<a name="l00146"></a>00146       }
-<a name="l00147"></a>00147     }
-<a name="l00148"></a>00148     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
-<a name="l00149"></a>00149 
-<a name="l00150"></a>00150     <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
-<a name="l00151"></a>00151     std::string s;
-<a name="l00152"></a>00152     std::string os;
-<a name="l00153"></a>00153     <span class="keywordtype">int</span> retval = 0;
-<a name="l00154"></a>00154 
-<a name="l00155"></a>00155     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00156"></a>00156       <span class="keywordflow">try</span> {
-<a name="l00157"></a>00157         p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s, centerp, swaplatlong);
-<a name="l00158"></a>00158         p.SetAltZone(zone);
-<a name="l00159"></a>00159         <span class="keywordflow">switch</span> (outputmode) {
-<a name="l00160"></a>00160         <span class="keywordflow">case</span> GEOGRAPHIC:
-<a name="l00161"></a>00161           os = p.GeoRepresentation(prec, swaplatlong);
-<a name="l00162"></a>00162           <span class="keywordflow">break</span>;
-<a name="l00163"></a>00163         <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>:
-<a name="l00164"></a>00164           os = p.DMSRepresentation(prec, swaplatlong);
-<a name="l00165"></a>00165           <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166         <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>:
-<a name="l00167"></a>00167           os = p.AltUTMUPSRepresentation(prec);
-<a name="l00168"></a>00168           <span class="keywordflow">break</span>;
-<a name="l00169"></a>00169         <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>:
-<a name="l00170"></a>00170           os = p.AltMGRSRepresentation(prec);
-<a name="l00171"></a>00171           <span class="keywordflow">break</span>;
-<a name="l00172"></a>00172         <span class="keywordflow">case</span> CONVERGENCE:
-<a name="l00173"></a>00173           {
-<a name="l00174"></a>00174             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00175"></a>00175               gamma = p.AltConvergence(),
-<a name="l00176"></a>00176               k = p.AltScale();
-<a name="l00177"></a>00177             os =
-<a name="l00178"></a>00178               Utility::str<real>(gamma, std::max(-5,std::min(8,prec))+5)
-<a name="l00179"></a>00179               + <span class="stringliteral">" "</span> +
-<a name="l00180"></a>00180               Utility::str<real>(k, std::max(-5,std::min(8,prec))+7);
-<a name="l00181"></a>00181           }
-<a name="l00182"></a>00182         }
-<a name="l00183"></a>00183       }
-<a name="l00184"></a>00184       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00185"></a>00185         <span class="comment">// Write error message to cout so output lines match input lines</span>
-<a name="l00186"></a>00186         os = std::string(<span class="stringliteral">"ERROR: "</span>) + e.what();
-<a name="l00187"></a>00187         retval = 1;
-<a name="l00188"></a>00188       }
-<a name="l00189"></a>00189       *output << os << <span class="stringliteral">"\n"</span>;
-<a name="l00190"></a>00190     }
-<a name="l00191"></a>00191     <span class="keywordflow">return</span> retval;
-<a name="l00192"></a>00192   }
-<a name="l00193"></a>00193   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00194"></a>00194     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00195"></a>00195     <span class="keywordflow">return</span> 1;
-<a name="l00196"></a>00196   }
-<a name="l00197"></a>00197   <span class="keywordflow">catch</span> (...) {
-<a name="l00198"></a>00198     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00199"></a>00199     <span class="keywordflow">return</span> 1;
-<a name="l00200"></a>00200   }
-<a name="l00201"></a>00201 }
+<a name="l00043"></a>00043     std::string istring, ifile, ofile, cdelim;
+<a name="l00044"></a>00044     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>, dmssep = char(0);
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00047"></a>00047       std::string arg(argv[m]);
+<a name="l00048"></a>00048       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-g"</span>)
+<a name="l00049"></a>00049         outputmode = GEOGRAPHIC;
+<a name="l00050"></a>00050       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00051"></a>00051         outputmode = <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>;
+<a name="l00052"></a>00052         dmssep = <span class="charliteral">'\0'</span>;
+<a name="l00053"></a>00053       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-:"</span>) {
+<a name="l00054"></a>00054         outputmode = <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>;
+<a name="l00055"></a>00055         dmssep = <span class="charliteral">':'</span>;
+<a name="l00056"></a>00056       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-u"</span>)
+<a name="l00057"></a>00057         outputmode = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>;
+<a name="l00058"></a>00058       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-m"</span>)
+<a name="l00059"></a>00059         outputmode = <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>;
+<a name="l00060"></a>00060       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>)
+<a name="l00061"></a>00061         outputmode = CONVERGENCE;
+<a name="l00062"></a>00062       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>)
+<a name="l00063"></a>00063         centerp = <span class="keyword">false</span>;
+<a name="l00064"></a>00064       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-w"</span>)
+<a name="l00065"></a>00065         swaplatlong = <span class="keyword">true</span>;
+<a name="l00066"></a>00066       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00067"></a>00067         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00068"></a>00068         <span class="keywordflow">try</span> {
+<a name="l00069"></a>00069           prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00070"></a>00070         }
+<a name="l00071"></a>00071         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00072"></a>00072           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00073"></a>00073           <span class="keywordflow">return</span> 1;
+<a name="l00074"></a>00074         }
+<a name="l00075"></a>00075       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
+<a name="l00076"></a>00076         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077         std::string zonestr(argv[m]);
+<a name="l00078"></a>00078         <span class="keywordflow">try</span> {
+<a name="l00079"></a>00079           <span class="keywordtype">bool</span> northp;
+<a name="l00080"></a>00080           <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zonestr, zone, northp);
+<a name="l00081"></a>00081         }
+<a name="l00082"></a>00082         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00083"></a>00083           std::istringstream str(zonestr);
+<a name="l00084"></a>00084           <span class="keywordtype">char</span> c;
+<a name="l00085"></a>00085           <span class="keywordflow">if</span> (!(str >> zone) || (str >> c)) {
+<a name="l00086"></a>00086             std::cerr << <span class="stringliteral">"Zone "</span> << zonestr
+<a name="l00087"></a>00087                       << <span class="stringliteral">" is not a number or zone+hemisphere\n"</span>;
+<a name="l00088"></a>00088             <span class="keywordflow">return</span> 1;
+<a name="l00089"></a>00089           }
+<a name="l00090"></a>00090           <span class="keywordflow">if</span> (!(zone >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zone <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
+<a name="l00091"></a>00091             std::cerr << <span class="stringliteral">"Zone "</span> << zone << <span class="stringliteral">" not in [0, 60]\n"</span>;
+<a name="l00092"></a>00092             <span class="keywordflow">return</span> 1;
+<a name="l00093"></a>00093           }
+<a name="l00094"></a>00094         }
+<a name="l00095"></a>00095       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
+<a name="l00096"></a>00096         zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::STANDARD;
+<a name="l00097"></a>00097       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>)
+<a name="l00098"></a>00098         zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::UTM;
+<a name="l00099"></a>00099       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00100"></a>00100         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101         istring = argv[m];
+<a name="l00102"></a>00102       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00103"></a>00103         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104         ifile = argv[m];
+<a name="l00105"></a>00105       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00106"></a>00106         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107         ofile = argv[m];
+<a name="l00108"></a>00108       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00109"></a>00109         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00110"></a>00110         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00111"></a>00111           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00112"></a>00112           <span class="keywordflow">return</span> 1;
+<a name="l00113"></a>00113         }
+<a name="l00114"></a>00114         lsep = argv[m][0];
+<a name="l00115"></a>00115       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00116"></a>00116         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00117"></a>00117         cdelim = argv[m];
+<a name="l00118"></a>00118       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00119"></a>00119         std::cout
+<a name="l00120"></a>00120           << argv[0]
+<a name="l00121"></a>00121           << <span class="stringliteral">": $Id: e39b9974b58d123fd979b1c3c086ae3ccccba72d $\n"</span>
+<a name="l00122"></a>00122           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00123"></a>00123         <span class="keywordflow">return</span> 0;
+<a name="l00124"></a>00124       } <span class="keywordflow">else</span>
+<a name="l00125"></a>00125         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00126"></a>00126     }
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00129"></a>00129       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00130"></a>00130       <span class="keywordflow">return</span> 1;
+<a name="l00131"></a>00131     }
+<a name="l00132"></a>00132     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00133"></a>00133     std::ifstream infile;
+<a name="l00134"></a>00134     std::istringstream instring;
+<a name="l00135"></a>00135     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00136"></a>00136       infile.open(ifile.c_str());
+<a name="l00137"></a>00137       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00138"></a>00138         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00139"></a>00139         <span class="keywordflow">return</span> 1;
+<a name="l00140"></a>00140       }
+<a name="l00141"></a>00141     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00142"></a>00142       std::string::size_type m = 0;
+<a name="l00143"></a>00143       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00144"></a>00144         m = istring.find(lsep, m);
+<a name="l00145"></a>00145         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00146"></a>00146           <span class="keywordflow">break</span>;
+<a name="l00147"></a>00147         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00148"></a>00148       }
+<a name="l00149"></a>00149       instring.str(istring);
+<a name="l00150"></a>00150     }
+<a name="l00151"></a>00151     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00152"></a>00152       (!istring.empty() ? &instring : &std::cin);
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154     std::ofstream outfile;
+<a name="l00155"></a>00155     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00156"></a>00156     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00157"></a>00157       outfile.open(ofile.c_str());
+<a name="l00158"></a>00158       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00159"></a>00159         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00160"></a>00160         <span class="keywordflow">return</span> 1;
+<a name="l00161"></a>00161       }
+<a name="l00162"></a>00162     }
+<a name="l00163"></a>00163     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165     <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
+<a name="l00166"></a>00166     std::string s;
+<a name="l00167"></a>00167     std::string os;
+<a name="l00168"></a>00168     <span class="keywordtype">int</span> retval = 0;
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00171"></a>00171       std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00172"></a>00172       <span class="keywordflow">try</span> {
+<a name="l00173"></a>00173         <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00174"></a>00174           std::string::size_type m = s.find(cdelim);
+<a name="l00175"></a>00175           <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00176"></a>00176             eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00177"></a>00177             s = s.substr(0, m);
+<a name="l00178"></a>00178           }
+<a name="l00179"></a>00179         }
+<a name="l00180"></a>00180         p.Reset(s, centerp, swaplatlong);
+<a name="l00181"></a>00181         p.SetAltZone(zone);
+<a name="l00182"></a>00182         <span class="keywordflow">switch</span> (outputmode) {
+<a name="l00183"></a>00183         <span class="keywordflow">case</span> GEOGRAPHIC:
+<a name="l00184"></a>00184           os = p.GeoRepresentation(prec, swaplatlong);
+<a name="l00185"></a>00185           <span class="keywordflow">break</span>;
+<a name="l00186"></a>00186         <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>:
+<a name="l00187"></a>00187           os = p.DMSRepresentation(prec, swaplatlong, dmssep);
+<a name="l00188"></a>00188           <span class="keywordflow">break</span>;
+<a name="l00189"></a>00189         <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>:
+<a name="l00190"></a>00190           os = p.AltUTMUPSRepresentation(prec);
+<a name="l00191"></a>00191           <span class="keywordflow">break</span>;
+<a name="l00192"></a>00192         <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>:
+<a name="l00193"></a>00193           os = p.AltMGRSRepresentation(prec);
+<a name="l00194"></a>00194           <span class="keywordflow">break</span>;
+<a name="l00195"></a>00195         <span class="keywordflow">case</span> CONVERGENCE:
+<a name="l00196"></a>00196           {
+<a name="l00197"></a>00197             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00198"></a>00198               gamma = p.AltConvergence(),
+<a name="l00199"></a>00199               k = p.AltScale();
+<a name="l00200"></a>00200             os =
+<a name="l00201"></a>00201               <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, std::max(-5,std::min(8,prec))+5)
+<a name="l00202"></a>00202               + <span class="stringliteral">" "</span> +
+<a name="l00203"></a>00203               Utility::str<real>(k, std::max(-5,std::min(8,prec))+7);
+<a name="l00204"></a>00204           }
+<a name="l00205"></a>00205         }
+<a name="l00206"></a>00206       }
+<a name="l00207"></a>00207       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00208"></a>00208         <span class="comment">// Write error message to cout so output lines match input lines</span>
+<a name="l00209"></a>00209         os = std::string(<span class="stringliteral">"ERROR: "</span>) + e.what();
+<a name="l00210"></a>00210         retval = 1;
+<a name="l00211"></a>00211       }
+<a name="l00212"></a>00212       *output << os << eol;
+<a name="l00213"></a>00213     }
+<a name="l00214"></a>00214     <span class="keywordflow">return</span> retval;
+<a name="l00215"></a>00215   }
+<a name="l00216"></a>00216   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00217"></a>00217     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00218"></a>00218     <span class="keywordflow">return</span> 1;
+<a name="l00219"></a>00219   }
+<a name="l00220"></a>00220   <span class="keywordflow">catch</span> (...) {
+<a name="l00221"></a>00221     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00222"></a>00222     <span class="keywordflow">return</span> 1;
+<a name="l00223"></a>00223   }
+<a name="l00224"></a>00224 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoCoords_8cpp.html b/doc/html/GeoCoords_8cpp.html
index 40d5ed9..2288d78 100644
--- a/doc/html/GeoCoords_8cpp.html
+++ b/doc/html/GeoCoords_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoCoords.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,17 +80,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">GEOGRAPHICLIB_GEOCOORDS_CPP</a>   "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">GEOGRAPHICLIB_GEOCOORDS_CPP</a>   "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -84,7 +97,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_CPP   "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_CPP   "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"</td>
         </tr>
       </table>
 </div>
@@ -95,8 +108,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoCoords_8cpp_source.html b/doc/html/GeoCoords_8cpp_source.html
index 7f6bcee..3aa7831 100644
--- a/doc/html/GeoCoords_8cpp_source.html
+++ b/doc/html/GeoCoords_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoCoords.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeoCoords.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::GeoCoords class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
@@ -64,7 +79,7 @@
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="DMS_8hpp.html" title="Header for GeographicLib::DMS class.">GeographicLib/DMS.hpp</a>></span>
 <a name="l00016"></a>00016 
 <a name="l00017"></a><a class="code" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">00017</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOCOORDS_CPP \</span>
-<a name="l00018"></a>00018 <span class="preprocessor">  "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">  "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"</span>
 <a name="l00019"></a>00019 <span class="preprocessor"></span>
 <a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">GEOGRAPHICLIB_GEOCOORDS_CPP</a>)
 <a name="l00021"></a>00021 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">GEOGRAPHICLIB_GEOCOORDS_HPP</a>)
@@ -76,7 +91,7 @@
 <a name="l00027"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">00027</a>   <span class="keywordtype">void</span> GeoCoords::Reset(<span class="keyword">const</span> std::string& s, <span class="keywordtype">bool</span> centerp, <span class="keywordtype">bool</span> swaplatlong) {
 <a name="l00028"></a>00028     vector<string> sa;
 <a name="l00029"></a>00029     <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r,"</span>; <span class="comment">// Include comma as a space</span>
-<a name="l00030"></a>00030     <span class="keywordflow">for</span> (string::size_type pos0 = 0, pos1; pos0 != string::npos;) {
+<a name="l00030"></a>00030     <span class="keywordflow">for</span> (string::size_type pos0 = 0, pos1; pos0 != <span class="keywordtype">string</span>::npos;) {
 <a name="l00031"></a>00031       pos1 = s.find_first_not_of(spaces, pos0);
 <a name="l00032"></a>00032       <span class="keywordflow">if</span> (pos1 == string::npos)
 <a name="l00033"></a>00033         <span class="keywordflow">break</span>;
@@ -134,81 +149,90 @@
 <a name="l00085"></a>00085     <span class="keywordflow">return</span> os.str();
 <a name="l00086"></a>00086   }
 <a name="l00087"></a>00087 
-<a name="l00088"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">00088</a>   <span class="keywordtype">string</span> GeoCoords::DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong)<span class="keyword"> const </span>{
-<a name="l00089"></a>00089     prec = max(0, min(10, prec) + 5);
-<a name="l00090"></a>00090     <span class="keywordflow">return</span> DMS::Encode(swaplatlong ? _long : _lat, <span class="keywordtype">unsigned</span>(prec),
-<a name="l00091"></a>00091                        swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE) +
-<a name="l00092"></a>00092       <span class="stringliteral">" "</span> + DMS::Encode(swaplatlong ? _lat : _long, <span class="keywordtype">unsigned</span>(prec),
-<a name="l00093"></a>00093                         swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE);
-<a name="l00094"></a>00094   }
-<a name="l00095"></a>00095 
-<a name="l00096"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">00096</a>   <span class="keywordtype">string</span> GeoCoords::MGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00097"></a>00097     <span class="comment">// Max precision is um</span>
-<a name="l00098"></a>00098     prec = max(0, min(6, prec) + 5);
-<a name="l00099"></a>00099     <span class="keywordtype">string</span> mgrs;
-<a name="l00100"></a>00100     MGRS::Forward(_zone, _northp, _easting, _northing, _lat, prec, mgrs);
-<a name="l00101"></a>00101     <span class="keywordflow">return</span> mgrs;
-<a name="l00102"></a>00102   }
-<a name="l00103"></a>00103 
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad602893cd4a81ccc511daff76b411413">00104</a>   <span class="keywordtype">string</span> GeoCoords::AltMGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00105"></a>00105     <span class="comment">// Max precision is um</span>
-<a name="l00106"></a>00106     prec = max(0, min(6, prec) + 5);
-<a name="l00107"></a>00107     <span class="keywordtype">string</span> mgrs;
-<a name="l00108"></a>00108     MGRS::Forward(_alt_zone, _northp, _alt_easting, _alt_northing, _lat, prec,
-<a name="l00109"></a>00109                   mgrs);
-<a name="l00110"></a>00110     <span class="keywordflow">return</span> mgrs;
-<a name="l00111"></a>00111   }
-<a name="l00112"></a>00112 
-<a name="l00113"></a>00113   <span class="keywordtype">void</span> GeoCoords::UTMUPSString(<span class="keywordtype">int</span> zone, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northing, <span class="keywordtype">int</span> prec,
-<a name="l00114"></a>00114                                std::string& utm)<span class="keyword"> const </span>{
-<a name="l00115"></a>00115     ostringstream os;
-<a name="l00116"></a>00116     prec = max(-5, min(9, prec));
-<a name="l00117"></a>00117     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> scale = prec < 0 ? pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10), -prec) : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1);
-<a name="l00118"></a>00118     os << UTMUPS::EncodeZone(zone, _northp) << fixed << setfill(<span class="charliteral">'0'</span>);
-<a name="l00119"></a>00119     <span class="keywordflow">if</span> (Math::isfinite(easting)) {
-<a name="l00120"></a>00120       os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << easting / scale;
-<a name="l00121"></a>00121       <span class="keywordflow">if</span> (prec < 0 && abs(easting / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
-<a name="l00122"></a>00122         os << setw(-prec) << 0;
-<a name="l00123"></a>00123     } <span class="keywordflow">else</span>
-<a name="l00124"></a>00124       os << <span class="stringliteral">" nan"</span>;
-<a name="l00125"></a>00125     <span class="keywordflow">if</span> (Math::isfinite(northing)) {
-<a name="l00126"></a>00126       os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << northing / scale;
-<a name="l00127"></a>00127       <span class="keywordflow">if</span> (prec < 0 && abs(northing / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
-<a name="l00128"></a>00128         os << setw(-prec) << 0;
-<a name="l00129"></a>00129     } <span class="keywordflow">else</span>
-<a name="l00130"></a>00130       os << <span class="stringliteral">" nan"</span>;
-<a name="l00131"></a>00131     utm = os.str();
-<a name="l00132"></a>00132   }
-<a name="l00133"></a>00133 
-<a name="l00134"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">00134</a>   <span class="keywordtype">string</span> GeoCoords::UTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00135"></a>00135     <span class="keywordtype">string</span> utm;
-<a name="l00136"></a>00136     UTMUPSString(_zone, _easting, _northing, prec, utm);
-<a name="l00137"></a>00137     <span class="keywordflow">return</span> utm;
-<a name="l00138"></a>00138   }
-<a name="l00139"></a>00139 
-<a name="l00140"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a020732ccba257d7f5248692afd318b93">00140</a>   <span class="keywordtype">string</span> GeoCoords::AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00141"></a>00141     <span class="keywordtype">string</span> utm;
-<a name="l00142"></a>00142     UTMUPSString(_alt_zone, _alt_easting, _alt_northing, prec, utm);
-<a name="l00143"></a>00143     <span class="keywordflow">return</span> utm;
-<a name="l00144"></a>00144   }
-<a name="l00145"></a>00145 
-<a name="l00146"></a>00146   <span class="keywordtype">void</span> GeoCoords::FixHemisphere() {
-<a name="l00147"></a>00147     <span class="keywordflow">if</span> (_lat == 0 || (_northp && _lat >= 0) || (!_northp && _lat < 0) ||
-<a name="l00148"></a>00148         Math::isnan(_lat))
-<a name="l00149"></a>00149       <span class="comment">// Allow either hemisphere for equator</span>
-<a name="l00150"></a>00150       <span class="keywordflow">return</span>;
-<a name="l00151"></a>00151     <span class="keywordflow">if</span> (_zone != UTMUPS::UPS) {
-<a name="l00152"></a>00152       _northing += (_northp ? 1 : -1) * UTMUPS::UTMShift();
-<a name="l00153"></a>00153       _northp = !_northp;
-<a name="l00154"></a>00154     } <span class="keywordflow">else</span>
-<a name="l00155"></a>00155       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Hemisphere mixup"</span>);
-<a name="l00156"></a>00156   }
-<a name="l00157"></a>00157 
-<a name="l00158"></a>00158 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00088"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">00088</a>   <span class="keywordtype">string</span> GeoCoords::DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong,
+<a name="l00089"></a>00089                                       <span class="keywordtype">char</span> dmssep)<span class="keyword"> const </span>{
+<a name="l00090"></a>00090     prec = max(0, min(10, prec) + 5);
+<a name="l00091"></a>00091     <span class="keywordflow">return</span> DMS::Encode(swaplatlong ? _long : _lat, <span class="keywordtype">unsigned</span>(prec),
+<a name="l00092"></a>00092                        swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE, dmssep) +
+<a name="l00093"></a>00093       <span class="stringliteral">" "</span> + DMS::Encode(swaplatlong ? _lat : _long, <span class="keywordtype">unsigned</span>(prec),
+<a name="l00094"></a>00094                         swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE, dmssep);
+<a name="l00095"></a>00095   }
+<a name="l00096"></a>00096 
+<a name="l00097"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">00097</a>   <span class="keywordtype">string</span> GeoCoords::DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong)<span class="keyword"> const</span>
+<a name="l00098"></a>00098 <span class="keyword">  </span>{ <span class="keywordflow">return</span> DMSRepresentation(prec, swaplatlong, <span class="keywordtype">char</span>(0)); }
+<a name="l00099"></a>00099 
+<a name="l00100"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">00100</a>   <span class="keywordtype">string</span> GeoCoords::MGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00101"></a>00101     <span class="comment">// Max precision is um</span>
+<a name="l00102"></a>00102     prec = max(0, min(6, prec) + 5);
+<a name="l00103"></a>00103     <span class="keywordtype">string</span> mgrs;
+<a name="l00104"></a>00104     MGRS::Forward(_zone, _northp, _easting, _northing, _lat, prec, mgrs);
+<a name="l00105"></a>00105     <span class="keywordflow">return</span> mgrs;
+<a name="l00106"></a>00106   }
+<a name="l00107"></a>00107 
+<a name="l00108"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad602893cd4a81ccc511daff76b411413">00108</a>   <span class="keywordtype">string</span> GeoCoords::AltMGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00109"></a>00109     <span class="comment">// Max precision is um</span>
+<a name="l00110"></a>00110     prec = max(0, min(6, prec) + 5);
+<a name="l00111"></a>00111     <span class="keywordtype">string</span> mgrs;
+<a name="l00112"></a>00112     MGRS::Forward(_alt_zone, _northp, _alt_easting, _alt_northing, _lat, prec,
+<a name="l00113"></a>00113                   mgrs);
+<a name="l00114"></a>00114     <span class="keywordflow">return</span> mgrs;
+<a name="l00115"></a>00115   }
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117   <span class="keywordtype">void</span> GeoCoords::UTMUPSString(<span class="keywordtype">int</span> zone, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northing, <span class="keywordtype">int</span> prec,
+<a name="l00118"></a>00118                                std::string& utm)<span class="keyword"> const </span>{
+<a name="l00119"></a>00119     ostringstream os;
+<a name="l00120"></a>00120     prec = max(-5, min(9, prec));
+<a name="l00121"></a>00121     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> scale = prec < 0 ? pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10), -prec) : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1);
+<a name="l00122"></a>00122     os << UTMUPS::EncodeZone(zone, _northp) << fixed << setfill(<span class="charliteral">'0'</span>);
+<a name="l00123"></a>00123     <span class="keywordflow">if</span> (Math::isfinite(easting)) {
+<a name="l00124"></a>00124       os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << easting / scale;
+<a name="l00125"></a>00125       <span class="keywordflow">if</span> (prec < 0 && abs(easting / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
+<a name="l00126"></a>00126         os << setw(-prec) << 0;
+<a name="l00127"></a>00127     } <span class="keywordflow">else</span>
+<a name="l00128"></a>00128       os << <span class="stringliteral">" nan"</span>;
+<a name="l00129"></a>00129     <span class="keywordflow">if</span> (Math::isfinite(northing)) {
+<a name="l00130"></a>00130       os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << northing / scale;
+<a name="l00131"></a>00131       <span class="keywordflow">if</span> (prec < 0 && abs(northing / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
+<a name="l00132"></a>00132         os << setw(-prec) << 0;
+<a name="l00133"></a>00133     } <span class="keywordflow">else</span>
+<a name="l00134"></a>00134       os << <span class="stringliteral">" nan"</span>;
+<a name="l00135"></a>00135     utm = os.str();
+<a name="l00136"></a>00136   }
+<a name="l00137"></a>00137 
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">00138</a>   <span class="keywordtype">string</span> GeoCoords::UTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00139"></a>00139     <span class="keywordtype">string</span> utm;
+<a name="l00140"></a>00140     UTMUPSString(_zone, _easting, _northing, prec, utm);
+<a name="l00141"></a>00141     <span class="keywordflow">return</span> utm;
+<a name="l00142"></a>00142   }
+<a name="l00143"></a>00143 
+<a name="l00144"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a020732ccba257d7f5248692afd318b93">00144</a>   <span class="keywordtype">string</span> GeoCoords::AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00145"></a>00145     <span class="keywordtype">string</span> utm;
+<a name="l00146"></a>00146     UTMUPSString(_alt_zone, _alt_easting, _alt_northing, prec, utm);
+<a name="l00147"></a>00147     <span class="keywordflow">return</span> utm;
+<a name="l00148"></a>00148   }
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150   <span class="keywordtype">void</span> GeoCoords::FixHemisphere() {
+<a name="l00151"></a>00151     <span class="keywordflow">if</span> (_lat == 0 || (_northp && _lat >= 0) || (!_northp && _lat < 0) ||
+<a name="l00152"></a>00152         Math::isnan(_lat))
+<a name="l00153"></a>00153       <span class="comment">// Allow either hemisphere for equator</span>
+<a name="l00154"></a>00154       <span class="keywordflow">return</span>;
+<a name="l00155"></a>00155     <span class="keywordflow">if</span> (_zone != UTMUPS::UPS) {
+<a name="l00156"></a>00156       _northing += (_northp ? 1 : -1) * UTMUPS::UTMShift();
+<a name="l00157"></a>00157       _northp = !_northp;
+<a name="l00158"></a>00158     } <span class="keywordflow">else</span>
+<a name="l00159"></a>00159       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Hemisphere mixup"</span>);
+<a name="l00160"></a>00160   }
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoCoords_8hpp.html b/doc/html/GeoCoords_8hpp.html
index a41f81b..bc49a28 100644
--- a/doc/html/GeoCoords_8hpp.html
+++ b/doc/html/GeoCoords_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoCoords.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">GEOGRAPHICLIB_GEOCOORDS_HPP</a>   "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">GEOGRAPHICLIB_GEOCOORDS_HPP</a>   "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_HPP   "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_HPP   "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoCoords_8hpp_source.html b/doc/html/GeoCoords_8hpp_source.html
index 7a356b6..f347473 100644
--- a/doc/html/GeoCoords_8hpp_source.html
+++ b/doc/html/GeoCoords_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoCoords.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeoCoords.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::GeoCoords class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#ifndef GEOGRAPHICLIB_GEOCOORDS_HPP</span>
 <a name="l00011"></a><a class="code" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEOCOORDS_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="UTMUPS_8hpp.html" title="Header for GeographicLib::UTMUPS class.">GeographicLib/UTMUPS.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -93,416 +108,452 @@
 <a name="l00043"></a>00043 <span class="comment">   *</span>
 <a name="l00044"></a>00044 <span class="comment">   * Example of use:</span>
 <a name="l00045"></a>00045 <span class="comment">   * \include example-GeoCoords.cpp</span>
-<a name="l00046"></a>00046 <span class="comment">   **********************************************************************/</span>
-<a name="l00047"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html">00047</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> {
-<a name="l00048"></a>00048   <span class="keyword">private</span>:
-<a name="l00049"></a>00049     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00050"></a>00050     real _lat, _long, _easting, _northing, _gamma, _k;
-<a name="l00051"></a>00051     <span class="keywordtype">bool</span> _northp;
-<a name="l00052"></a>00052     <span class="keywordtype">int</span> _zone;                  <span class="comment">// See UTMUPS::zonespec</span>
-<a name="l00053"></a>00053     <span class="keyword">mutable</span> real _alt_easting, _alt_northing, _alt_gamma, _alt_k;
-<a name="l00054"></a>00054     <span class="keyword">mutable</span> <span class="keywordtype">int</span> _alt_zone;
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056     <span class="keywordtype">void</span> CopyToAlt() <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00057"></a>00057       _alt_easting = _easting;
-<a name="l00058"></a>00058       _alt_northing = _northing;
-<a name="l00059"></a>00059       _alt_gamma = _gamma;
-<a name="l00060"></a>00060       _alt_k = _k;
-<a name="l00061"></a>00061       _alt_zone = _zone;
-<a name="l00062"></a>00062     }
-<a name="l00063"></a>00063     <span class="keywordtype">void</span> UTMUPSString(<span class="keywordtype">int</span> zone, real easting, real northing,
-<a name="l00064"></a>00064                       <span class="keywordtype">int</span> prec, std::string& utm) <span class="keyword">const</span>;
-<a name="l00065"></a>00065     <span class="keywordtype">void</span> FixHemisphere();
-<a name="l00066"></a>00066   <span class="keyword">public</span>:
-<a name="l00067"></a>00067 <span class="comment"></span>
-<a name="l00068"></a>00068 <span class="comment">    /** \name Initializing the GeoCoords object</span>
-<a name="l00069"></a>00069 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00070"></a>00070 <span class="comment">    ///@{</span>
-<a name="l00071"></a>00071 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00072"></a>00072 <span class="comment">     * The default constructor is equivalent to \e latitude = 90<sup>o</sup>,</span>
-<a name="l00073"></a>00073 <span class="comment">     * \e longitude = 0<sup>o</sup>.</span>
-<a name="l00074"></a>00074 <span class="comment">     **********************************************************************/</span>
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a8b3f4a919ba4478c4fec0e7b01e84c57">00075</a>     <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a>() throw()
-<a name="l00076"></a>00076       <span class="comment">// This is the N pole</span>
-<a name="l00077"></a>00077       : _lat(90)
-<a name="l00078"></a>00078       , _long(0)
-<a name="l00079"></a>00079       , _easting(2000000)
-<a name="l00080"></a>00080       , _northing(2000000)
-<a name="l00081"></a>00081       , _northp(true)
-<a name="l00082"></a>00082       , _zone(0)
-<a name="l00083"></a>00083     { CopyToAlt(); }
-<a name="l00084"></a>00084 <span class="comment"></span>
-<a name="l00085"></a>00085 <span class="comment">    /**</span>
-<a name="l00086"></a>00086 <span class="comment">     * Construct from a string.</span>
-<a name="l00087"></a>00087 <span class="comment">     *</span>
-<a name="l00088"></a>00088 <span class="comment">     * @param[in] s 1-element, 2-element, or 3-element string representation of</span>
-<a name="l00089"></a>00089 <span class="comment">     *   the position.</span>
-<a name="l00090"></a>00090 <span class="comment">     * @param[in] centerp governs the interpretation of MGRS coordinates (see</span>
-<a name="l00091"></a>00091 <span class="comment">     *   below).</span>
-<a name="l00092"></a>00092 <span class="comment">     * @param[in] swaplatlong governs the interpretation of geographic</span>
-<a name="l00093"></a>00093 <span class="comment">     *   coordinates (see below).</span>
-<a name="l00094"></a>00094 <span class="comment">     *</span>
-<a name="l00095"></a>00095 <span class="comment">     * Parse as a string and interpret it as a geographic position.  The input</span>
-<a name="l00096"></a>00096 <span class="comment">     * string is broken into space (or comma) separated pieces and Basic</span>
-<a name="l00097"></a>00097 <span class="comment">     * decision on which format is based on number of components</span>
-<a name="l00098"></a>00098 <span class="comment">     * -# MGRS</span>
-<a name="l00099"></a>00099 <span class="comment">     * -# "Lat Long" or "Long Lat"</span>
-<a name="l00100"></a>00100 <span class="comment">     * -# "Zone Easting Northing" or "Easting Northing Zone"</span>
-<a name="l00101"></a>00101 <span class="comment">     *</span>
-<a name="l00102"></a>00102 <span class="comment">     * The following inputs are approximately the same (Ar Ramadi Bridge, Iraq)</span>
-<a name="l00103"></a>00103 <span class="comment">     * - Latitude and Longitude</span>
-<a name="l00104"></a>00104 <span class="comment">     *   -  33.44      43.27</span>
-<a name="l00105"></a>00105 <span class="comment">     *   -  N33d26.4'  E43d16.2'</span>
-<a name="l00106"></a>00106 <span class="comment">     *   -  43d16'12"E 33d26'24"N</span>
-<a name="l00107"></a>00107 <span class="comment">     * - MGRS</span>
-<a name="l00108"></a>00108 <span class="comment">     *   -  38SLC301</span>
-<a name="l00109"></a>00109 <span class="comment">     *   -  38SLC391014</span>
-<a name="l00110"></a>00110 <span class="comment">     *   -  38SLC3918701405</span>
-<a name="l00111"></a>00111 <span class="comment">     *   -  37SHT9708</span>
-<a name="l00112"></a>00112 <span class="comment">     * - UTM</span>
-<a name="l00113"></a>00113 <span class="comment">     *   -  38N 339188 3701405</span>
-<a name="l00114"></a>00114 <span class="comment">     *   -  897039 3708229 37N</span>
-<a name="l00115"></a>00115 <span class="comment">     *</span>
-<a name="l00116"></a>00116 <span class="comment">     * Latitude and Longitude parsing.  Latitude precedes longitude, unless a</span>
-<a name="l00117"></a>00117 <span class="comment">     * N, S, E, W hemisphere designator is used on one or both coordinates.  If</span>
-<a name="l00118"></a>00118 <span class="comment">     * \e swaplatlong = true (default is false), then longitude precedes</span>
-<a name="l00119"></a>00119 <span class="comment">     * latitude in the absence of a hemisphere designator.  Thus (with \e</span>
-<a name="l00120"></a>00120 <span class="comment">     * swaplatlong = false)</span>
-<a name="l00121"></a>00121 <span class="comment">     * - 40 -75</span>
-<a name="l00122"></a>00122 <span class="comment">     * - N40 W75</span>
-<a name="l00123"></a>00123 <span class="comment">     * - -75 N40</span>
-<a name="l00124"></a>00124 <span class="comment">     * - 75W 40N</span>
-<a name="l00125"></a>00125 <span class="comment">     * - E-75 -40S</span>
-<a name="l00126"></a>00126 <span class="comment">     * .</span>
-<a name="l00127"></a>00127 <span class="comment">     * are all the same position.  The coordinates may be given in decimal</span>
-<a name="l00128"></a>00128 <span class="comment">     * degrees, degrees and decimal minutes, degrees, minutes, seconds, etc.</span>
-<a name="l00129"></a>00129 <span class="comment">     * Use d, ', and " to make off the degrees, minutes and seconds.  Thus</span>
-<a name="l00130"></a>00130 <span class="comment">     * - 40d30'30"</span>
-<a name="l00131"></a>00131 <span class="comment">     * - 40d30'30</span>
-<a name="l00132"></a>00132 <span class="comment">     * - 40d30.5'</span>
-<a name="l00133"></a>00133 <span class="comment">     * - 40d30.5</span>
-<a name="l00134"></a>00134 <span class="comment">     * - 40.508333333</span>
-<a name="l00135"></a>00135 <span class="comment">     * .</span>
-<a name="l00136"></a>00136 <span class="comment">     * all specify the same angle.  The leading sign applies to all components</span>
-<a name="l00137"></a>00137 <span class="comment">     * so -1d30 is -(1+30/60) = -1.5.  Latitudes must be in the range [-90, 90]</span>
-<a name="l00138"></a>00138 <span class="comment">     * and longitudes in the range [-180, 360].  Internally longitudes are</span>
-<a name="l00139"></a>00139 <span class="comment">     * reduced to the range [-180, 180).</span>
-<a name="l00140"></a>00140 <span class="comment">     *</span>
-<a name="l00141"></a>00141 <span class="comment">     * UTM/UPS parsing.  For UTM zones (-80 <= Lat <= 84), the zone designator</span>
-<a name="l00142"></a>00142 <span class="comment">     * is made up of a zone number (for 1 to 60) and a hemisphere letter (N or</span>
-<a name="l00143"></a>00143 <span class="comment">     * S), e.g., 38N.  The latitude zone designer ([C&ndash;M] in the southern</span>
-<a name="l00144"></a>00144 <span class="comment">     * hemisphere and [N&ndash;X] in the northern) should NOT be used.  (This</span>
-<a name="l00145"></a>00145 <span class="comment">     * is part of the MGRS coordinate.)  The zone designator for the poles</span>
-<a name="l00146"></a>00146 <span class="comment">     * (where UPS is employed) is a hemisphere letter by itself, i.e., N or S.</span>
-<a name="l00147"></a>00147 <span class="comment">     *</span>
-<a name="l00148"></a>00148 <span class="comment">     * MGRS parsing interprets the grid references as square area at the</span>
-<a name="l00149"></a>00149 <span class="comment">     * specified precision (1m, 10m, 100m, etc.).  If \e centerp = true (the</span>
-<a name="l00150"></a>00150 <span class="comment">     * default), the center of this square is then taken to be the precise</span>
-<a name="l00151"></a>00151 <span class="comment">     * position; thus:</span>
-<a name="l00152"></a>00152 <span class="comment">     * - 38SMB           = 38N 450000 3650000</span>
-<a name="l00153"></a>00153 <span class="comment">     * - 38SMB4484       = 38N 444500 3684500</span>
-<a name="l00154"></a>00154 <span class="comment">     * - 38SMB44148470   = 38N 444145 3684705</span>
-<a name="l00155"></a>00155 <span class="comment">     * .</span>
-<a name="l00156"></a>00156 <span class="comment">     * Otherwise, the "south-west" corner of the square is used, i.e.,</span>
-<a name="l00157"></a>00157 <span class="comment">     * - 38SMB           = 38N 400000 3600000</span>
-<a name="l00158"></a>00158 <span class="comment">     * - 38SMB4484       = 38N 444000 3684000</span>
-<a name="l00159"></a>00159 <span class="comment">     * - 38SMB44148470   = 38N 444140 3684700</span>
-<a name="l00160"></a>00160 <span class="comment">     **********************************************************************/</span>
-<a name="l00161"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#acdfe641aaea6b68aee25cfee822f782a">00161</a>     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a>(<span class="keyword">const</span> std::string& s,
-<a name="l00162"></a>00162                        <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>)
-<a name="l00163"></a>00163     { Reset(s, centerp, swaplatlong); }
-<a name="l00164"></a>00164 <span class="comment"></span>
-<a name="l00165"></a>00165 <span class="comment">    /**</span>
-<a name="l00166"></a>00166 <span class="comment">     * Construct from geographic coordinates.</span>
-<a name="l00167"></a>00167 <span class="comment">     *</span>
-<a name="l00168"></a>00168 <span class="comment">     * @param[in] latitude (degrees).</span>
-<a name="l00169"></a>00169 <span class="comment">     * @param[in] longitude (degrees).</span>
-<a name="l00170"></a>00170 <span class="comment">     * @param[in] zone if specified, force the UTM/UPS representation to use a</span>
-<a name="l00171"></a>00171 <span class="comment">     *   specified zone using the rules given in UTMUPS::zonespec.</span>
-<a name="l00172"></a>00172 <span class="comment">     **********************************************************************/</span>
-<a name="l00173"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">00173</a>     <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">GeoCoords</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
-<a name="l00174"></a>00174       Reset(latitude, longitude, zone);
-<a name="l00175"></a>00175     }
-<a name="l00176"></a>00176 <span class="comment"></span>
-<a name="l00177"></a>00177 <span class="comment">    /**</span>
-<a name="l00178"></a>00178 <span class="comment">     * Construct from UTM/UPS coordinates.</span>
-<a name="l00179"></a>00179 <span class="comment">     *</span>
-<a name="l00180"></a>00180 <span class="comment">     * @param[in] zone UTM zone (zero means UPS).</span>
-<a name="l00181"></a>00181 <span class="comment">     * @param[in] northp hemisphere (true means north, false means south).</span>
-<a name="l00182"></a>00182 <span class="comment">     * @param[in] easting (meters).</span>
-<a name="l00183"></a>00183 <span class="comment">     * @param[in] northing (meters).</span>
-<a name="l00184"></a>00184 <span class="comment">     **********************************************************************/</span>
-<a name="l00185"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">00185</a>     <a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
-<a name="l00186"></a>00186       Reset(zone, northp, easting, northing);
-<a name="l00187"></a>00187     }
-<a name="l00188"></a>00188 <span class="comment"></span>
-<a name="l00189"></a>00189 <span class="comment">    /**</span>
-<a name="l00190"></a>00190 <span class="comment">     * Reset the location from a string.  See</span>
-<a name="l00191"></a>00191 <span class="comment">     * GeoCoords(const std::string& s, bool centerp, bool swaplatlong).</span>
+<a name="l00046"></a>00046 <span class="comment">   *</span>
+<a name="l00047"></a>00047 <span class="comment">   * <a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility</span>
+<a name="l00048"></a>00048 <span class="comment">   * providing access to the functionality of GeoCoords.</span>
+<a name="l00049"></a>00049 <span class="comment">   **********************************************************************/</span>
+<a name="l00050"></a>00050   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GeoCoords {
+<a name="l00051"></a>00051   <span class="keyword">private</span>:
+<a name="l00052"></a>00052     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00053"></a>00053     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _lat, _long, _easting, _northing, _gamma, _k;
+<a name="l00054"></a>00054     <span class="keywordtype">bool</span> _northp;
+<a name="l00055"></a>00055     <span class="keywordtype">int</span> _zone;                  <span class="comment">// See UTMUPS::zonespec</span>
+<a name="l00056"></a>00056     <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _alt_easting, _alt_northing, _alt_gamma, _alt_k;
+<a name="l00057"></a>00057     <span class="keyword">mutable</span> <span class="keywordtype">int</span> _alt_zone;
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059     <span class="keywordtype">void</span> CopyToAlt() <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00060"></a>00060       _alt_easting = _easting;
+<a name="l00061"></a>00061       _alt_northing = _northing;
+<a name="l00062"></a>00062       _alt_gamma = _gamma;
+<a name="l00063"></a>00063       _alt_k = _k;
+<a name="l00064"></a>00064       _alt_zone = _zone;
+<a name="l00065"></a>00065     }
+<a name="l00066"></a>00066     <span class="keywordtype">void</span> UTMUPSString(<span class="keywordtype">int</span> zone, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northing,
+<a name="l00067"></a>00067                       <span class="keywordtype">int</span> prec, std::string& utm) <span class="keyword">const</span>;
+<a name="l00068"></a>00068     <span class="keywordtype">void</span> FixHemisphere();
+<a name="l00069"></a>00069   <span class="keyword">public</span>:
+<a name="l00070"></a>00070 <span class="comment"></span>
+<a name="l00071"></a>00071 <span class="comment">    /** \name Initializing the GeoCoords object</span>
+<a name="l00072"></a>00072 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment">    ///@{</span>
+<a name="l00074"></a>00074 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00075"></a>00075 <span class="comment">     * The default constructor is equivalent to \e latitude = 90<sup>o</sup>,</span>
+<a name="l00076"></a>00076 <span class="comment">     * \e longitude = 0<sup>o</sup>.</span>
+<a name="l00077"></a>00077 <span class="comment">     **********************************************************************/</span>
+<a name="l00078"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a8b3f4a919ba4478c4fec0e7b01e84c57">00078</a>     GeoCoords() throw()
+<a name="l00079"></a>00079       <span class="comment">// This is the N pole</span>
+<a name="l00080"></a>00080       : _lat(90)
+<a name="l00081"></a>00081       , _long(0)
+<a name="l00082"></a>00082       , _easting(2000000)
+<a name="l00083"></a>00083       , _northing(2000000)
+<a name="l00084"></a>00084       , _northp(true)
+<a name="l00085"></a>00085       , _zone(0)
+<a name="l00086"></a>00086     { CopyToAlt(); }
+<a name="l00087"></a>00087 <span class="comment"></span>
+<a name="l00088"></a>00088 <span class="comment">    /**</span>
+<a name="l00089"></a>00089 <span class="comment">     * Construct from a string.</span>
+<a name="l00090"></a>00090 <span class="comment">     *</span>
+<a name="l00091"></a>00091 <span class="comment">     * @param[in] s 1-element, 2-element, or 3-element string representation of</span>
+<a name="l00092"></a>00092 <span class="comment">     *   the position.</span>
+<a name="l00093"></a>00093 <span class="comment">     * @param[in] centerp governs the interpretation of MGRS coordinates (see</span>
+<a name="l00094"></a>00094 <span class="comment">     *   below).</span>
+<a name="l00095"></a>00095 <span class="comment">     * @param[in] swaplatlong governs the interpretation of geographic</span>
+<a name="l00096"></a>00096 <span class="comment">     *   coordinates (see below).</span>
+<a name="l00097"></a>00097 <span class="comment">     *</span>
+<a name="l00098"></a>00098 <span class="comment">     * Parse as a string and interpret it as a geographic position.  The input</span>
+<a name="l00099"></a>00099 <span class="comment">     * string is broken into space (or comma) separated pieces and Basic</span>
+<a name="l00100"></a>00100 <span class="comment">     * decision on which format is based on number of components</span>
+<a name="l00101"></a>00101 <span class="comment">     * -# MGRS</span>
+<a name="l00102"></a>00102 <span class="comment">     * -# "Lat Long" or "Long Lat"</span>
+<a name="l00103"></a>00103 <span class="comment">     * -# "Zone Easting Northing" or "Easting Northing Zone"</span>
+<a name="l00104"></a>00104 <span class="comment">     *</span>
+<a name="l00105"></a>00105 <span class="comment">     * The following inputs are approximately the same (Ar Ramadi Bridge, Iraq)</span>
+<a name="l00106"></a>00106 <span class="comment">     * - Latitude and Longitude</span>
+<a name="l00107"></a>00107 <span class="comment">     *   -  33.44      43.27</span>
+<a name="l00108"></a>00108 <span class="comment">     *   -  N33d26.4'  E43d16.2'</span>
+<a name="l00109"></a>00109 <span class="comment">     *   -  43d16'12&quot;E 33d26'24&quot;N</span>
+<a name="l00110"></a>00110 <span class="comment">     *   -  43:16:12E  33:26:24</span>
+<a name="l00111"></a>00111 <span class="comment">     * - MGRS</span>
+<a name="l00112"></a>00112 <span class="comment">     *   -  38SLC301</span>
+<a name="l00113"></a>00113 <span class="comment">     *   -  38SLC391014</span>
+<a name="l00114"></a>00114 <span class="comment">     *   -  38SLC3918701405</span>
+<a name="l00115"></a>00115 <span class="comment">     *   -  37SHT9708</span>
+<a name="l00116"></a>00116 <span class="comment">     * - UTM</span>
+<a name="l00117"></a>00117 <span class="comment">     *   -  38N 339188 3701405</span>
+<a name="l00118"></a>00118 <span class="comment">     *   -  897039 3708229 37N</span>
+<a name="l00119"></a>00119 <span class="comment">     *</span>
+<a name="l00120"></a>00120 <span class="comment">     * Latitude and Longitude parsing.  Latitude precedes longitude, unless a</span>
+<a name="l00121"></a>00121 <span class="comment">     * N, S, E, W hemisphere designator is used on one or both coordinates.  If</span>
+<a name="l00122"></a>00122 <span class="comment">     * \e swaplatlong = true (default is false), then longitude precedes</span>
+<a name="l00123"></a>00123 <span class="comment">     * latitude in the absence of a hemisphere designator.  Thus (with \e</span>
+<a name="l00124"></a>00124 <span class="comment">     * swaplatlong = false)</span>
+<a name="l00125"></a>00125 <span class="comment">     * - 40 -75</span>
+<a name="l00126"></a>00126 <span class="comment">     * - N40 W75</span>
+<a name="l00127"></a>00127 <span class="comment">     * - -75 N40</span>
+<a name="l00128"></a>00128 <span class="comment">     * - 75W 40N</span>
+<a name="l00129"></a>00129 <span class="comment">     * - E-75 -40S</span>
+<a name="l00130"></a>00130 <span class="comment">     * .</span>
+<a name="l00131"></a>00131 <span class="comment">     * are all the same position.  The coordinates may be given in</span>
+<a name="l00132"></a>00132 <span class="comment">     * decimal degrees, degrees and decimal minutes, degrees, minutes,</span>
+<a name="l00133"></a>00133 <span class="comment">     * seconds, etc.  Use d, ', and &quot; to mark off the degrees,</span>
+<a name="l00134"></a>00134 <span class="comment">     * minutes and seconds.  Alternatively, use : to separate these</span>
+<a name="l00135"></a>00135 <span class="comment">     * components.  Thus</span>
+<a name="l00136"></a>00136 <span class="comment">     * - 40d30'30&quot;</span>
+<a name="l00137"></a>00137 <span class="comment">     * - 40d30'30</span>
+<a name="l00138"></a>00138 <span class="comment">     * - 40d30.5'</span>
+<a name="l00139"></a>00139 <span class="comment">     * - 40d30.5</span>
+<a name="l00140"></a>00140 <span class="comment">     * - 40:30:30</span>
+<a name="l00141"></a>00141 <span class="comment">     * - 40:30.5</span>
+<a name="l00142"></a>00142 <span class="comment">     * - 40.508333333</span>
+<a name="l00143"></a>00143 <span class="comment">     * .</span>
+<a name="l00144"></a>00144 <span class="comment">     * all specify the same angle.  The leading sign applies to all components</span>
+<a name="l00145"></a>00145 <span class="comment">     * so -1d30 is -(1+30/60) = -1.5.  Latitudes must be in the range [-90, 90]</span>
+<a name="l00146"></a>00146 <span class="comment">     * and longitudes in the range [-180, 360].  Internally longitudes are</span>
+<a name="l00147"></a>00147 <span class="comment">     * reduced to the range [-180, 180).</span>
+<a name="l00148"></a>00148 <span class="comment">     *</span>
+<a name="l00149"></a>00149 <span class="comment">     * UTM/UPS parsing.  For UTM zones (-80 <= Lat <= 84), the zone designator</span>
+<a name="l00150"></a>00150 <span class="comment">     * is made up of a zone number (for 1 to 60) and a hemisphere letter (N or</span>
+<a name="l00151"></a>00151 <span class="comment">     * S), e.g., 38N.  The latitude zone designer ([C&ndash;M] in the southern</span>
+<a name="l00152"></a>00152 <span class="comment">     * hemisphere and [N&ndash;X] in the northern) should NOT be used.  (This</span>
+<a name="l00153"></a>00153 <span class="comment">     * is part of the MGRS coordinate.)  The zone designator for the poles</span>
+<a name="l00154"></a>00154 <span class="comment">     * (where UPS is employed) is a hemisphere letter by itself, i.e., N or S.</span>
+<a name="l00155"></a>00155 <span class="comment">     *</span>
+<a name="l00156"></a>00156 <span class="comment">     * MGRS parsing interprets the grid references as square area at the</span>
+<a name="l00157"></a>00157 <span class="comment">     * specified precision (1m, 10m, 100m, etc.).  If \e centerp = true (the</span>
+<a name="l00158"></a>00158 <span class="comment">     * default), the center of this square is then taken to be the precise</span>
+<a name="l00159"></a>00159 <span class="comment">     * position; thus:</span>
+<a name="l00160"></a>00160 <span class="comment">     * - 38SMB           = 38N 450000 3650000</span>
+<a name="l00161"></a>00161 <span class="comment">     * - 38SMB4484       = 38N 444500 3684500</span>
+<a name="l00162"></a>00162 <span class="comment">     * - 38SMB44148470   = 38N 444145 3684705</span>
+<a name="l00163"></a>00163 <span class="comment">     * .</span>
+<a name="l00164"></a>00164 <span class="comment">     * Otherwise, the "south-west" corner of the square is used, i.e.,</span>
+<a name="l00165"></a>00165 <span class="comment">     * - 38SMB           = 38N 400000 3600000</span>
+<a name="l00166"></a>00166 <span class="comment">     * - 38SMB4484       = 38N 444000 3684000</span>
+<a name="l00167"></a>00167 <span class="comment">     * - 38SMB44148470   = 38N 444140 3684700</span>
+<a name="l00168"></a>00168 <span class="comment">     **********************************************************************/</span>
+<a name="l00169"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#acdfe641aaea6b68aee25cfee822f782a">00169</a>     <span class="keyword">explicit</span> GeoCoords(<span class="keyword">const</span> std::string& s,
+<a name="l00170"></a>00170                        <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>)
+<a name="l00171"></a>00171     { Reset(s, centerp, swaplatlong); }
+<a name="l00172"></a>00172 <span class="comment"></span>
+<a name="l00173"></a>00173 <span class="comment">    /**</span>
+<a name="l00174"></a>00174 <span class="comment">     * Construct from geographic coordinates.</span>
+<a name="l00175"></a>00175 <span class="comment">     *</span>
+<a name="l00176"></a>00176 <span class="comment">     * @param[in] latitude (degrees).</span>
+<a name="l00177"></a>00177 <span class="comment">     * @param[in] longitude (degrees).</span>
+<a name="l00178"></a>00178 <span class="comment">     * @param[in] zone if specified, force the UTM/UPS representation to use a</span>
+<a name="l00179"></a>00179 <span class="comment">     *   specified zone using the rules given in UTMUPS::zonespec.</span>
+<a name="l00180"></a>00180 <span class="comment">     **********************************************************************/</span>
+<a name="l00181"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">00181</a>     <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">GeoCoords</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
+<a name="l00182"></a>00182       Reset(latitude, longitude, zone);
+<a name="l00183"></a>00183     }
+<a name="l00184"></a>00184 <span class="comment"></span>
+<a name="l00185"></a>00185 <span class="comment">    /**</span>
+<a name="l00186"></a>00186 <span class="comment">     * Construct from UTM/UPS coordinates.</span>
+<a name="l00187"></a>00187 <span class="comment">     *</span>
+<a name="l00188"></a>00188 <span class="comment">     * @param[in] zone UTM zone (zero means UPS).</span>
+<a name="l00189"></a>00189 <span class="comment">     * @param[in] northp hemisphere (true means north, false means south).</span>
+<a name="l00190"></a>00190 <span class="comment">     * @param[in] easting (meters).</span>
+<a name="l00191"></a>00191 <span class="comment">     * @param[in] northing (meters).</span>
 <a name="l00192"></a>00192 <span class="comment">     **********************************************************************/</span>
-<a name="l00193"></a>00193     <span class="keywordtype">void</span> Reset(<span class="keyword">const</span> std::string& s,
-<a name="l00194"></a>00194                <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>);
-<a name="l00195"></a>00195 <span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment">    /**</span>
-<a name="l00197"></a>00197 <span class="comment">     * Reset the location in terms of geographic coordinates.  See</span>
-<a name="l00198"></a>00198 <span class="comment">     * GeoCoords(real latitude, real longitude, int zone).</span>
-<a name="l00199"></a>00199 <span class="comment">     **********************************************************************/</span>
-<a name="l00200"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">00200</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">Reset</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
-<a name="l00201"></a>00201       <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(latitude, longitude,
-<a name="l00202"></a>00202                       _zone, _northp, _easting, _northing, _gamma, _k,
-<a name="l00203"></a>00203                       zone);
-<a name="l00204"></a>00204       _lat = latitude;
-<a name="l00205"></a>00205       _long = longitude;
-<a name="l00206"></a>00206       <span class="keywordflow">if</span> (_long >= 180)
-<a name="l00207"></a>00207         _long -= 360;
-<a name="l00208"></a>00208       CopyToAlt();
-<a name="l00209"></a>00209     }
-<a name="l00210"></a>00210 <span class="comment"></span>
-<a name="l00211"></a>00211 <span class="comment">    /**</span>
-<a name="l00212"></a>00212 <span class="comment">     * Reset the location in terms of UPS/UPS coordinates.  See</span>
-<a name="l00213"></a>00213 <span class="comment">     * GeoCoords(int zone, bool northp, real easting, real northing).</span>
-<a name="l00214"></a>00214 <span class="comment">     **********************************************************************/</span>
-<a name="l00215"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">00215</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">Reset</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
-<a name="l00216"></a>00216       <a class="code" href="classGeographicLib_1_1UTMUPS.html#aaf417ae6bed6da324aa03fc96ee0dda4">UTMUPS::Reverse</a>(zone, northp, easting, northing,
-<a name="l00217"></a>00217                       _lat, _long, _gamma, _k);
-<a name="l00218"></a>00218       _zone = zone;
-<a name="l00219"></a>00219       _northp = northp;
-<a name="l00220"></a>00220       _easting = easting;
-<a name="l00221"></a>00221       _northing = northing;
-<a name="l00222"></a>00222       FixHemisphere();
-<a name="l00223"></a>00223       CopyToAlt();
-<a name="l00224"></a>00224     }<span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment">    ///@}</span>
-<a name="l00226"></a>00226 <span class="comment"></span><span class="comment"></span>
-<a name="l00227"></a>00227 <span class="comment">    /** \name Querying the GeoCoords object</span>
-<a name="l00228"></a>00228 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00229"></a>00229 <span class="comment">    ///@{</span>
-<a name="l00230"></a>00230 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00231"></a>00231 <span class="comment">     * @return latitude (degrees)</span>
-<a name="l00232"></a>00232 <span class="comment">     **********************************************************************/</span>
-<a name="l00233"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">00233</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat; }
-<a name="l00234"></a>00234 <span class="comment"></span>
-<a name="l00235"></a>00235 <span class="comment">    /**</span>
-<a name="l00236"></a>00236 <span class="comment">     * @return longitude (degrees)</span>
-<a name="l00237"></a>00237 <span class="comment">     **********************************************************************/</span>
-<a name="l00238"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">00238</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _long; }
-<a name="l00239"></a>00239 <span class="comment"></span>
-<a name="l00240"></a>00240 <span class="comment">    /**</span>
-<a name="l00241"></a>00241 <span class="comment">     * @return easting (meters)</span>
-<a name="l00242"></a>00242 <span class="comment">     **********************************************************************/</span>
-<a name="l00243"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">00243</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">Easting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _easting; }
-<a name="l00244"></a>00244 <span class="comment"></span>
-<a name="l00245"></a>00245 <span class="comment">    /**</span>
-<a name="l00246"></a>00246 <span class="comment">     * @return northing (meters)</span>
-<a name="l00247"></a>00247 <span class="comment">     **********************************************************************/</span>
-<a name="l00248"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">00248</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">Northing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northing; }
-<a name="l00249"></a>00249 <span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment">    /**</span>
-<a name="l00251"></a>00251 <span class="comment">     * @return meridian convergence (degrees) for the UTM/UPS projection.</span>
-<a name="l00252"></a>00252 <span class="comment">     **********************************************************************/</span>
-<a name="l00253"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">00253</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">Convergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _gamma; }
-<a name="l00254"></a>00254 <span class="comment"></span>
-<a name="l00255"></a>00255 <span class="comment">    /**</span>
-<a name="l00256"></a>00256 <span class="comment">     * @return scale for the UTM/UPS projection.</span>
-<a name="l00257"></a>00257 <span class="comment">     **********************************************************************/</span>
-<a name="l00258"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">00258</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k; }
-<a name="l00259"></a>00259 <span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment">    /**</span>
-<a name="l00261"></a>00261 <span class="comment">     * @return hemisphere (false means south, true means north).</span>
-<a name="l00262"></a>00262 <span class="comment">     **********************************************************************/</span>
-<a name="l00263"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">00263</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">Northp</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp; }
-<a name="l00264"></a>00264 <span class="comment"></span>
-<a name="l00265"></a>00265 <span class="comment">    /**</span>
-<a name="l00266"></a>00266 <span class="comment">     * @return hemisphere letter N or S.</span>
-<a name="l00267"></a>00267 <span class="comment">     **********************************************************************/</span>
-<a name="l00268"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">00268</a>     <span class="keywordtype">char</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">Hemisphere</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp ? <span class="charliteral">'N'</span> : <span class="charliteral">'S'</span>; }
-<a name="l00269"></a>00269 <span class="comment"></span>
-<a name="l00270"></a>00270 <span class="comment">    /**</span>
-<a name="l00271"></a>00271 <span class="comment">     * @return the zone corresponding to the input (return 0 for UPS).</span>
-<a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">00273</a>     <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">Zone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _zone; }
-<a name="l00274"></a>00274 <span class="comment"></span>
-<a name="l00275"></a>00275 <span class="comment">    ///@}</span>
-<a name="l00276"></a>00276 <span class="comment"></span><span class="comment"></span>
-<a name="l00277"></a>00277 <span class="comment">    /** \name Setting and querying the alternate zone</span>
-<a name="l00278"></a>00278 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00279"></a>00279 <span class="comment">    ///@{</span>
-<a name="l00280"></a>00280 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00281"></a>00281 <span class="comment">     * Specify alternate zone number.</span>
-<a name="l00282"></a>00282 <span class="comment">     *</span>
-<a name="l00283"></a>00283 <span class="comment">     * @param[in] zone zone number for the alternate representation.</span>
-<a name="l00284"></a>00284 <span class="comment">     *</span>
-<a name="l00285"></a>00285 <span class="comment">     * See UTMUPS::zonespec for more information on the interpretation of \e</span>
-<a name="l00286"></a>00286 <span class="comment">     * zone.  Note that \e zone == UTMUPS::STANDARD (the default) use the</span>
-<a name="l00287"></a>00287 <span class="comment">     * standard UPS or UTM zone, UTMUPS::MATCH does nothing retaining the</span>
-<a name="l00288"></a>00288 <span class="comment">     * existing alternate representation.  Before this is called the alternate</span>
-<a name="l00289"></a>00289 <span class="comment">     * zone is the input zone.</span>
-<a name="l00290"></a>00290 <span class="comment">     **********************************************************************/</span>
-<a name="l00291"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">00291</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">SetAltZone</a>(<span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>)<span class="keyword"> cons [...]
-<a name="l00292"></a>00292       <span class="keywordflow">if</span> (zone == <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">UTMUPS::MATCH</a>)
-<a name="l00293"></a>00293         <span class="keywordflow">return</span>;
-<a name="l00294"></a>00294       zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">UTMUPS::StandardZone</a>(_lat, _long, zone);
-<a name="l00295"></a>00295       <span class="keywordflow">if</span> (zone == _zone)
-<a name="l00296"></a>00296         CopyToAlt();
-<a name="l00297"></a>00297       <span class="keywordflow">else</span> {
-<a name="l00298"></a>00298         <span class="keywordtype">bool</span> northp;
-<a name="l00299"></a>00299         <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(_lat, _long,
-<a name="l00300"></a>00300                         _alt_zone, northp,
-<a name="l00301"></a>00301                         _alt_easting, _alt_northing, _alt_gamma, _alt_k,
-<a name="l00302"></a>00302                         zone);
-<a name="l00303"></a>00303       }
-<a name="l00304"></a>00304     }
-<a name="l00305"></a>00305 <span class="comment"></span>
-<a name="l00306"></a>00306 <span class="comment">    /**</span>
-<a name="l00307"></a>00307 <span class="comment">     * @return current alternate zone (return 0 for UPS).</span>
-<a name="l00308"></a>00308 <span class="comment">     **********************************************************************/</span>
-<a name="l00309"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">00309</a>     <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">AltZone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_zone; }
-<a name="l00310"></a>00310 <span class="comment"></span>
-<a name="l00311"></a>00311 <span class="comment">    /**</span>
-<a name="l00312"></a>00312 <span class="comment">     * @return easting (meters) for alternate zone.</span>
-<a name="l00313"></a>00313 <span class="comment">     **********************************************************************/</span>
-<a name="l00314"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">00314</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">AltEasting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_easting; }
-<a name="l00315"></a>00315 <span class="comment"></span>
-<a name="l00316"></a>00316 <span class="comment">    /**</span>
-<a name="l00317"></a>00317 <span class="comment">     * @return northing (meters) for alternate zone.</span>
-<a name="l00318"></a>00318 <span class="comment">     **********************************************************************/</span>
-<a name="l00319"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">00319</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">AltNorthing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_northing; }
-<a name="l00320"></a>00320 <span class="comment"></span>
-<a name="l00321"></a>00321 <span class="comment">    /**</span>
-<a name="l00322"></a>00322 <span class="comment">     * @return meridian convergence (degrees) for alternate zone.</span>
-<a name="l00323"></a>00323 <span class="comment">     **********************************************************************/</span>
-<a name="l00324"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">00324</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">AltConvergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_gamma; }
-<a name="l00325"></a>00325 <span class="comment"></span>
-<a name="l00326"></a>00326 <span class="comment">    /**</span>
-<a name="l00327"></a>00327 <span class="comment">     * @return scale for alternate zone.</span>
-<a name="l00328"></a>00328 <span class="comment">     **********************************************************************/</span>
-<a name="l00329"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">00329</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">AltScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_k; }<span class="comment"></span>
-<a name="l00330"></a>00330 <span class="comment">    ///@}</span>
-<a name="l00331"></a>00331 <span class="comment"></span><span class="comment"></span>
-<a name="l00332"></a>00332 <span class="comment">    /** \name String representations of the GeoCoords object</span>
-<a name="l00333"></a>00333 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00334"></a>00334 <span class="comment">    ///@{</span>
-<a name="l00335"></a>00335 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00336"></a>00336 <span class="comment">     * String representation with latitude and longitude as signed decimal</span>
-<a name="l00337"></a>00337 <span class="comment">     * degrees.</span>
-<a name="l00338"></a>00338 <span class="comment">     *</span>
-<a name="l00339"></a>00339 <span class="comment">     * @param[in] prec precision (relative to about 1m).</span>
-<a name="l00340"></a>00340 <span class="comment">     * @param[in] swaplatlong if true give longitude first (default = false)</span>
-<a name="l00341"></a>00341 <span class="comment">     * @return decimal latitude/longitude string representation.</span>
-<a name="l00342"></a>00342 <span class="comment">     *</span>
-<a name="l00343"></a>00343 <span class="comment">     * Precision specifies accuracy of representation as follows:</span>
-<a name="l00344"></a>00344 <span class="comment">     * - prec = -5 (min), 1d</span>
-<a name="l00345"></a>00345 <span class="comment">     * - prec = 0, 10<sup>-5</sup>d (about 1m)</span>
-<a name="l00346"></a>00346 <span class="comment">     * - prec = 3, 10<sup>-8</sup>d</span>
-<a name="l00347"></a>00347 <span class="comment">     * - prec = 9 (max), 10<sup>-14</sup>d</span>
-<a name="l00348"></a>00348 <span class="comment">     **********************************************************************/</span>
-<a name="l00349"></a>00349     std::string GeoRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00350"></a>00350 <span class="comment"></span>
-<a name="l00351"></a>00351 <span class="comment">    /**</span>
-<a name="l00352"></a>00352 <span class="comment">     * String representation with latitude and longitude as degrees, minutes,</span>
-<a name="l00353"></a>00353 <span class="comment">     * seconds, and hemisphere.</span>
-<a name="l00354"></a>00354 <span class="comment">     *</span>
-<a name="l00355"></a>00355 <span class="comment">     * @param[in] prec precision (relative to about 1m)</span>
-<a name="l00356"></a>00356 <span class="comment">     * @param[in] swaplatlong if true give longitude first (default = false)</span>
-<a name="l00357"></a>00357 <span class="comment">     * @return DMS latitude/longitude string representation.</span>
-<a name="l00358"></a>00358 <span class="comment">     *</span>
-<a name="l00359"></a>00359 <span class="comment">     * Precision specifies accuracy of representation as follows:</span>
-<a name="l00360"></a>00360 <span class="comment">     * - prec = -5 (min), 1d</span>
-<a name="l00361"></a>00361 <span class="comment">     * - prec = -4, 0.1d</span>
-<a name="l00362"></a>00362 <span class="comment">     * - prec = -3, 1'</span>
-<a name="l00363"></a>00363 <span class="comment">     * - prec = -2, 0.1'</span>
-<a name="l00364"></a>00364 <span class="comment">     * - prec = -1, 1"</span>
-<a name="l00365"></a>00365 <span class="comment">     * - prec = 0, 0.1" (about 3m)</span>
-<a name="l00366"></a>00366 <span class="comment">     * - prec = 1, 0.01"</span>
-<a name="l00367"></a>00367 <span class="comment">     * - prec = 10 (max), 10<sup>-11</sup>"</span>
-<a name="l00368"></a>00368 <span class="comment">     **********************************************************************/</span>
-<a name="l00369"></a>00369     std::string DMSRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00370"></a>00370 <span class="comment"></span>
-<a name="l00371"></a>00371 <span class="comment">    /**</span>
-<a name="l00372"></a>00372 <span class="comment">     * MGRS string.</span>
-<a name="l00373"></a>00373 <span class="comment">     *</span>
-<a name="l00374"></a>00374 <span class="comment">     * @param[in] prec precision (relative to about 1m).</span>
-<a name="l00375"></a>00375 <span class="comment">     * @return MGRS string.</span>
-<a name="l00376"></a>00376 <span class="comment">     *</span>
-<a name="l00377"></a>00377 <span class="comment">     * This gives the coordinates of the enclosing grid square with size given</span>
-<a name="l00378"></a>00378 <span class="comment">     * by the precision.  Thus 38N 444180 3684790 converted to a MGRS</span>
-<a name="l00379"></a>00379 <span class="comment">     * coordinate at precision -2 (100m) is 38SMB441847 and not 38SMB442848.</span>
-<a name="l00380"></a>00380 <span class="comment">     * \e prec specifies the precision of the MGRS string as follows:</span>
-<a name="l00381"></a>00381 <span class="comment">     * - prec = -5 (min), 100km</span>
-<a name="l00382"></a>00382 <span class="comment">     * - prec = -4, 10km</span>
-<a name="l00383"></a>00383 <span class="comment">     * - prec = -3, 1km</span>
-<a name="l00384"></a>00384 <span class="comment">     * - prec = -2, 100m</span>
-<a name="l00385"></a>00385 <span class="comment">     * - prec = -1, 10m</span>
-<a name="l00386"></a>00386 <span class="comment">     * - prec = 0, 1m</span>
-<a name="l00387"></a>00387 <span class="comment">     * - prec = 1, 0.1m</span>
-<a name="l00388"></a>00388 <span class="comment">     * - prec = 6 (max), 1um</span>
-<a name="l00389"></a>00389 <span class="comment">     **********************************************************************/</span>
-<a name="l00390"></a>00390     std::string MGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
-<a name="l00391"></a>00391 <span class="comment"></span>
-<a name="l00392"></a>00392 <span class="comment">    /**</span>
-<a name="l00393"></a>00393 <span class="comment">     * UTM/UPS string.</span>
-<a name="l00394"></a>00394 <span class="comment">     *</span>
-<a name="l00395"></a>00395 <span class="comment">     * @param[in] prec precision (relative to about 1m)</span>
-<a name="l00396"></a>00396 <span class="comment">     * @return UTM/UPS string representation: zone designator, easting, and</span>
-<a name="l00397"></a>00397 <span class="comment">     *   northing.</span>
-<a name="l00398"></a>00398 <span class="comment">     *</span>
-<a name="l00399"></a>00399 <span class="comment">     * Precision specifies accuracy of representation as follows:</span>
-<a name="l00400"></a>00400 <span class="comment">     * - prec = -5 (min), 100km</span>
-<a name="l00401"></a>00401 <span class="comment">     * - prec = -3, 1km</span>
-<a name="l00402"></a>00402 <span class="comment">     * - prec = 0, 1m</span>
-<a name="l00403"></a>00403 <span class="comment">     * - prec = 3, 1mm</span>
-<a name="l00404"></a>00404 <span class="comment">     * - prec = 6, 1um</span>
-<a name="l00405"></a>00405 <span class="comment">     * - prec = 9 (max), 1nm</span>
-<a name="l00406"></a>00406 <span class="comment">     **********************************************************************/</span>
-<a name="l00407"></a>00407     std::string UTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
-<a name="l00408"></a>00408 <span class="comment"></span>
-<a name="l00409"></a>00409 <span class="comment">    /**</span>
-<a name="l00410"></a>00410 <span class="comment">     * MGRS string for the alternate zone.  See GeoCoords::MGRSRepresentation.</span>
-<a name="l00411"></a>00411 <span class="comment">     **********************************************************************/</span>
-<a name="l00412"></a>00412     std::string AltMGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
-<a name="l00413"></a>00413 <span class="comment"></span>
-<a name="l00414"></a>00414 <span class="comment">    /**</span>
-<a name="l00415"></a>00415 <span class="comment">     * UTM/UPS string for the alternate zone.  See</span>
-<a name="l00416"></a>00416 <span class="comment">     * GeoCoords::UTMUPSRepresentation.</span>
-<a name="l00417"></a>00417 <span class="comment">     **********************************************************************/</span>
-<a name="l00418"></a>00418     std::string AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;<span class="comment"></span>
-<a name="l00419"></a>00419 <span class="comment">    ///@}</span>
-<a name="l00420"></a>00420 <span class="comment"></span><span class="comment"></span>
-<a name="l00421"></a>00421 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00422"></a>00422 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00423"></a>00423 <span class="comment">    ///@{</span>
-<a name="l00424"></a>00424 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00425"></a>00425 <span class="comment">     * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
-<a name="l00426"></a>00426 <span class="comment">     *</span>
-<a name="l00427"></a>00427 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
-<a name="l00428"></a>00428 <span class="comment">     * based on this ellipsoid.)</span>
-<a name="l00429"></a>00429 <span class="comment">     **********************************************************************/</span>
-<a name="l00430"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">00430</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a293aa [...]
-<a name="l00431"></a>00431 <span class="comment"></span>
-<a name="l00432"></a>00432 <span class="comment">    /**</span>
-<a name="l00433"></a>00433 <span class="comment">     * @return \e f the flattening of the WGS84 ellipsoid.</span>
-<a name="l00434"></a>00434 <span class="comment">     *</span>
-<a name="l00435"></a>00435 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
-<a name="l00436"></a>00436 <span class="comment">     * based on this ellipsoid.)</span>
-<a name="l00437"></a>00437 <span class="comment">     **********************************************************************/</span>
-<a name="l00438"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">00438</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2 [...]
-<a name="l00439"></a>00439 <span class="comment"></span>
-<a name="l00440"></a>00440 <span class="comment">    /**</span>
-<a name="l00441"></a>00441 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00442"></a>00442 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00443"></a>00443 <span class="comment">     **********************************************************************/</span>
-<a name="l00444"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">00444</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00445"></a>00445     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">UTMUPS::InverseFlattening</a>(); }<span class="comment"></span>
-<a name="l00446"></a>00446 <span class="comment">    ///@}</span>
-<a name="l00447"></a>00447 <span class="comment"></span>  };
-<a name="l00448"></a>00448 
-<a name="l00449"></a>00449 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00450"></a>00450 
-<a name="l00451"></a>00451 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEOCOORDS_HPP</span>
+<a name="l00193"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">00193</a>     <a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
+<a name="l00194"></a>00194       Reset(zone, northp, easting, northing);
+<a name="l00195"></a>00195     }
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment">    /**</span>
+<a name="l00198"></a>00198 <span class="comment">     * Reset the location from a string.  See</span>
+<a name="l00199"></a>00199 <span class="comment">     * GeoCoords(const std::string& s, bool centerp, bool swaplatlong).</span>
+<a name="l00200"></a>00200 <span class="comment">     **********************************************************************/</span>
+<a name="l00201"></a>00201     <span class="keywordtype">void</span> Reset(<span class="keyword">const</span> std::string& s,
+<a name="l00202"></a>00202                <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>);
+<a name="l00203"></a>00203 <span class="comment"></span>
+<a name="l00204"></a>00204 <span class="comment">    /**</span>
+<a name="l00205"></a>00205 <span class="comment">     * Reset the location in terms of geographic coordinates.  See</span>
+<a name="l00206"></a>00206 <span class="comment">     * GeoCoords(real latitude, real longitude, int zone).</span>
+<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">00208</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">Reset</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
+<a name="l00209"></a>00209       <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(latitude, longitude,
+<a name="l00210"></a>00210                       _zone, _northp, _easting, _northing, _gamma, _k,
+<a name="l00211"></a>00211                       zone);
+<a name="l00212"></a>00212       _lat = latitude;
+<a name="l00213"></a>00213       _long = longitude;
+<a name="l00214"></a>00214       <span class="keywordflow">if</span> (_long >= 180)
+<a name="l00215"></a>00215         _long -= 360;
+<a name="l00216"></a>00216       CopyToAlt();
+<a name="l00217"></a>00217     }
+<a name="l00218"></a>00218 <span class="comment"></span>
+<a name="l00219"></a>00219 <span class="comment">    /**</span>
+<a name="l00220"></a>00220 <span class="comment">     * Reset the location in terms of UPS/UPS coordinates.  See</span>
+<a name="l00221"></a>00221 <span class="comment">     * GeoCoords(int zone, bool northp, real easting, real northing).</span>
+<a name="l00222"></a>00222 <span class="comment">     **********************************************************************/</span>
+<a name="l00223"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">00223</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">Reset</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
+<a name="l00224"></a>00224       <a class="code" href="classGeographicLib_1_1UTMUPS.html#aaf417ae6bed6da324aa03fc96ee0dda4">UTMUPS::Reverse</a>(zone, northp, easting, northing,
+<a name="l00225"></a>00225                       _lat, _long, _gamma, _k);
+<a name="l00226"></a>00226       _zone = zone;
+<a name="l00227"></a>00227       _northp = northp;
+<a name="l00228"></a>00228       _easting = easting;
+<a name="l00229"></a>00229       _northing = northing;
+<a name="l00230"></a>00230       FixHemisphere();
+<a name="l00231"></a>00231       CopyToAlt();
+<a name="l00232"></a>00232     }<span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment">    ///@}</span>
+<a name="l00234"></a>00234 <span class="comment"></span><span class="comment"></span>
+<a name="l00235"></a>00235 <span class="comment">    /** \name Querying the GeoCoords object</span>
+<a name="l00236"></a>00236 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">    ///@{</span>
+<a name="l00238"></a>00238 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00239"></a>00239 <span class="comment">     * @return latitude (degrees)</span>
+<a name="l00240"></a>00240 <span class="comment">     **********************************************************************/</span>
+<a name="l00241"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">00241</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat; }
+<a name="l00242"></a>00242 <span class="comment"></span>
+<a name="l00243"></a>00243 <span class="comment">    /**</span>
+<a name="l00244"></a>00244 <span class="comment">     * @return longitude (degrees)</span>
+<a name="l00245"></a>00245 <span class="comment">     **********************************************************************/</span>
+<a name="l00246"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">00246</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _long; }
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment">    /**</span>
+<a name="l00249"></a>00249 <span class="comment">     * @return easting (meters)</span>
+<a name="l00250"></a>00250 <span class="comment">     **********************************************************************/</span>
+<a name="l00251"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">00251</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">Easting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _easting; }
+<a name="l00252"></a>00252 <span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment">    /**</span>
+<a name="l00254"></a>00254 <span class="comment">     * @return northing (meters)</span>
+<a name="l00255"></a>00255 <span class="comment">     **********************************************************************/</span>
+<a name="l00256"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">00256</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">Northing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northing; }
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment">    /**</span>
+<a name="l00259"></a>00259 <span class="comment">     * @return meridian convergence (degrees) for the UTM/UPS projection.</span>
+<a name="l00260"></a>00260 <span class="comment">     **********************************************************************/</span>
+<a name="l00261"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">00261</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">Convergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _gamma; }
+<a name="l00262"></a>00262 <span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment">    /**</span>
+<a name="l00264"></a>00264 <span class="comment">     * @return scale for the UTM/UPS projection.</span>
+<a name="l00265"></a>00265 <span class="comment">     **********************************************************************/</span>
+<a name="l00266"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">00266</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k; }
+<a name="l00267"></a>00267 <span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment">    /**</span>
+<a name="l00269"></a>00269 <span class="comment">     * @return hemisphere (false means south, true means north).</span>
+<a name="l00270"></a>00270 <span class="comment">     **********************************************************************/</span>
+<a name="l00271"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">00271</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">Northp</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp; }
+<a name="l00272"></a>00272 <span class="comment"></span>
+<a name="l00273"></a>00273 <span class="comment">    /**</span>
+<a name="l00274"></a>00274 <span class="comment">     * @return hemisphere letter N or S.</span>
+<a name="l00275"></a>00275 <span class="comment">     **********************************************************************/</span>
+<a name="l00276"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">00276</a>     <span class="keywordtype">char</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">Hemisphere</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp ? <span class="charliteral">'N'</span> : <span class="charliteral">'S'</span>; }
+<a name="l00277"></a>00277 <span class="comment"></span>
+<a name="l00278"></a>00278 <span class="comment">    /**</span>
+<a name="l00279"></a>00279 <span class="comment">     * @return the zone corresponding to the input (return 0 for UPS).</span>
+<a name="l00280"></a>00280 <span class="comment">     **********************************************************************/</span>
+<a name="l00281"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">00281</a>     <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">Zone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _zone; }
+<a name="l00282"></a>00282 <span class="comment"></span>
+<a name="l00283"></a>00283 <span class="comment">    ///@}</span>
+<a name="l00284"></a>00284 <span class="comment"></span><span class="comment"></span>
+<a name="l00285"></a>00285 <span class="comment">    /** \name Setting and querying the alternate zone</span>
+<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment">    ///@{</span>
+<a name="l00288"></a>00288 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00289"></a>00289 <span class="comment">     * Specify alternate zone number.</span>
+<a name="l00290"></a>00290 <span class="comment">     *</span>
+<a name="l00291"></a>00291 <span class="comment">     * @param[in] zone zone number for the alternate representation.</span>
+<a name="l00292"></a>00292 <span class="comment">     *</span>
+<a name="l00293"></a>00293 <span class="comment">     * See UTMUPS::zonespec for more information on the interpretation of \e</span>
+<a name="l00294"></a>00294 <span class="comment">     * zone.  Note that \e zone == UTMUPS::STANDARD (the default) use the</span>
+<a name="l00295"></a>00295 <span class="comment">     * standard UPS or UTM zone, UTMUPS::MATCH does nothing retaining the</span>
+<a name="l00296"></a>00296 <span class="comment">     * existing alternate representation.  Before this is called the alternate</span>
+<a name="l00297"></a>00297 <span class="comment">     * zone is the input zone.</span>
+<a name="l00298"></a>00298 <span class="comment">     **********************************************************************/</span>
+<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">00299</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">SetAltZone</a>(<span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>)<span class="keyword"> cons [...]
+<a name="l00300"></a>00300       <span class="keywordflow">if</span> (zone == <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">UTMUPS::MATCH</a>)
+<a name="l00301"></a>00301         <span class="keywordflow">return</span>;
+<a name="l00302"></a>00302       zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">UTMUPS::StandardZone</a>(_lat, _long, zone);
+<a name="l00303"></a>00303       <span class="keywordflow">if</span> (zone == _zone)
+<a name="l00304"></a>00304         CopyToAlt();
+<a name="l00305"></a>00305       <span class="keywordflow">else</span> {
+<a name="l00306"></a>00306         <span class="keywordtype">bool</span> northp;
+<a name="l00307"></a>00307         <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(_lat, _long,
+<a name="l00308"></a>00308                         _alt_zone, northp,
+<a name="l00309"></a>00309                         _alt_easting, _alt_northing, _alt_gamma, _alt_k,
+<a name="l00310"></a>00310                         zone);
+<a name="l00311"></a>00311       }
+<a name="l00312"></a>00312     }
+<a name="l00313"></a>00313 <span class="comment"></span>
+<a name="l00314"></a>00314 <span class="comment">    /**</span>
+<a name="l00315"></a>00315 <span class="comment">     * @return current alternate zone (return 0 for UPS).</span>
+<a name="l00316"></a>00316 <span class="comment">     **********************************************************************/</span>
+<a name="l00317"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">00317</a>     <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">AltZone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_zone; }
+<a name="l00318"></a>00318 <span class="comment"></span>
+<a name="l00319"></a>00319 <span class="comment">    /**</span>
+<a name="l00320"></a>00320 <span class="comment">     * @return easting (meters) for alternate zone.</span>
+<a name="l00321"></a>00321 <span class="comment">     **********************************************************************/</span>
+<a name="l00322"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">00322</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">AltEasting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_easting; }
+<a name="l00323"></a>00323 <span class="comment"></span>
+<a name="l00324"></a>00324 <span class="comment">    /**</span>
+<a name="l00325"></a>00325 <span class="comment">     * @return northing (meters) for alternate zone.</span>
+<a name="l00326"></a>00326 <span class="comment">     **********************************************************************/</span>
+<a name="l00327"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">00327</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">AltNorthing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_northing; }
+<a name="l00328"></a>00328 <span class="comment"></span>
+<a name="l00329"></a>00329 <span class="comment">    /**</span>
+<a name="l00330"></a>00330 <span class="comment">     * @return meridian convergence (degrees) for alternate zone.</span>
+<a name="l00331"></a>00331 <span class="comment">     **********************************************************************/</span>
+<a name="l00332"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">00332</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">AltConvergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_gamma; }
+<a name="l00333"></a>00333 <span class="comment"></span>
+<a name="l00334"></a>00334 <span class="comment">    /**</span>
+<a name="l00335"></a>00335 <span class="comment">     * @return scale for alternate zone.</span>
+<a name="l00336"></a>00336 <span class="comment">     **********************************************************************/</span>
+<a name="l00337"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">00337</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">AltScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_k; }<span class="comment"></span>
+<a name="l00338"></a>00338 <span class="comment">    ///@}</span>
+<a name="l00339"></a>00339 <span class="comment"></span><span class="comment"></span>
+<a name="l00340"></a>00340 <span class="comment">    /** \name String representations of the GeoCoords object</span>
+<a name="l00341"></a>00341 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment">    ///@{</span>
+<a name="l00343"></a>00343 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00344"></a>00344 <span class="comment">     * String representation with latitude and longitude as signed decimal</span>
+<a name="l00345"></a>00345 <span class="comment">     * degrees.</span>
+<a name="l00346"></a>00346 <span class="comment">     *</span>
+<a name="l00347"></a>00347 <span class="comment">     * @param[in] prec precision (relative to about 1m).</span>
+<a name="l00348"></a>00348 <span class="comment">     * @param[in] swaplatlong if true give longitude first (default = false)</span>
+<a name="l00349"></a>00349 <span class="comment">     * @return decimal latitude/longitude string representation.</span>
+<a name="l00350"></a>00350 <span class="comment">     *</span>
+<a name="l00351"></a>00351 <span class="comment">     * Precision specifies accuracy of representation as follows:</span>
+<a name="l00352"></a>00352 <span class="comment">     * - prec = -5 (min), 1d</span>
+<a name="l00353"></a>00353 <span class="comment">     * - prec = 0, 10<sup>-5</sup>d (about 1m)</span>
+<a name="l00354"></a>00354 <span class="comment">     * - prec = 3, 10<sup>-8</sup>d</span>
+<a name="l00355"></a>00355 <span class="comment">     * - prec = 9 (max), 10<sup>-14</sup>d</span>
+<a name="l00356"></a>00356 <span class="comment">     **********************************************************************/</span>
+<a name="l00357"></a>00357     std::string GeoRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
+<a name="l00358"></a>00358 <span class="comment"></span>
+<a name="l00359"></a>00359 <span class="comment">    /**</span>
+<a name="l00360"></a>00360 <span class="comment">     * String representation with latitude and longitude as degrees, minutes,</span>
+<a name="l00361"></a>00361 <span class="comment">     * seconds, and hemisphere.</span>
+<a name="l00362"></a>00362 <span class="comment">     *</span>
+<a name="l00363"></a>00363 <span class="comment">     * @param[in] prec precision (relative to about 1m)</span>
+<a name="l00364"></a>00364 <span class="comment">     * @param[in] swaplatlong if true give longitude first (default = false)</span>
+<a name="l00365"></a>00365 <span class="comment">     * @param[in] dmssep if non-null, use as the DMS separator character</span>
+<a name="l00366"></a>00366 <span class="comment">     *   (instead of d, ', &quot; delimiters).</span>
+<a name="l00367"></a>00367 <span class="comment">     * @return DMS latitude/longitude string representation.</span>
+<a name="l00368"></a>00368 <span class="comment">     *</span>
+<a name="l00369"></a>00369 <span class="comment">     * Precision specifies accuracy of representation as follows:</span>
+<a name="l00370"></a>00370 <span class="comment">     * - prec = -5 (min), 1d</span>
+<a name="l00371"></a>00371 <span class="comment">     * - prec = -4, 0.1d</span>
+<a name="l00372"></a>00372 <span class="comment">     * - prec = -3, 1'</span>
+<a name="l00373"></a>00373 <span class="comment">     * - prec = -2, 0.1'</span>
+<a name="l00374"></a>00374 <span class="comment">     * - prec = -1, 1&quot;</span>
+<a name="l00375"></a>00375 <span class="comment">     * - prec = 0, 0.1&quot; (about 3m)</span>
+<a name="l00376"></a>00376 <span class="comment">     * - prec = 1, 0.01&quot;</span>
+<a name="l00377"></a>00377 <span class="comment">     * - prec = 10 (max), 10<sup>-11</sup>&quot;</span>
+<a name="l00378"></a>00378 <span class="comment">     **********************************************************************/</span>
+<a name="l00379"></a>00379     std::string DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong, <span class="keywordtype">char</span> dmssep)
+<a name="l00380"></a>00380       <span class="keyword">const</span>;
+<a name="l00381"></a>00381 <span class="comment"></span>
+<a name="l00382"></a>00382 <span class="comment">    /**</span>
+<a name="l00383"></a>00383 <span class="comment">     * String representation with latitude and longitude as degrees, minutes,</span>
+<a name="l00384"></a>00384 <span class="comment">     * seconds, and hemisphere.</span>
+<a name="l00385"></a>00385 <span class="comment">     *</span>
+<a name="l00386"></a>00386 <span class="comment">     * @param[in] prec precision (relative to about 1m)</span>
+<a name="l00387"></a>00387 <span class="comment">     * @param[in] swaplatlong if true give longitude first (default = false)</span>
+<a name="l00388"></a>00388 <span class="comment">     * @return DMS latitude/longitude string representation.</span>
+<a name="l00389"></a>00389 <span class="comment">     *</span>
+<a name="l00390"></a>00390 <span class="comment">     * <b>COMPATIBILITY NOTE:</b> This function calls</span>
+<a name="l00391"></a>00391 <span class="comment">     * DMSRepresentation(int, bool, char) const with a 3rd argument of</span>
+<a name="l00392"></a>00392 <span class="comment">     * char(0).  At some point, DMSRepresentation(int, bool) const and</span>
+<a name="l00393"></a>00393 <span class="comment">     * will be withdrawn and the interface to</span>
+<a name="l00394"></a>00394 <span class="comment">     * DMSRepresentation(int, bool, char) const changed so that its</span>
+<a name="l00395"></a>00395 <span class="comment">     * arguments have default values.  This will preserve source-level</span>
+<a name="l00396"></a>00396 <span class="comment">     * compatibility.</span>
+<a name="l00397"></a>00397 <span class="comment">     **********************************************************************/</span>
+<a name="l00398"></a>00398     std::string DMSRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
+<a name="l00399"></a>00399 <span class="comment"></span>
+<a name="l00400"></a>00400 <span class="comment">    /**</span>
+<a name="l00401"></a>00401 <span class="comment">     * MGRS string.</span>
+<a name="l00402"></a>00402 <span class="comment">     *</span>
+<a name="l00403"></a>00403 <span class="comment">     * @param[in] prec precision (relative to about 1m).</span>
+<a name="l00404"></a>00404 <span class="comment">     * @return MGRS string.</span>
+<a name="l00405"></a>00405 <span class="comment">     *</span>
+<a name="l00406"></a>00406 <span class="comment">     * This gives the coordinates of the enclosing grid square with size given</span>
+<a name="l00407"></a>00407 <span class="comment">     * by the precision.  Thus 38N 444180 3684790 converted to a MGRS</span>
+<a name="l00408"></a>00408 <span class="comment">     * coordinate at precision -2 (100m) is 38SMB441847 and not 38SMB442848.</span>
+<a name="l00409"></a>00409 <span class="comment">     * \e prec specifies the precision of the MGRS string as follows:</span>
+<a name="l00410"></a>00410 <span class="comment">     * - prec = -5 (min), 100km</span>
+<a name="l00411"></a>00411 <span class="comment">     * - prec = -4, 10km</span>
+<a name="l00412"></a>00412 <span class="comment">     * - prec = -3, 1km</span>
+<a name="l00413"></a>00413 <span class="comment">     * - prec = -2, 100m</span>
+<a name="l00414"></a>00414 <span class="comment">     * - prec = -1, 10m</span>
+<a name="l00415"></a>00415 <span class="comment">     * - prec = 0, 1m</span>
+<a name="l00416"></a>00416 <span class="comment">     * - prec = 1, 0.1m</span>
+<a name="l00417"></a>00417 <span class="comment">     * - prec = 6 (max), 1um</span>
+<a name="l00418"></a>00418 <span class="comment">     **********************************************************************/</span>
+<a name="l00419"></a>00419     std::string MGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
+<a name="l00420"></a>00420 <span class="comment"></span>
+<a name="l00421"></a>00421 <span class="comment">    /**</span>
+<a name="l00422"></a>00422 <span class="comment">     * UTM/UPS string.</span>
+<a name="l00423"></a>00423 <span class="comment">     *</span>
+<a name="l00424"></a>00424 <span class="comment">     * @param[in] prec precision (relative to about 1m)</span>
+<a name="l00425"></a>00425 <span class="comment">     * @return UTM/UPS string representation: zone designator, easting, and</span>
+<a name="l00426"></a>00426 <span class="comment">     *   northing.</span>
+<a name="l00427"></a>00427 <span class="comment">     *</span>
+<a name="l00428"></a>00428 <span class="comment">     * Precision specifies accuracy of representation as follows:</span>
+<a name="l00429"></a>00429 <span class="comment">     * - prec = -5 (min), 100km</span>
+<a name="l00430"></a>00430 <span class="comment">     * - prec = -3, 1km</span>
+<a name="l00431"></a>00431 <span class="comment">     * - prec = 0, 1m</span>
+<a name="l00432"></a>00432 <span class="comment">     * - prec = 3, 1mm</span>
+<a name="l00433"></a>00433 <span class="comment">     * - prec = 6, 1um</span>
+<a name="l00434"></a>00434 <span class="comment">     * - prec = 9 (max), 1nm</span>
+<a name="l00435"></a>00435 <span class="comment">     **********************************************************************/</span>
+<a name="l00436"></a>00436     std::string UTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
+<a name="l00437"></a>00437 <span class="comment"></span>
+<a name="l00438"></a>00438 <span class="comment">    /**</span>
+<a name="l00439"></a>00439 <span class="comment">     * MGRS string for the alternate zone.  See GeoCoords::MGRSRepresentation.</span>
+<a name="l00440"></a>00440 <span class="comment">     **********************************************************************/</span>
+<a name="l00441"></a>00441     std::string AltMGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
+<a name="l00442"></a>00442 <span class="comment"></span>
+<a name="l00443"></a>00443 <span class="comment">    /**</span>
+<a name="l00444"></a>00444 <span class="comment">     * UTM/UPS string for the alternate zone.  See</span>
+<a name="l00445"></a>00445 <span class="comment">     * GeoCoords::UTMUPSRepresentation.</span>
+<a name="l00446"></a>00446 <span class="comment">     **********************************************************************/</span>
+<a name="l00447"></a>00447     std::string AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;<span class="comment"></span>
+<a name="l00448"></a>00448 <span class="comment">    ///@}</span>
+<a name="l00449"></a>00449 <span class="comment"></span><span class="comment"></span>
+<a name="l00450"></a>00450 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00451"></a>00451 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00452"></a>00452 <span class="comment">    ///@{</span>
+<a name="l00453"></a>00453 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00454"></a>00454 <span class="comment">     * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
+<a name="l00455"></a>00455 <span class="comment">     *</span>
+<a name="l00456"></a>00456 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
+<a name="l00457"></a>00457 <span class="comment">     * based on this ellipsoid.)</span>
+<a name="l00458"></a>00458 <span class="comment">     **********************************************************************/</span>
+<a name="l00459"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">00459</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib [...]
+<a name="l00460"></a>00460 <span class="comment"></span>
+<a name="l00461"></a>00461 <span class="comment">    /**</span>
+<a name="l00462"></a>00462 <span class="comment">     * @return \e f the flattening of the WGS84 ellipsoid.</span>
+<a name="l00463"></a>00463 <span class="comment">     *</span>
+<a name="l00464"></a>00464 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
+<a name="l00465"></a>00465 <span class="comment">     * based on this ellipsoid.)</span>
+<a name="l00466"></a>00466 <span class="comment">     **********************************************************************/</span>
+<a name="l00467"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">00467</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_ [...]
+<a name="l00468"></a>00468 <span class="comment">    ///@}</span>
+<a name="l00469"></a>00469 <span class="comment"></span><span class="comment"></span>
+<a name="l00470"></a>00470 <span class="comment">    /// \cond SKIP</span>
+<a name="l00471"></a>00471 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00472"></a>00472 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00473"></a>00473 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00474"></a>00474 <span class="comment">     **********************************************************************/</span>
+<a name="l00475"></a>00475     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00476"></a>00476     { <span class="keywordflow">return</span> UTMUPS::InverseFlattening(); }<span class="comment"></span>
+<a name="l00477"></a>00477 <span class="comment">    /// \endcond</span>
+<a name="l00478"></a>00478 <span class="comment"></span>  };
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00481"></a>00481 
+<a name="l00482"></a>00482 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEOCOORDS_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geocentric_8cpp.html b/doc/html/Geocentric_8cpp.html
index c251bf8..bc00bfa 100644
--- a/doc/html/Geocentric_8cpp.html
+++ b/doc/html/Geocentric_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geocentric.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">GEOGRAPHICLIB_GEOCENTRIC_CPP</a>   "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">GEOGRAPHICLIB_GEOCENTRIC_CPP</a>   "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Geocentric_8cpp_source.html">Geocentric.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_CPP   "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_CPP   "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geocentric_8cpp_source.html b/doc/html/Geocentric_8cpp_source.html
index dcab89a..f82d8bf 100644
--- a/doc/html/Geocentric_8cpp_source.html
+++ b/doc/html/Geocentric_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geocentric.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geocentric.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::Geocentric class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="Geocentric_8hpp.html" title="Header for GeographicLib::Geocentric class.">GeographicLib/Geocentric.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOCENTRIC_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">GEOGRAPHICLIB_GEOCENTRIC_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">GEOGRAPHICLIB_GEOCENTRIC_HPP</a>)
@@ -77,9 +92,9 @@
 <a name="l00028"></a>00028     , _e4a(<a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::sq(_e2))
 <a name="l00029"></a>00029     , _maxrad(2 * _a / numeric_limits<real>::epsilon())
 <a name="l00030"></a>00030   {
-<a name="l00031"></a>00031     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00031"></a>00031     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00032"></a>00032       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00033"></a>00033     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00033"></a>00033     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00034"></a>00034       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
 <a name="l00035"></a>00035   }
 <a name="l00036"></a>00036 
@@ -91,11 +106,11 @@
 <a name="l00042"></a>00042                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00043"></a>00043     lon = lon >= 180 ? lon - 360 : (lon < -180 ? lon + 360 : lon);
 <a name="l00044"></a>00044     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00045"></a>00045       phi = lat * Math::degree<real>(),
+<a name="l00045"></a>00045       phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00046"></a>00046       lam = lon * Math::degree<real>(),
 <a name="l00047"></a>00047       sphi = sin(phi),
 <a name="l00048"></a>00048       cphi = abs(lat) == 90 ? 0 : cos(phi),
-<a name="l00049"></a>00049       n = _a/sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi)),
+<a name="l00049"></a>00049       n = _a/sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi)),
 <a name="l00050"></a>00050       slam = lon == -180 ? 0 : sin(lam),
 <a name="l00051"></a>00051       clam = abs(lon) == 90 ? 0 : cos(lam);
 <a name="l00052"></a>00052     Z = ( _e2m * n + h) * sphi;
@@ -110,10 +125,10 @@
 <a name="l00061"></a>00061                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& h,
 <a name="l00062"></a>00062                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00063"></a>00063     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00064"></a>00064       R = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),
+<a name="l00064"></a>00064       R = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y),
 <a name="l00065"></a>00065       slam = R ? Y / R : 0,
 <a name="l00066"></a>00066       clam = R ? X / R : 1;
-<a name="l00067"></a>00067     h = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(R, Z);      <span class="comment">// Distance to center of earth</span>
+<a name="l00067"></a>00067     h = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(R, Z);      <span class="comment">// Distance to center of earth</span>
 <a name="l00068"></a>00068     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi, cphi;
 <a name="l00069"></a>00069     <span class="keywordflow">if</span> (h > _maxrad) {
 <a name="l00070"></a>00070       <span class="comment">// We really far away (> 12 million light years); treat the earth as a</span>
@@ -122,17 +137,17 @@
 <a name="l00073"></a>00073       <span class="comment">// possible that h has overflowed to inf; but that's OK.</span>
 <a name="l00074"></a>00074       <span class="comment">//</span>
 <a name="l00075"></a>00075       <span class="comment">// Treat the case X, Y finite, but R overflows to +inf by scaling by 2.</span>
-<a name="l00076"></a>00076       R = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X/2, Y/2);
+<a name="l00076"></a>00076       R = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X/2, Y/2);
 <a name="l00077"></a>00077       slam = R ? (Y/2) / R : 0;
 <a name="l00078"></a>00078       clam = R ? (X/2) / R : 1;
-<a name="l00079"></a>00079       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Z/2, R);
+<a name="l00079"></a>00079       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Z/2, R);
 <a name="l00080"></a>00080       sphi = (Z/2) / H;
 <a name="l00081"></a>00081       cphi = R / H;
 <a name="l00082"></a>00082     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_e4a == 0) {
 <a name="l00083"></a>00083       <span class="comment">// Treat the spherical case.  Dealing with underflow in the general case</span>
 <a name="l00084"></a>00084       <span class="comment">// with _e2 = 0 is difficult.  Origin maps to N pole same as with</span>
 <a name="l00085"></a>00085       <span class="comment">// ellipsoid.</span>
-<a name="l00086"></a>00086       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(h == 0 ? 1 : Z, R);
+<a name="l00086"></a>00086       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(h == 0 ? 1 : Z, R);
 <a name="l00087"></a>00087       sphi = (h == 0 ? 1 : Z) / H;
 <a name="l00088"></a>00088       cphi = R / H;
 <a name="l00089"></a>00089       h -= _a;
@@ -140,8 +155,8 @@
 <a name="l00091"></a>00091       <span class="comment">// Treat prolate spheroids by swapping R and Z here and by switching</span>
 <a name="l00092"></a>00092       <span class="comment">// the arguments to phi = atan2(...) at the end.</span>
 <a name="l00093"></a>00093       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00094"></a>00094         p = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(R / _a),
-<a name="l00095"></a>00095         q = _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(Z / _a),
+<a name="l00094"></a>00094         p = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(R / _a),
+<a name="l00095"></a>00095         q = _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(Z / _a),
 <a name="l00096"></a>00096         r = (p + q - _e4a) / 6;
 <a name="l00097"></a>00097       <span class="keywordflow">if</span> (_f < 0) swap(p, q);
 <a name="l00098"></a>00098       <span class="keywordflow">if</span> ( !(_e4a * q == 0 && r <= 0) ) {
@@ -149,9 +164,9 @@
 <a name="l00100"></a>00100           <span class="comment">// Avoid possible division by zero when r = 0 by multiplying</span>
 <a name="l00101"></a>00101           <span class="comment">// equations for s and t by r^3 and r, resp.</span>
 <a name="l00102"></a>00102           S = _e4a * p * q / 4, <span class="comment">// S = r^3 * s</span>
-<a name="l00103"></a>00103           r2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(r),
+<a name="l00103"></a>00103           r2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(r),
 <a name="l00104"></a>00104           r3 = r * r2,
-<a name="l00105"></a>00105           disc =  S * (2 * r3 + S);
+<a name="l00105"></a>00105           disc = S * (2 * r3 + S);
 <a name="l00106"></a>00106         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u = r;
 <a name="l00107"></a>00107         <span class="keywordflow">if</span> (disc >= 0) {
 <a name="l00108"></a>00108           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T3 = S + r3;
@@ -160,7 +175,7 @@
 <a name="l00111"></a>00111           <span class="comment">// because of the way the T is used in definition of u.</span>
 <a name="l00112"></a>00112           T3 += T3 < 0 ? -sqrt(disc) : sqrt(disc); <span class="comment">// T3 = (r * t)^3</span>
 <a name="l00113"></a>00113           <span class="comment">// N.B. cbrt always returns the real root.  cbrt(-8) = -2.</span>
-<a name="l00114"></a>00114           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
+<a name="l00114"></a>00114           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
 <a name="l00115"></a>00115           <span class="comment">// T can be zero; but then r2 / T -> 0.</span>
 <a name="l00116"></a>00116           u += T + (T != 0 ? r2 / T : 0);
 <a name="l00117"></a>00117         } <span class="keywordflow">else</span> {
@@ -171,7 +186,7 @@
 <a name="l00122"></a>00122           u += 2 * r * cos(ang / 3);
 <a name="l00123"></a>00123         }
 <a name="l00124"></a>00124         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00125"></a>00125           v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(u) + _e4a * q), <span class="comment">// guaranteed positive</span>
+<a name="l00125"></a>00125           v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(u) + _e4a * q), <span class="comment">// guaranteed positive</span>
 <a name="l00126"></a>00126           <span class="comment">// Avoid loss of accuracy when u < 0.  Underflow doesn't occur in</span>
 <a name="l00127"></a>00127           <span class="comment">// e4 * q / (v - u) because u ~ e^4 when q is small and u < 0.</span>
 <a name="l00128"></a>00128           uv = u < 0 ? _e4a * q / (v - u) : u + v, <span class="comment">// u+v, guaranteed positive</span>
@@ -179,14 +194,14 @@
 <a name="l00130"></a>00130           w = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), _e2a * (uv - q) / (2 * v)),
 <a name="l00131"></a>00131           <span class="comment">// Rearrange expression for k to avoid loss of accuracy due to</span>
 <a name="l00132"></a>00132           <span class="comment">// subtraction.  Division by 0 not possible because uv > 0, w >= 0.</span>
-<a name="l00133"></a>00133           k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(w)) + w),
+<a name="l00133"></a>00133           k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(w)) + w),
 <a name="l00134"></a>00134           k1 = _f >= 0 ? k : k - _e2,
 <a name="l00135"></a>00135           k2 = _f >= 0 ? k + _e2 : k,
 <a name="l00136"></a>00136           d = k1 * R / k2,
-<a name="l00137"></a>00137           H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Z/k1, R/k2);
+<a name="l00137"></a>00137           H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Z/k1, R/k2);
 <a name="l00138"></a>00138         sphi = (Z/k1) / H;
 <a name="l00139"></a>00139         cphi = (R/k2) / H;
-<a name="l00140"></a>00140         h = (1 - _e2m/k1) * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(d, Z);
+<a name="l00140"></a>00140         h = (1 - _e2m/k1) * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(d, Z);
 <a name="l00141"></a>00141       } <span class="keywordflow">else</span> {                  <span class="comment">// e4 * q == 0 && r <= 0</span>
 <a name="l00142"></a>00142         <span class="comment">// This leads to k = 0 (oblate, equatorial plane) and k + e^2 = 0</span>
 <a name="l00143"></a>00143         <span class="comment">// (prolate, rotation axis) and the generation of 0/0 in the general</span>
@@ -197,7 +212,7 @@
 <a name="l00148"></a>00148         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00149"></a>00149           zz = sqrt((_f >= 0 ? _e4a - p : p) / _e2m),
 <a name="l00150"></a>00150           xx = sqrt( _f <  0 ? _e4a - p : p        ),
-<a name="l00151"></a>00151           H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(zz, xx);
+<a name="l00151"></a>00151           H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(zz, xx);
 <a name="l00152"></a>00152         sphi = zz / H;
 <a name="l00153"></a>00153         cphi = xx / H;
 <a name="l00154"></a>00154         <span class="keywordflow">if</span> (Z < 0) sphi = -sphi; <span class="comment">// for tiny negative Z (not for prolate)</span>
@@ -231,8 +246,13 @@
 <a name="l00182"></a>00182 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geocentric_8hpp.html b/doc/html/Geocentric_8hpp.html
index f790572..58daa9f 100644
--- a/doc/html/Geocentric_8hpp.html
+++ b/doc/html/Geocentric_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geocentric.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,17 +83,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">GEOGRAPHICLIB_GEOCENTRIC_HPP</a>   "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">GEOGRAPHICLIB_GEOCENTRIC_HPP</a>   "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_HPP   "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_HPP   "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"</td>
         </tr>
       </table>
 </div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geocentric_8hpp_source.html b/doc/html/Geocentric_8hpp_source.html
index c39844f..d9f2bc0 100644
--- a/doc/html/Geocentric_8hpp_source.html
+++ b/doc/html/Geocentric_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geocentric.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geocentric.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Geocentric class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEOCENTRIC_HPP)</span>
 <a name="l00011"></a><a class="code" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEOCENTRIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <vector></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <algorithm></span>
@@ -105,225 +120,235 @@
 <a name="l00055"></a>00055 <span class="comment">   *</span>
 <a name="l00056"></a>00056 <span class="comment">   * Example of use:</span>
 <a name="l00057"></a>00057 <span class="comment">   * \include example-Geocentric.cpp</span>
-<a name="l00058"></a>00058 <span class="comment">   **********************************************************************/</span>
-<a name="l00059"></a>00059 
-<a name="l00060"></a><a class="code" href="classGeographicLib_1_1Geocentric.html">00060</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> {
-<a name="l00061"></a>00061   <span class="keyword">private</span>:
-<a name="l00062"></a>00062     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00063"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">00063</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>;
-<a name="l00064"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7294f6a1cc932f8fd1562a15602e9e86">00064</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>; <span class="comment">// MagneticCircle uses Rotation</span>
-<a name="l00065"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#af6619ebe4c078705fc49a0d9f950b431">00065</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>;  <span class="comment">// MagneticModel uses IntForward</span>
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a243c90a7f9bf3f7aa96877a4b0667a89">00066</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;  <span class="comment">// GravityCircle uses Rotation</span>
-<a name="l00067"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ada1db1d9f480d8044753ed869c995519">00067</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>;   <span class="comment">// GravityModel uses IntForward</span>
-<a name="l00068"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae7298549755c5982fe1be124d6631561">00068</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>;  <span class="comment">// NormalGravity uses IntForward</span>
-<a name="l00069"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae0383f6b1ce413d48e258750c3177f21">00069</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>;
-<a name="l00070"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#accac7c5b7843a1e4fb2baf0c83cc24f0">00070</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>;
-<a name="l00071"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a3eabc426b6edd718324c791ef3536360">00071</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>;
-<a name="l00072"></a>00072     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
-<a name="l00073"></a>00073     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
-<a name="l00074"></a>00074     real _a, _f, _e2, _e2m, _e2a, _e4a, _maxrad;
-<a name="l00075"></a>00075     <span class="keyword">static</span> <span class="keywordtype">void</span> Rotation(real sphi, real cphi, real slam, real clam,
-<a name="l00076"></a>00076                          real M[dim2_]) <span class="keywordflow">throw</span>();
-<a name="l00077"></a>00077     <span class="keyword">static</span> <span class="keywordtype">void</span> Rotate(real M[dim2_], real x, real y, real z,
-<a name="l00078"></a>00078                        real& X, real& Y, real& Z) <span class="keywordflow">throw</span>() {
-<a name="l00079"></a>00079       <span class="comment">// Perform [X,Y,Z]^t = M.[x,y,z]^t</span>
-<a name="l00080"></a>00080       <span class="comment">// (typically local cartesian to geocentric)</span>
-<a name="l00081"></a>00081       X = M[0] * x + M[1] * y + M[2] * z;
-<a name="l00082"></a>00082       Y = M[3] * x + M[4] * y + M[5] * z;
-<a name="l00083"></a>00083       Z = M[6] * x + M[7] * y + M[8] * z;
-<a name="l00084"></a>00084     }
-<a name="l00085"></a>00085     <span class="keyword">static</span> <span class="keywordtype">void</span> Unrotate(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
-<a name="l00086"></a>00086                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& z) <span class="keywordflow">throw</span>()  {
-<a name="l00087"></a>00087       <span class="comment">// Perform [x,y,z]^t = M^t.[X,Y,Z]^t</span>
-<a name="l00088"></a>00088       <span class="comment">// (typically geocentric to local cartesian)</span>
-<a name="l00089"></a>00089       x = M[0] * X + M[3] * Y + M[6] * Z;
-<a name="l00090"></a>00090       y = M[1] * X + M[4] * Y + M[7] * Z;
-<a name="l00091"></a>00091       z = M[2] * X + M[5] * Y + M[8] * Z;
-<a name="l00092"></a>00092     }
-<a name="l00093"></a>00093     <span class="keywordtype">void</span> IntForward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
-<a name="l00094"></a>00094                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00095"></a>00095     <span class="keywordtype">void</span> IntReverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
-<a name="l00096"></a>00096                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00097"></a>00097 
-<a name="l00098"></a>00098   <span class="keyword">public</span>:
-<a name="l00099"></a>00099 <span class="comment"></span>
-<a name="l00100"></a>00100 <span class="comment">    /**</span>
-<a name="l00101"></a>00101 <span class="comment">     * Constructor for a ellipsoid with</span>
-<a name="l00102"></a>00102 <span class="comment">     *</span>
-<a name="l00103"></a>00103 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
-<a name="l00104"></a>00104 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00105"></a>00105 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00106"></a>00106 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00107"></a>00107 <span class="comment">     *</span>
-<a name="l00108"></a>00108 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid is</span>
-<a name="l00109"></a>00109 <span class="comment">     * non-positive.</span>
-<a name="l00110"></a>00110 <span class="comment">     **********************************************************************/</span>
-<a name="l00111"></a>00111     Geocentric(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);
-<a name="l00112"></a>00112 <span class="comment"></span>
-<a name="l00113"></a>00113 <span class="comment">    /**</span>
-<a name="l00114"></a>00114 <span class="comment">     * A default constructor (for use by NormalGravity).</span>
-<a name="l00115"></a>00115 <span class="comment">     **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">00116</a>     <a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">Geocentric</a>() : _a(-1) {}
-<a name="l00117"></a>00117 <span class="comment"></span>
-<a name="l00118"></a>00118 <span class="comment">    /**</span>
-<a name="l00119"></a>00119 <span class="comment">     * Convert from geodetic to geocentric coordinates.</span>
-<a name="l00120"></a>00120 <span class="comment">     *</span>
-<a name="l00121"></a>00121 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00122"></a>00122 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00123"></a>00123 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00124"></a>00124 <span class="comment">     * @param[out] X geocentric coordinate (meters).</span>
-<a name="l00125"></a>00125 <span class="comment">     * @param[out] Y geocentric coordinate (meters).</span>
-<a name="l00126"></a>00126 <span class="comment">     * @param[out] Z geocentric coordinate (meters).</span>
-<a name="l00127"></a>00127 <span class="comment">     *</span>
-<a name="l00128"></a>00128 <span class="comment">     * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
-<a name="l00129"></a>00129 <span class="comment">     * the range [-180, 360].</span>
-<a name="l00130"></a>00130 <span class="comment">     **********************************************************************/</span>
-<a name="l00131"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">00131</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z)
-<a name="l00132"></a>00132       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00133"></a>00133       <span class="keywordflow">if</span> (Init())
-<a name="l00134"></a>00134         IntForward(lat, lon, h, X, Y, Z, NULL);
-<a name="l00135"></a>00135     }
-<a name="l00136"></a>00136 <span class="comment"></span>
-<a name="l00137"></a>00137 <span class="comment">    /**</span>
-<a name="l00138"></a>00138 <span class="comment">     * Convert from geodetic to geocentric coordinates and return rotation</span>
-<a name="l00139"></a>00139 <span class="comment">     * matrix.</span>
-<a name="l00140"></a>00140 <span class="comment">     *</span>
-<a name="l00141"></a>00141 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00142"></a>00142 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00143"></a>00143 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00144"></a>00144 <span class="comment">     * @param[out] X geocentric coordinate (meters).</span>
-<a name="l00145"></a>00145 <span class="comment">     * @param[out] Y geocentric coordinate (meters).</span>
-<a name="l00146"></a>00146 <span class="comment">     * @param[out] Z geocentric coordinate (meters).</span>
-<a name="l00147"></a>00147 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00148"></a>00148 <span class="comment">     *   matrix in row-major order.</span>
-<a name="l00149"></a>00149 <span class="comment">     *</span>
-<a name="l00150"></a>00150 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
-<a name="l00151"></a>00151 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
-<a name="l00152"></a>00152 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00153"></a>00153 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00154"></a>00154 <span class="comment">     *   representation \e v1.</span>
-<a name="l00155"></a>00155 <span class="comment">     * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
-<a name="l00156"></a>00156 <span class="comment">     *   \e v0.</span>
-<a name="l00157"></a>00157 <span class="comment">     * .</span>
-<a name="l00158"></a>00158 <span class="comment">     * Then we have \e v0 = \e M . \e v1.</span>
-<a name="l00159"></a>00159 <span class="comment">     **********************************************************************/</span>
-<a name="l00160"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a54e09e4673ddbf99feeba81036c81345">00160</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z,
-<a name="l00161"></a>00161                  std::vector<real>& M)
-<a name="l00162"></a>00162       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00163"></a>00163       <span class="keywordflow">if</span> (!Init())
-<a name="l00164"></a>00164         <span class="keywordflow">return</span>;
-<a name="l00165"></a>00165       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00166"></a>00166         real t[dim2_];
-<a name="l00167"></a>00167         IntForward(lat, lon, h, X, Y, Z, t);
-<a name="l00168"></a>00168         copy(t, t + dim2_, M.begin());
-<a name="l00169"></a>00169       } <span class="keywordflow">else</span>
-<a name="l00170"></a>00170         IntForward(lat, lon, h, X, Y, Z, NULL);
-<a name="l00171"></a>00171     }
-<a name="l00172"></a>00172 <span class="comment"></span>
-<a name="l00173"></a>00173 <span class="comment">    /**</span>
-<a name="l00174"></a>00174 <span class="comment">     * Convert from geocentric to geodetic to coordinates.</span>
-<a name="l00175"></a>00175 <span class="comment">     *</span>
-<a name="l00176"></a>00176 <span class="comment">     * @param[in] X geocentric coordinate (meters).</span>
-<a name="l00177"></a>00177 <span class="comment">     * @param[in] Y geocentric coordinate (meters).</span>
-<a name="l00178"></a>00178 <span class="comment">     * @param[in] Z geocentric coordinate (meters).</span>
-<a name="l00179"></a>00179 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00180"></a>00180 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00181"></a>00181 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00182"></a>00182 <span class="comment">     *</span>
-<a name="l00183"></a>00183 <span class="comment">     * In general there are multiple solutions and the result which maximizes</span>
-<a name="l00184"></a>00184 <span class="comment">     * \e h is returned.  If there are still multiple solutions with different</span>
-<a name="l00185"></a>00185 <span class="comment">     * latitudes (applies only if \e Z = 0), then the solution with \e lat > 0</span>
-<a name="l00186"></a>00186 <span class="comment">     * is returned.  If there are still multiple solutions with different</span>
-<a name="l00187"></a>00187 <span class="comment">     * longitudes (applies only if \e X = \e Y = 0) then \e lon = 0 is</span>
-<a name="l00188"></a>00188 <span class="comment">     * returned.  The value of \e h returned satisfies \e h >= - \e a (1 -</span>
-<a name="l00189"></a>00189 <span class="comment">     * <i>e</i><sup>2</sup>) / sqrt(1 - <i>e</i><sup>2</sup> sin<sup>2</sup>\e</span>
-<a name="l00190"></a>00190 <span class="comment">     * lat).  The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00191"></a>00191 <span class="comment">     **********************************************************************/</span>
-<a name="l00192"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">00192</a>     <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h)
-<a name="l00193"></a>00193       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00194"></a>00194       <span class="keywordflow">if</span> (Init())
-<a name="l00195"></a>00195         IntReverse(X, Y, Z, lat, lon, h, NULL);
-<a name="l00196"></a>00196     }
-<a name="l00197"></a>00197 <span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment">    /**</span>
-<a name="l00199"></a>00199 <span class="comment">     * Convert from geocentric to geodetic to coordinates.</span>
-<a name="l00200"></a>00200 <span class="comment">     *</span>
-<a name="l00201"></a>00201 <span class="comment">     * @param[in] X geocentric coordinate (meters).</span>
-<a name="l00202"></a>00202 <span class="comment">     * @param[in] Y geocentric coordinate (meters).</span>
-<a name="l00203"></a>00203 <span class="comment">     * @param[in] Z geocentric coordinate (meters).</span>
-<a name="l00204"></a>00204 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00205"></a>00205 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00206"></a>00206 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00207"></a>00207 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00208"></a>00208 <span class="comment">     *   matrix in row-major order.</span>
-<a name="l00209"></a>00209 <span class="comment">     *</span>
-<a name="l00210"></a>00210 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
-<a name="l00211"></a>00211 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
-<a name="l00212"></a>00212 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00213"></a>00213 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00214"></a>00214 <span class="comment">     *   representation \e v1.</span>
-<a name="l00215"></a>00215 <span class="comment">     * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
-<a name="l00216"></a>00216 <span class="comment">     *   \e v0.</span>
-<a name="l00217"></a>00217 <span class="comment">     * .</span>
-<a name="l00218"></a>00218 <span class="comment">     * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
-<a name="l00219"></a>00219 <span class="comment">     * M.</span>
-<a name="l00220"></a>00220 <span class="comment">     **********************************************************************/</span>
-<a name="l00221"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#aeddd854d52064bcb1f068052057edf2c">00221</a>     <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h,
-<a name="l00222"></a>00222                  std::vector<real>& M)
-<a name="l00223"></a>00223       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00224"></a>00224       <span class="keywordflow">if</span> (!Init())
-<a name="l00225"></a>00225         <span class="keywordflow">return</span>;
-<a name="l00226"></a>00226       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00227"></a>00227         real t[dim2_];
-<a name="l00228"></a>00228         IntReverse(X, Y, Z, lat, lon, h, t);
-<a name="l00229"></a>00229         copy(t, t + dim2_, M.begin());
-<a name="l00230"></a>00230       } <span class="keywordflow">else</span>
-<a name="l00231"></a>00231         IntReverse(X, Y, Z, lat, lon, h, NULL);
-<a name="l00232"></a>00232     }
-<a name="l00233"></a>00233 <span class="comment"></span>
-<a name="l00234"></a>00234 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00235"></a>00235 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00236"></a>00236 <span class="comment">    ///@{</span>
-<a name="l00237"></a>00237 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00238"></a>00238 <span class="comment">     * @return true if the object has been initialized.</span>
-<a name="l00239"></a>00239 <span class="comment">     **********************************************************************/</span>
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">00240</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
-<a name="l00241"></a>00241 <span class="comment">    /**</span>
-<a name="l00242"></a>00242 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00243"></a>00243 <span class="comment">     *   the value used in the constructor.</span>
-<a name="l00244"></a>00244 <span class="comment">     **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae20c62c298f1724412fec581285cf269">00245</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00246"></a>00246     { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
-<a name="l00247"></a>00247 <span class="comment"></span>
-<a name="l00248"></a>00248 <span class="comment">    /**</span>
-<a name="l00249"></a>00249 <span class="comment">     * @return \e f the  flattening of the ellipsoid.  This is the</span>
-<a name="l00250"></a>00250 <span class="comment">     *   value used in the constructor.</span>
-<a name="l00251"></a>00251 <span class="comment">     **********************************************************************/</span>
-<a name="l00252"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a30ba434524b5836c9852d454e61d795f">00252</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00253"></a>00253     { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
-<a name="l00254"></a>00254 <span class="comment"></span>
-<a name="l00255"></a>00255 <span class="comment">    /**</span>
-<a name="l00256"></a>00256 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00257"></a>00257 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00258"></a>00258 <span class="comment">     **********************************************************************/</span>
-<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">00259</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00260"></a>00260     { <span class="keywordflow">return</span> Init() ? 1/_f : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00261"></a>00261 <span class="comment">    ///@}</span>
-<a name="l00262"></a>00262 <span class="comment"></span><span class="comment"></span>
-<a name="l00263"></a>00263 <span class="comment">    /**</span>
-<a name="l00264"></a>00264 <span class="comment">     * A global instantiation of Geocentric with the parameters for the WGS84</span>
-<a name="l00265"></a>00265 <span class="comment">     * ellipsoid.</span>
-<a name="l00266"></a>00266 <span class="comment">     **********************************************************************/</span>
-<a name="l00267"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">00267</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a>;
-<a name="l00268"></a>00268   };
-<a name="l00269"></a>00269 
-<a name="l00270"></a>00270 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00271"></a>00271 
-<a name="l00272"></a>00272 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEOCENTRIC_HPP</span>
+<a name="l00058"></a>00058 <span class="comment">   *</span>
+<a name="l00059"></a>00059 <span class="comment">   * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility</span>
+<a name="l00060"></a>00060 <span class="comment">   * providing access to the functionality of Geocentric and LocalCartesian.</span>
+<a name="l00061"></a>00061 <span class="comment">   **********************************************************************/</span>
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Geocentric {
+<a name="l00064"></a>00064   <span class="keyword">private</span>:
+<a name="l00065"></a>00065     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00066"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">00066</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>;
+<a name="l00067"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7294f6a1cc932f8fd1562a15602e9e86">00067</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>; <span class="comment">// MagneticCircle uses Rotation</span>
+<a name="l00068"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#af6619ebe4c078705fc49a0d9f950b431">00068</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>;  <span class="comment">// MagneticModel uses IntForward</span>
+<a name="l00069"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a243c90a7f9bf3f7aa96877a4b0667a89">00069</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;  <span class="comment">// GravityCircle uses Rotation</span>
+<a name="l00070"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ada1db1d9f480d8044753ed869c995519">00070</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>;   <span class="comment">// GravityModel uses IntForward</span>
+<a name="l00071"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae7298549755c5982fe1be124d6631561">00071</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>;  <span class="comment">// NormalGravity uses IntForward</span>
+<a name="l00072"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae0383f6b1ce413d48e258750c3177f21">00072</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>;
+<a name="l00073"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#accac7c5b7843a1e4fb2baf0c83cc24f0">00073</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>;
+<a name="l00074"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a3eabc426b6edd718324c791ef3536360">00074</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>;
+<a name="l00075"></a>00075     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
+<a name="l00076"></a>00076     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
+<a name="l00077"></a>00077     real _a, _f, _e2, _e2m, _e2a, _e4a, _maxrad;
+<a name="l00078"></a>00078     <span class="keyword">static</span> <span class="keywordtype">void</span> Rotation(real sphi, real cphi, real slam, real clam,
+<a name="l00079"></a>00079                          real M[dim2_]) <span class="keywordflow">throw</span>();
+<a name="l00080"></a>00080     <span class="keyword">static</span> <span class="keywordtype">void</span> Rotate(real M[dim2_], real x, real y, real z,
+<a name="l00081"></a>00081                        real& X, real& Y, real& Z) <span class="keywordflow">throw</span>() {
+<a name="l00082"></a>00082       <span class="comment">// Perform [X,Y,Z]^t = M.[x,y,z]^t</span>
+<a name="l00083"></a>00083       <span class="comment">// (typically local cartesian to geocentric)</span>
+<a name="l00084"></a>00084       X = M[0] * x + M[1] * y + M[2] * z;
+<a name="l00085"></a>00085       Y = M[3] * x + M[4] * y + M[5] * z;
+<a name="l00086"></a>00086       Z = M[6] * x + M[7] * y + M[8] * z;
+<a name="l00087"></a>00087     }
+<a name="l00088"></a>00088     <span class="keyword">static</span> <span class="keywordtype">void</span> Unrotate(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00089"></a>00089                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& z) <span class="keywordflow">throw</span>()  {
+<a name="l00090"></a>00090       <span class="comment">// Perform [x,y,z]^t = M^t.[X,Y,Z]^t</span>
+<a name="l00091"></a>00091       <span class="comment">// (typically geocentric to local cartesian)</span>
+<a name="l00092"></a>00092       x = M[0] * X + M[3] * Y + M[6] * Z;
+<a name="l00093"></a>00093       y = M[1] * X + M[4] * Y + M[7] * Z;
+<a name="l00094"></a>00094       z = M[2] * X + M[5] * Y + M[8] * Z;
+<a name="l00095"></a>00095     }
+<a name="l00096"></a>00096     <span class="keywordtype">void</span> IntForward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
+<a name="l00097"></a>00097                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00098"></a>00098     <span class="keywordtype">void</span> IntReverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
+<a name="l00099"></a>00099                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101   <span class="keyword">public</span>:
+<a name="l00102"></a>00102 <span class="comment"></span>
+<a name="l00103"></a>00103 <span class="comment">    /**</span>
+<a name="l00104"></a>00104 <span class="comment">     * Constructor for a ellipsoid with</span>
+<a name="l00105"></a>00105 <span class="comment">     *</span>
+<a name="l00106"></a>00106 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
+<a name="l00107"></a>00107 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00108"></a>00108 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00109"></a>00109 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00110"></a>00110 <span class="comment">     *</span>
+<a name="l00111"></a>00111 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid is</span>
+<a name="l00112"></a>00112 <span class="comment">     * non-positive.</span>
+<a name="l00113"></a>00113 <span class="comment">     **********************************************************************/</span>
+<a name="l00114"></a>00114     Geocentric(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">    /**</span>
+<a name="l00117"></a>00117 <span class="comment">     * A default constructor (for use by NormalGravity).</span>
+<a name="l00118"></a>00118 <span class="comment">     **********************************************************************/</span>
+<a name="l00119"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">00119</a>     <a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">Geocentric</a>() : _a(-1) {}
+<a name="l00120"></a>00120 <span class="comment"></span>
+<a name="l00121"></a>00121 <span class="comment">    /**</span>
+<a name="l00122"></a>00122 <span class="comment">     * Convert from geodetic to geocentric coordinates.</span>
+<a name="l00123"></a>00123 <span class="comment">     *</span>
+<a name="l00124"></a>00124 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00125"></a>00125 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00126"></a>00126 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00127"></a>00127 <span class="comment">     * @param[out] X geocentric coordinate (meters).</span>
+<a name="l00128"></a>00128 <span class="comment">     * @param[out] Y geocentric coordinate (meters).</span>
+<a name="l00129"></a>00129 <span class="comment">     * @param[out] Z geocentric coordinate (meters).</span>
+<a name="l00130"></a>00130 <span class="comment">     *</span>
+<a name="l00131"></a>00131 <span class="comment">     * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
+<a name="l00132"></a>00132 <span class="comment">     * the range [-180, 360].</span>
+<a name="l00133"></a>00133 <span class="comment">     **********************************************************************/</span>
+<a name="l00134"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">00134</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z)
+<a name="l00135"></a>00135       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00136"></a>00136       <span class="keywordflow">if</span> (Init())
+<a name="l00137"></a>00137         IntForward(lat, lon, h, X, Y, Z, NULL);
+<a name="l00138"></a>00138     }
+<a name="l00139"></a>00139 <span class="comment"></span>
+<a name="l00140"></a>00140 <span class="comment">    /**</span>
+<a name="l00141"></a>00141 <span class="comment">     * Convert from geodetic to geocentric coordinates and return rotation</span>
+<a name="l00142"></a>00142 <span class="comment">     * matrix.</span>
+<a name="l00143"></a>00143 <span class="comment">     *</span>
+<a name="l00144"></a>00144 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00145"></a>00145 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00146"></a>00146 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00147"></a>00147 <span class="comment">     * @param[out] X geocentric coordinate (meters).</span>
+<a name="l00148"></a>00148 <span class="comment">     * @param[out] Y geocentric coordinate (meters).</span>
+<a name="l00149"></a>00149 <span class="comment">     * @param[out] Z geocentric coordinate (meters).</span>
+<a name="l00150"></a>00150 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00151"></a>00151 <span class="comment">     *   matrix in row-major order.</span>
+<a name="l00152"></a>00152 <span class="comment">     *</span>
+<a name="l00153"></a>00153 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
+<a name="l00154"></a>00154 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
+<a name="l00155"></a>00155 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00156"></a>00156 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00157"></a>00157 <span class="comment">     *   representation \e v1.</span>
+<a name="l00158"></a>00158 <span class="comment">     * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
+<a name="l00159"></a>00159 <span class="comment">     *   \e v0.</span>
+<a name="l00160"></a>00160 <span class="comment">     * .</span>
+<a name="l00161"></a>00161 <span class="comment">     * Then we have \e v0 = \e M . \e v1.</span>
+<a name="l00162"></a>00162 <span class="comment">     **********************************************************************/</span>
+<a name="l00163"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a54e09e4673ddbf99feeba81036c81345">00163</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z,
+<a name="l00164"></a>00164                  std::vector<real>& M)
+<a name="l00165"></a>00165       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00166"></a>00166       <span class="keywordflow">if</span> (!Init())
+<a name="l00167"></a>00167         <span class="keywordflow">return</span>;
+<a name="l00168"></a>00168       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00169"></a>00169         real t[dim2_];
+<a name="l00170"></a>00170         IntForward(lat, lon, h, X, Y, Z, t);
+<a name="l00171"></a>00171         copy(t, t + dim2_, M.begin());
+<a name="l00172"></a>00172       } <span class="keywordflow">else</span>
+<a name="l00173"></a>00173         IntForward(lat, lon, h, X, Y, Z, NULL);
+<a name="l00174"></a>00174     }
+<a name="l00175"></a>00175 <span class="comment"></span>
+<a name="l00176"></a>00176 <span class="comment">    /**</span>
+<a name="l00177"></a>00177 <span class="comment">     * Convert from geocentric to geodetic to coordinates.</span>
+<a name="l00178"></a>00178 <span class="comment">     *</span>
+<a name="l00179"></a>00179 <span class="comment">     * @param[in] X geocentric coordinate (meters).</span>
+<a name="l00180"></a>00180 <span class="comment">     * @param[in] Y geocentric coordinate (meters).</span>
+<a name="l00181"></a>00181 <span class="comment">     * @param[in] Z geocentric coordinate (meters).</span>
+<a name="l00182"></a>00182 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00183"></a>00183 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00184"></a>00184 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00185"></a>00185 <span class="comment">     *</span>
+<a name="l00186"></a>00186 <span class="comment">     * In general there are multiple solutions and the result which maximizes</span>
+<a name="l00187"></a>00187 <span class="comment">     * \e h is returned.  If there are still multiple solutions with different</span>
+<a name="l00188"></a>00188 <span class="comment">     * latitudes (applies only if \e Z = 0), then the solution with \e lat > 0</span>
+<a name="l00189"></a>00189 <span class="comment">     * is returned.  If there are still multiple solutions with different</span>
+<a name="l00190"></a>00190 <span class="comment">     * longitudes (applies only if \e X = \e Y = 0) then \e lon = 0 is</span>
+<a name="l00191"></a>00191 <span class="comment">     * returned.  The value of \e h returned satisfies \e h >= - \e a (1 -</span>
+<a name="l00192"></a>00192 <span class="comment">     * <i>e</i><sup>2</sup>) / sqrt(1 - <i>e</i><sup>2</sup> sin<sup>2</sup>\e</span>
+<a name="l00193"></a>00193 <span class="comment">     * lat).  The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00194"></a>00194 <span class="comment">     **********************************************************************/</span>
+<a name="l00195"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">00195</a>     <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h)
+<a name="l00196"></a>00196       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00197"></a>00197       <span class="keywordflow">if</span> (Init())
+<a name="l00198"></a>00198         IntReverse(X, Y, Z, lat, lon, h, NULL);
+<a name="l00199"></a>00199     }
+<a name="l00200"></a>00200 <span class="comment"></span>
+<a name="l00201"></a>00201 <span class="comment">    /**</span>
+<a name="l00202"></a>00202 <span class="comment">     * Convert from geocentric to geodetic to coordinates.</span>
+<a name="l00203"></a>00203 <span class="comment">     *</span>
+<a name="l00204"></a>00204 <span class="comment">     * @param[in] X geocentric coordinate (meters).</span>
+<a name="l00205"></a>00205 <span class="comment">     * @param[in] Y geocentric coordinate (meters).</span>
+<a name="l00206"></a>00206 <span class="comment">     * @param[in] Z geocentric coordinate (meters).</span>
+<a name="l00207"></a>00207 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00208"></a>00208 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00209"></a>00209 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00210"></a>00210 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00211"></a>00211 <span class="comment">     *   matrix in row-major order.</span>
+<a name="l00212"></a>00212 <span class="comment">     *</span>
+<a name="l00213"></a>00213 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
+<a name="l00214"></a>00214 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
+<a name="l00215"></a>00215 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00216"></a>00216 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00217"></a>00217 <span class="comment">     *   representation \e v1.</span>
+<a name="l00218"></a>00218 <span class="comment">     * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
+<a name="l00219"></a>00219 <span class="comment">     *   \e v0.</span>
+<a name="l00220"></a>00220 <span class="comment">     * .</span>
+<a name="l00221"></a>00221 <span class="comment">     * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
+<a name="l00222"></a>00222 <span class="comment">     * M.</span>
+<a name="l00223"></a>00223 <span class="comment">     **********************************************************************/</span>
+<a name="l00224"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#aeddd854d52064bcb1f068052057edf2c">00224</a>     <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h,
+<a name="l00225"></a>00225                  std::vector<real>& M)
+<a name="l00226"></a>00226       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00227"></a>00227       <span class="keywordflow">if</span> (!Init())
+<a name="l00228"></a>00228         <span class="keywordflow">return</span>;
+<a name="l00229"></a>00229       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00230"></a>00230         real t[dim2_];
+<a name="l00231"></a>00231         IntReverse(X, Y, Z, lat, lon, h, t);
+<a name="l00232"></a>00232         copy(t, t + dim2_, M.begin());
+<a name="l00233"></a>00233       } <span class="keywordflow">else</span>
+<a name="l00234"></a>00234         IntReverse(X, Y, Z, lat, lon, h, NULL);
+<a name="l00235"></a>00235     }
+<a name="l00236"></a>00236 <span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00238"></a>00238 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">    ///@{</span>
+<a name="l00240"></a>00240 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00241"></a>00241 <span class="comment">     * @return true if the object has been initialized.</span>
+<a name="l00242"></a>00242 <span class="comment">     **********************************************************************/</span>
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">00243</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">    /**</span>
+<a name="l00245"></a>00245 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00246"></a>00246 <span class="comment">     *   the value used in the constructor.</span>
+<a name="l00247"></a>00247 <span class="comment">     **********************************************************************/</span>
+<a name="l00248"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae20c62c298f1724412fec581285cf269">00248</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00249"></a>00249     { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00250"></a>00250 <span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment">    /**</span>
+<a name="l00252"></a>00252 <span class="comment">     * @return \e f the  flattening of the ellipsoid.  This is the</span>
+<a name="l00253"></a>00253 <span class="comment">     *   value used in the constructor.</span>
+<a name="l00254"></a>00254 <span class="comment">     **********************************************************************/</span>
+<a name="l00255"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a30ba434524b5836c9852d454e61d795f">00255</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00256"></a>00256     { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00257"></a>00257 <span class="comment">    ///@}</span>
+<a name="l00258"></a>00258 <span class="comment"></span><span class="comment"></span>
+<a name="l00259"></a>00259 <span class="comment">    /// \cond SKIP</span>
+<a name="l00260"></a>00260 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00261"></a>00261 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00262"></a>00262 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00263"></a>00263 <span class="comment">     **********************************************************************/</span>
+<a name="l00264"></a>00264     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00265"></a>00265     { <span class="keywordflow">return</span> Init() ? 1/_f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00266"></a>00266 <span class="comment">    /// \endcond</span>
+<a name="l00267"></a>00267 <span class="comment"></span><span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment">    /**</span>
+<a name="l00269"></a>00269 <span class="comment">     * A global instantiation of Geocentric with the parameters for the WGS84</span>
+<a name="l00270"></a>00270 <span class="comment">     * ellipsoid.</span>
+<a name="l00271"></a>00271 <span class="comment">     **********************************************************************/</span>
+<a name="l00272"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">00272</a>     <span class="keyword">static</span> <span class="keyword">const</span> Geocentric <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a>;
+<a name="l00273"></a>00273   };
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEOCENTRIC_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geod.1.html b/doc/html/Geod.1.html
index bbb82e1..e19892e 100644
--- a/doc/html/Geod.1.html
+++ b/doc/html/Geod.1.html
@@ -48,9 +48,11 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>Geod</strong> [ <strong>-i</strong> | <strong>-l</strong> <em>lat1</em> <em>lon1</em> <em>azi1</em> ] [ <strong>-a</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
-[ <strong>-d</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>-d</strong> | <strong>-:</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -116,6 +118,12 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 <dd>
 <p>output angles as degrees, minutes, seconds instead of decimal degrees.</p>
 </dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
 <dt><strong><a name="b" class="item"><strong>-b</strong></a></strong></dt>
 
 <dd>
@@ -136,6 +144,15 @@ quantities <em>m12</em>, <em>M12</em>, <em>M21</em>, and <em>S12</em> are descri
 <p>set the output precision to <em>prec</em> (default 3); <em>prec</em> is the
 precision relative to 1 m.  See <a href="#precision">PRECISION</a>.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -161,8 +178,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -249,24 +272,24 @@ will be converted.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>Route from JFK Airport to Singapore Changi Airport:</p>
 <pre>
-   echo "40d38'23N" "073d46'44W" "01d21'33N" "103d59'22E" |
-   Geod -i -d -p 0</pre>
+   echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+   Geod -i -: -p 0</pre>
 <pre>
-   003d18'29.9" 177d29'09.2" 15347628 4302458</pre>
+   003:18:29.9 177:29:09.2 15347628</pre>
 <p>Waypoints on the route at intervals of 2000km:</p>
 <pre>
    for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
-   Geod -l "40d38'23N" "073d46'44W" "003d18'29.9" -d -p 0</pre>
+   Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0</pre>
 <pre>
-   40d38'23.0"N 073d46'44.0"W 003d18'29.9" 0
-   58d34'45.1"N 071d49'36.7"W 004d48'48.8" 1967419
-   76d22'28.4"N 065d32'17.8"W 010d41'38.4" 3743642
-   84d50'28.0"N 075d04'39.2"E 150d55'00.9" 5156905
-   67d26'20.3"N 098d00'51.2"E 173d27'20.3" 6070415
-   49d33'03.2"N 101d06'52.6"E 176d07'54.3" 6394568
-   31d34'16.5"N 102d30'46.3"E 177d03'08.4" 6095725
-   13d31'56.0"N 103d26'50.7"E 177d24'55.0" 5200700
-   04d32'05.7"S 104d14'48.7"E 177d28'43.6" 3795596</pre>
+   40:38:23.0N 073:46:44.0W 003:18:29.9
+   58:34:45.1N 071:49:36.7W 004:48:48.8
+   76:22:28.4N 065:32:17.8W 010:41:38.4
+   84:50:28.0N 075:04:39.2E 150:55:00.9
+   67:26:20.3N 098:00:51.2E 173:27:20.3
+   49:33:03.2N 101:06:52.6E 176:07:54.3
+   31:34:16.5N 102:30:46.3E 177:03:08.4
+   13:31:56.0N 103:26:50.7E 177:24:55.0
+   04:32:05.7S 104:14:48.7E 177:28:43.6</pre>
 <p>
 </p>
 <hr />
diff --git a/doc/html/Geod_8cpp.html b/doc/html/Geod_8cpp.html
index b102f6a..f9266e7 100644
--- a/doc/html/Geod_8cpp.html
+++ b/doc/html/Geod_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geod.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,15 +85,15 @@ Typedefs</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">GeographicLib::Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a></td></tr>
 <tr><td colspan="2"><h2><a name="func-members"></a>
 Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, int prec, bool dms)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, int prec, bool dms)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, int prec, bool dms, char dmssep)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, int prec, bool dms, char dmssep)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12, <a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a12, bool full, bool arcmode, int prec, bool dms)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a> (const std::string &s, bool arcmode)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for geodesic calculations. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o Geod \ <a class="el" href="Geod_8cpp.html" title="Command line utility for geodesic calculations.">Geod.cpp</a> \ ../src/DMS.cpp \ ../src/Geodesic.cpp \ ../src/GeodesicLine.cpp</p>
 <p>See the <a href="Geod.1.html">man page</a> for usage information. </p>
 
@@ -100,7 +115,7 @@ Functions</h2></td></tr>
 </div>
 </div>
 <hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a816c824309c06ba9fce8978d534c8a59"></a><!-- doxytag: member="Geod.cpp::LatLonString" ref="a816c824309c06ba9fce8978d534c8a59" args="(real lat, real lon, int prec, bool dms)" -->
+<a class="anchor" id="a8c3a2a4c039b4d0118416afd97a45fcf"></a><!-- doxytag: member="Geod.cpp::LatLonString" ref="a8c3a2a4c039b4d0118416afd97a45fcf" args="(real lat, real lon, int prec, bool dms, char dmssep)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -126,7 +141,13 @@ Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">bool </td>
-          <td class="paramname"><em>dms</em> </td>
+          <td class="paramname"><em>dms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char </td>
+          <td class="paramname"><em>dmssep</em> </td>
         </tr>
         <tr>
           <td></td>
@@ -145,7 +166,7 @@ Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="ade33c0d3b83c6fcbf2fc612d5c6a7172"></a><!-- doxytag: member="Geod.cpp::AzimuthString" ref="ade33c0d3b83c6fcbf2fc612d5c6a7172" args="(real azi, int prec, bool dms)" -->
+<a class="anchor" id="adeb84b4732b410c9fdccf799037ef245"></a><!-- doxytag: member="Geod.cpp::AzimuthString" ref="adeb84b4732b410c9fdccf799037ef245" args="(real azi, int prec, bool dms, char dmssep)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -165,7 +186,13 @@ Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">bool </td>
-          <td class="paramname"><em>dms</em> </td>
+          <td class="paramname"><em>dms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char </td>
+          <td class="paramname"><em>dmssep</em> </td>
         </tr>
         <tr>
           <td></td>
@@ -178,7 +205,7 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Geod_8cpp_source.html#l00043">43</a> of file <a class="el" href="Geod_8cpp_source.html">Geod.cpp</a>.</p>
 
-<p>References <a class="el" href="DMS_8hpp_source.html#l00084">GeographicLib::DMS::AZIMUTH</a>, <a class="el" href="DMS_8cpp_source.html#l00261">GeographicLib::DMS::Encode()</a>, and <a class="el" href="DMS_8hpp_source.html#l00089">GeographicLib::DMS::NUMBER</a>.</p>
+<p>References <a class="el" href="DMS_8cpp_source.html#l00261">GeographicLib::DMS::Encode()</a>, <a class="el" href="DMS_8hpp_source.html#l00084">GeographicLib::DMS::AZIMUTH</a>, and <a class="el" href="DMS_8hpp_source.html#l00089">GeographicLib::DMS::NUMBER</a>.</p>
 
 <p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
 
@@ -301,13 +328,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Geod_8cpp_source.html#l00067">67</a> of file <a class="el" href="Geod_8cpp_source.html">Geod.cpp</a>.</p>
 
-<p>References <a class="el" href="Geodesic_8hpp_source.html#l00457">GeographicLib::Geodesic::ArcDirect()</a>, <a class="el" href="Geod_8cpp_source.html#l00043">AzimuthString()</a>, <a class="el" href="DMS_8cpp_source.html#l00249">GeographicLib::DMS::DecodeAzimuth()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="Geodesic_8hpp_source.html#l00345">GeographicLib::Geodesic::Direct()</a>, <a class="el" href="Geod_8cpp_source.ht [...]
+<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="DMS_8cpp_source.html#l00249">GeographicLib::DMS::DecodeAzimuth()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00105">GeographicLib::Geodesic::Line()</a>, <a class="el" href="Geodesic_8hpp_source.html#l00635">GeographicLib::Geodesic::Inverse()</a>, <a class="el" href="Geod_8cpp_source.html#l00034">LatLonString()</a>, <a class="el" href="Geod_8cpp_source.html#l0 [...]
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geod_8cpp_source.html b/doc/html/Geod_8cpp_source.html
index b47c6a3..824c9fb 100644
--- a/doc/html/Geod_8cpp_source.html
+++ b/doc/html/Geod_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geod.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geod.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geodesic calculations</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -78,21 +93,21 @@
 <a name="l00029"></a>00029 
 <a name="l00030"></a>00030 <span class="preprocessor">#include "Geod.usage"</span>
 <a name="l00031"></a>00031 
-<a name="l00032"></a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">00032</a> <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">GeographicLib::Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00032"></a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">00032</a> <span class="keyword">typedef</span> GeographicLib<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00033"></a>00033 
-<a name="l00034"></a><a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">00034</a> std::string <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms) {
+<a name="l00034"></a><a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">00034</a> std::string <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms, <span class="keywordtype">char [...]
 <a name="l00035"></a>00035   <span class="keyword">using namespace </span>GeographicLib;
 <a name="l00036"></a>00036   <span class="keywordflow">return</span> dms ?
-<a name="l00037"></a>00037     <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>) + <span class="stringliteral">" "</span> +
-<a name="l00038"></a>00038     <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>) :
-<a name="l00039"></a>00039     <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) + <span class="stringliteral">" "</span> +
-<a name="l00040"></a>00040     <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
+<a name="l00037"></a>00037     <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>, dmssep) + <span class="stringliteral">" "</span> +
+<a name="l00038"></a>00038     <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>, dmssep) :
+<a name="l00039"></a>00039     <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) + <span class="stringliteral">" "</span> +
+<a name="l00040"></a>00040     <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
 <a name="l00041"></a>00041 }
 <a name="l00042"></a>00042 
-<a name="l00043"></a><a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">00043</a> std::string <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms) {
+<a name="l00043"></a><a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">00043</a> std::string <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms, <span class="keywordtype">char</span> dmssep) {
 <a name="l00044"></a>00044   <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00045"></a>00045   <span class="keywordflow">return</span> dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a92264580521b3a1c1df2a7421b435e24">DMS::AZIMUTH</a>) :
-<a name="l00046"></a>00046     <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(azi >= 180 ? azi - 360 : azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
+<a name="l00045"></a>00045   <span class="keywordflow">return</span> dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a92264580521b3a1c1df2a7421b435e24">DMS::AZIMUTH</a>, dmssep) :
+<a name="l00046"></a>00046     <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(azi >= 180 ? azi - 360 : azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
 <a name="l00047"></a>00047 }
 <a name="l00048"></a>00048 
 <a name="l00049"></a><a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">00049</a> std::string <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a12,
@@ -100,17 +115,17 @@
 <a name="l00051"></a>00051   <span class="keyword">using namespace </span>GeographicLib;
 <a name="l00052"></a>00052   std::string s;
 <a name="l00053"></a>00053   <span class="keywordflow">if</span> (full || !arcmode)
-<a name="l00054"></a>00054     s += Utility::str<real>(s12, prec);
+<a name="l00054"></a>00054     s += <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(s12, prec);
 <a name="l00055"></a>00055   <span class="keywordflow">if</span> (full)
 <a name="l00056"></a>00056     s += <span class="stringliteral">" "</span>;
 <a name="l00057"></a>00057   <span class="keywordflow">if</span> (full || arcmode)
-<a name="l00058"></a>00058     s += <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(a12, prec + 5, dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869adc80eee37727cca42f9805cfefb83fc1">DMS::NONE</a> : <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
+<a name="l00058"></a>00058     s += <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(a12, prec + 5, dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869adc80eee37727cca42f9805cfefb83fc1">DMS::NONE</a> : <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
 <a name="l00059"></a>00059   <span class="keywordflow">return</span> s;
 <a name="l00060"></a>00060 }
 <a name="l00061"></a>00061 
 <a name="l00062"></a><a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">00062</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(<span class="keyword">const</span> std::string& s, <span class="keywordtype">bool</span> arcmode) {
 <a name="l00063"></a>00063   <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00064"></a>00064   <span class="keywordflow">return</span> arcmode ? <a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DMS::DecodeAngle</a>(s) : Utility::num<real>(s);
+<a name="l00064"></a>00064   <span class="keywordflow">return</span> arcmode ? <a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DMS::DecodeAngle</a>(s) : <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(s);
 <a name="l00065"></a>00065 }
 <a name="l00066"></a>00066 
 <a name="l00067"></a><a class="code" href="Geod_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00067</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
@@ -119,222 +134,250 @@
 <a name="l00070"></a>00070     <span class="keywordtype">bool</span> linecalc = <span class="keyword">false</span>, inverse = <span class="keyword">false</span>, arcmode = <span class="keyword">false</span>,
 <a name="l00071"></a>00071       dms = <span class="keyword">false</span>, full = <span class="keyword">false</span>;
 <a name="l00072"></a>00072     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00073"></a>00073       a = Constants::WGS84_a<real>(),
+<a name="l00073"></a>00073       a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
 <a name="l00074"></a>00074       f = Constants::WGS84_f<real>();
 <a name="l00075"></a>00075     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, lon1, azi1, lat2, lon2, azi2, s12, m12, a12, M12, M21, S12;
 <a name="l00076"></a>00076     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi2sense = 0;
 <a name="l00077"></a>00077     <span class="keywordtype">int</span> prec = 3;
-<a name="l00078"></a>00078     std::string istring, ifile, ofile;
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00081"></a>00081       std::string arg(argv[m]);
-<a name="l00082"></a>00082       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-i"</span>) {
-<a name="l00083"></a>00083         inverse = <span class="keyword">true</span>;
-<a name="l00084"></a>00084         linecalc = <span class="keyword">false</span>;
-<a name="l00085"></a>00085       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>)
-<a name="l00086"></a>00086         arcmode = <span class="keyword">true</span>;
-<a name="l00087"></a>00087       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00088"></a>00088         inverse = <span class="keyword">false</span>;
-<a name="l00089"></a>00089         linecalc = <span class="keyword">true</span>;
-<a name="l00090"></a>00090         <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00091"></a>00091         <span class="keywordflow">try</span> {
-<a name="l00092"></a>00092           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00093"></a>00093                             lat1, lon1);
-<a name="l00094"></a>00094           azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(std::string(argv[m + 3]));
-<a name="l00095"></a>00095         }
-<a name="l00096"></a>00096         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00097"></a>00097           std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00098"></a>00098           <span class="keywordflow">return</span> 1;
-<a name="l00099"></a>00099         }
-<a name="l00100"></a>00100         m += 3;
-<a name="l00101"></a>00101       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00102"></a>00102         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103         <span class="keywordflow">try</span> {
-<a name="l00104"></a>00104           a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00105"></a>00105           f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00106"></a>00106         }
-<a name="l00107"></a>00107         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00108"></a>00108           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00109"></a>00109           <span class="keywordflow">return</span> 1;
-<a name="l00110"></a>00110         }
-<a name="l00111"></a>00111         m += 2;
-<a name="l00112"></a>00112       }
-<a name="l00113"></a>00113       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>)
-<a name="l00114"></a>00114         dms = <span class="keyword">true</span>;
-<a name="l00115"></a>00115       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-b"</span>)
-<a name="l00116"></a>00116         azi2sense = 180;
-<a name="l00117"></a>00117       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-f"</span>)
-<a name="l00118"></a>00118         full = <span class="keyword">true</span>;
-<a name="l00119"></a>00119       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00120"></a>00120         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00121"></a>00121         <span class="keywordflow">try</span> {
-<a name="l00122"></a>00122           prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00123"></a>00123         }
-<a name="l00124"></a>00124         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00125"></a>00125           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00126"></a>00126           <span class="keywordflow">return</span> 1;
-<a name="l00127"></a>00127         }
-<a name="l00128"></a>00128       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00129"></a>00129         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00130"></a>00130         istring = argv[m];
-<a name="l00131"></a>00131       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00132"></a>00132         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00133"></a>00133         ifile = argv[m];
-<a name="l00134"></a>00134       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00135"></a>00135         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00136"></a>00136         ofile = argv[m];
-<a name="l00137"></a>00137       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00138"></a>00138         std::cout
-<a name="l00139"></a>00139           << argv[0]
-<a name="l00140"></a>00140           << <span class="stringliteral">": $Id: 6fb53e2b731f1709ea62061e7dbd94e2b9a6aaf2 $\n"</span>
-<a name="l00141"></a>00141           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00142"></a>00142         <span class="keywordflow">return</span> 0;
-<a name="l00143"></a>00143       } <span class="keywordflow">else</span>
-<a name="l00144"></a>00144         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00145"></a>00145     }
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00148"></a>00148       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00149"></a>00149       <span class="keywordflow">return</span> 1;
-<a name="l00150"></a>00150     }
-<a name="l00151"></a>00151     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00152"></a>00152     std::ifstream infile;
-<a name="l00153"></a>00153     std::istringstream instring;
-<a name="l00154"></a>00154     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00155"></a>00155       infile.open(ifile.c_str());
-<a name="l00156"></a>00156       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00157"></a>00157         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00158"></a>00158         <span class="keywordflow">return</span> 1;
-<a name="l00159"></a>00159       }
-<a name="l00160"></a>00160     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00161"></a>00161       std::string::size_type m = 0;
-<a name="l00162"></a>00162       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00163"></a>00163         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00164"></a>00164         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00165"></a>00165           <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00167"></a>00167       }
-<a name="l00168"></a>00168       instring.str(istring);
-<a name="l00169"></a>00169     }
-<a name="l00170"></a>00170     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00171"></a>00171       (!istring.empty() ? &instring : &std::cin);
-<a name="l00172"></a>00172 
-<a name="l00173"></a>00173     std::ofstream outfile;
-<a name="l00174"></a>00174     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00175"></a>00175     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00176"></a>00176       outfile.open(ofile.c_str());
-<a name="l00177"></a>00177       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00178"></a>00178         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00179"></a>00179         <span class="keywordflow">return</span> 1;
-<a name="l00180"></a>00180       }
-<a name="l00181"></a>00181     }
-<a name="l00182"></a>00182     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
-<a name="l00183"></a>00183 
-<a name="l00184"></a>00184     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
-<a name="l00185"></a>00185     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> l;
-<a name="l00186"></a>00186     <span class="keywordflow">if</span> (linecalc)
-<a name="l00187"></a>00187       l = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Line</a>(lat1, lon1, azi1);
-<a name="l00188"></a>00188 
-<a name="l00189"></a>00189     <span class="comment">// Max precision = 10: 0.1 nm in distance, 10^-15 deg (= 0.11 nm),</span>
-<a name="l00190"></a>00190     <span class="comment">// 10^-11 sec (= 0.3 nm).</span>
-<a name="l00191"></a>00191     prec = std::min(10, std::max(0, prec));
-<a name="l00192"></a>00192     std::string s;
-<a name="l00193"></a>00193     <span class="keywordtype">int</span> retval = 0;
-<a name="l00194"></a>00194     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00195"></a>00195       <span class="keywordflow">try</span> {
-<a name="l00196"></a>00196         std::istringstream str(s);
-<a name="l00197"></a>00197         <span class="keywordflow">if</span> (inverse) {
-<a name="l00198"></a>00198           std::string slat1, slon1, slat2, slon2;
-<a name="l00199"></a>00199           <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> slat2 >> slon2))
-<a name="l00200"></a>00200             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00201"></a>00201           std::string strc;
-<a name="l00202"></a>00202           <span class="keywordflow">if</span> (str >> strc)
-<a name="l00203"></a>00203             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00204"></a>00204           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
-<a name="l00205"></a>00205           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat2, slon2, lat2, lon2);
-<a name="l00206"></a>00206           a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Inverse</a>(lat1, lon1, lat2, lon2, s12, azi1, azi2,
-<a name="l00207"></a>00207                              m12, M12, M21, S12);
-<a name="l00208"></a>00208           <span class="keywordflow">if</span> (full)
-<a name="l00209"></a>00209             *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat1, lon1, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00210"></a>00210           *output << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi1, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00211"></a>00211           <span class="keywordflow">if</span> (full)
-<a name="l00212"></a>00212             *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat2, lon2, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00213"></a>00213           *output << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi2 + azi2sense, prec, dms) << <span class="stringliteral">" "</span>
-<a name="l00214"></a>00214                   << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms);
-<a name="l00215"></a>00215           <span class="keywordflow">if</span> (full)
-<a name="l00216"></a>00216             *output << <span class="stringliteral">" "</span> << Utility::str<real>(m12, prec)
-<a name="l00217"></a>00217                     << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
-<a name="l00218"></a>00218                     << <span class="stringliteral">" "</span> << Utility::str<real>(M21, prec+7)
-<a name="l00219"></a>00219                     << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
-<a name="l00220"></a>00220           *output << <span class="stringliteral">"\n"</span>;
-<a name="l00221"></a>00221         } <span class="keywordflow">else</span> {
-<a name="l00222"></a>00222           <span class="keywordflow">if</span> (linecalc) {
-<a name="l00223"></a>00223             std::string ss12;
-<a name="l00224"></a>00224             <span class="keywordflow">if</span> (!(str >> ss12))
-<a name="l00225"></a>00225               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00226"></a>00226             std::string strc;
-<a name="l00227"></a>00227             <span class="keywordflow">if</span> (str >> strc)
-<a name="l00228"></a>00228               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00229"></a>00229             s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
-<a name="l00230"></a>00230             <span class="keywordflow">if</span> (arcmode)
-<a name="l00231"></a>00231               l.ArcPosition(s12, lat2, lon2, azi2, a12, m12, M12, M21, S12);
-<a name="l00232"></a>00232             <span class="keywordflow">else</span>
-<a name="l00233"></a>00233               a12 = l.Position(s12, lat2, lon2, azi2, m12, M12, M21, S12);
-<a name="l00234"></a>00234           } <span class="keywordflow">else</span> {
-<a name="l00235"></a>00235             std::string slat1, slon1, sazi1, ss12;
-<a name="l00236"></a>00236             <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> sazi1 >> ss12))
-<a name="l00237"></a>00237               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00238"></a>00238             std::string strc;
-<a name="l00239"></a>00239             <span class="keywordflow">if</span> (str >> strc)
-<a name="l00240"></a>00240               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00241"></a>00241             <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
-<a name="l00242"></a>00242             azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(sazi1);
-<a name="l00243"></a>00243             s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
-<a name="l00244"></a>00244             <span class="keywordflow">if</span> (arcmode)
-<a name="l00245"></a>00245               geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">ArcDirect</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2, a12,
-<a name="l00246"></a>00246                              m12, M12, M21, S12);
-<a name="l00247"></a>00247             <span class="keywordflow">else</span>
-<a name="l00248"></a>00248               a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Direct</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2,
-<a name="l00249"></a>00249                                 m12, M12, M21, S12);
-<a name="l00250"></a>00250           }
-<a name="l00251"></a>00251           <span class="keywordflow">if</span> (arcmode)
-<a name="l00252"></a>00252             std::swap(s12, a12);
-<a name="l00253"></a>00253           <span class="keywordflow">if</span> (full)
-<a name="l00254"></a>00254             *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat1, lon1, prec, dms) << <span class="stringliteral">" "</span>
-<a name="l00255"></a>00255                     << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi1, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00256"></a>00256           *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat2, lon2, prec, dms) << <span class="stringliteral">" "</span>
-<a name="l00257"></a>00257                   << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi2 + azi2sense, prec, dms);
-<a name="l00258"></a>00258           <span class="keywordflow">if</span> (full)
-<a name="l00259"></a>00259             *output << <span class="stringliteral">" "</span>
-<a name="l00260"></a>00260                     << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms)
-<a name="l00261"></a>00261                     << <span class="stringliteral">" "</span> << Utility::str<real>(m12, prec)
-<a name="l00262"></a>00262                     << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
-<a name="l00263"></a>00263                     << <span class="stringliteral">" "</span> << Utility::str<real>(M21, prec+7)
-<a name="l00264"></a>00264                     << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
-<a name="l00265"></a>00265           *output << <span class="stringliteral">"\n"</span>;
-<a name="l00266"></a>00266         }
-<a name="l00267"></a>00267       }
-<a name="l00268"></a>00268       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00269"></a>00269         <span class="comment">// Write error message cout so output lines match input lines</span>
-<a name="l00270"></a>00270         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00271"></a>00271         retval = 1;
-<a name="l00272"></a>00272       }
-<a name="l00273"></a>00273     }
-<a name="l00274"></a>00274     <span class="keywordflow">return</span> retval;
-<a name="l00275"></a>00275   }
-<a name="l00276"></a>00276   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00277"></a>00277     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00278"></a>00278     <span class="keywordflow">return</span> 1;
-<a name="l00279"></a>00279   }
-<a name="l00280"></a>00280   <span class="keywordflow">catch</span> (...) {
-<a name="l00281"></a>00281     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00282"></a>00282     <span class="keywordflow">return</span> 1;
-<a name="l00283"></a>00283   }
-<a name="l00284"></a>00284 }
+<a name="l00078"></a>00078     std::string istring, ifile, ofile, cdelim;
+<a name="l00079"></a>00079     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>, dmssep = char(0);
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00082"></a>00082       std::string arg(argv[m]);
+<a name="l00083"></a>00083       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-i"</span>) {
+<a name="l00084"></a>00084         inverse = <span class="keyword">true</span>;
+<a name="l00085"></a>00085         linecalc = <span class="keyword">false</span>;
+<a name="l00086"></a>00086       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>)
+<a name="l00087"></a>00087         arcmode = <span class="keyword">true</span>;
+<a name="l00088"></a>00088       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00089"></a>00089         inverse = <span class="keyword">false</span>;
+<a name="l00090"></a>00090         linecalc = <span class="keyword">true</span>;
+<a name="l00091"></a>00091         <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00092"></a>00092         <span class="keywordflow">try</span> {
+<a name="l00093"></a>00093           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00094"></a>00094                             lat1, lon1);
+<a name="l00095"></a>00095           azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(std::string(argv[m + 3]));
+<a name="l00096"></a>00096         }
+<a name="l00097"></a>00097         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00098"></a>00098           std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00099"></a>00099           <span class="keywordflow">return</span> 1;
+<a name="l00100"></a>00100         }
+<a name="l00101"></a>00101         m += 3;
+<a name="l00102"></a>00102       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00103"></a>00103         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104         <span class="keywordflow">try</span> {
+<a name="l00105"></a>00105           a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00106"></a>00106           f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00107"></a>00107         }
+<a name="l00108"></a>00108         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00109"></a>00109           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00110"></a>00110           <span class="keywordflow">return</span> 1;
+<a name="l00111"></a>00111         }
+<a name="l00112"></a>00112         m += 2;
+<a name="l00113"></a>00113       }
+<a name="l00114"></a>00114       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00115"></a>00115         dms = <span class="keyword">true</span>;
+<a name="l00116"></a>00116         dmssep = <span class="charliteral">'\0'</span>;
+<a name="l00117"></a>00117       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-:"</span>) {
+<a name="l00118"></a>00118         dms = <span class="keyword">true</span>;
+<a name="l00119"></a>00119         dmssep = <span class="charliteral">':'</span>;
+<a name="l00120"></a>00120       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-b"</span>)
+<a name="l00121"></a>00121         azi2sense = 180;
+<a name="l00122"></a>00122       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-f"</span>)
+<a name="l00123"></a>00123         full = <span class="keyword">true</span>;
+<a name="l00124"></a>00124       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00125"></a>00125         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00126"></a>00126         <span class="keywordflow">try</span> {
+<a name="l00127"></a>00127           prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00128"></a>00128         }
+<a name="l00129"></a>00129         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00130"></a>00130           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00131"></a>00131           <span class="keywordflow">return</span> 1;
+<a name="l00132"></a>00132         }
+<a name="l00133"></a>00133       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00134"></a>00134         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00135"></a>00135         istring = argv[m];
+<a name="l00136"></a>00136       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00137"></a>00137         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00138"></a>00138         ifile = argv[m];
+<a name="l00139"></a>00139       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00140"></a>00140         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00141"></a>00141         ofile = argv[m];
+<a name="l00142"></a>00142       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00143"></a>00143         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00144"></a>00144         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00145"></a>00145           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00146"></a>00146           <span class="keywordflow">return</span> 1;
+<a name="l00147"></a>00147         }
+<a name="l00148"></a>00148         lsep = argv[m][0];
+<a name="l00149"></a>00149       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00150"></a>00150         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00151"></a>00151         cdelim = argv[m];
+<a name="l00152"></a>00152       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00153"></a>00153         std::cout
+<a name="l00154"></a>00154           << argv[0]
+<a name="l00155"></a>00155           << <span class="stringliteral">": $Id: 68e3a8ec4a5717094498179912279a756f6e3f8b $\n"</span>
+<a name="l00156"></a>00156           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00157"></a>00157         <span class="keywordflow">return</span> 0;
+<a name="l00158"></a>00158       } <span class="keywordflow">else</span>
+<a name="l00159"></a>00159         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00160"></a>00160     }
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00163"></a>00163       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00164"></a>00164       <span class="keywordflow">return</span> 1;
+<a name="l00165"></a>00165     }
+<a name="l00166"></a>00166     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00167"></a>00167     std::ifstream infile;
+<a name="l00168"></a>00168     std::istringstream instring;
+<a name="l00169"></a>00169     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00170"></a>00170       infile.open(ifile.c_str());
+<a name="l00171"></a>00171       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00172"></a>00172         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00173"></a>00173         <span class="keywordflow">return</span> 1;
+<a name="l00174"></a>00174       }
+<a name="l00175"></a>00175     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00176"></a>00176       std::string::size_type m = 0;
+<a name="l00177"></a>00177       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00178"></a>00178         m = istring.find(lsep, m);
+<a name="l00179"></a>00179         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00180"></a>00180           <span class="keywordflow">break</span>;
+<a name="l00181"></a>00181         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00182"></a>00182       }
+<a name="l00183"></a>00183       instring.str(istring);
+<a name="l00184"></a>00184     }
+<a name="l00185"></a>00185     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00186"></a>00186       (!istring.empty() ? &instring : &std::cin);
+<a name="l00187"></a>00187 
+<a name="l00188"></a>00188     std::ofstream outfile;
+<a name="l00189"></a>00189     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00190"></a>00190     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00191"></a>00191       outfile.open(ofile.c_str());
+<a name="l00192"></a>00192       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00193"></a>00193         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00194"></a>00194         <span class="keywordflow">return</span> 1;
+<a name="l00195"></a>00195       }
+<a name="l00196"></a>00196     }
+<a name="l00197"></a>00197     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
+<a name="l00200"></a>00200     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> l;
+<a name="l00201"></a>00201     <span class="keywordflow">if</span> (linecalc)
+<a name="l00202"></a>00202       l = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Line</a>(lat1, lon1, azi1);
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     <span class="comment">// Max precision = 10: 0.1 nm in distance, 10^-15 deg (= 0.11 nm),</span>
+<a name="l00205"></a>00205     <span class="comment">// 10^-11 sec (= 0.3 nm).</span>
+<a name="l00206"></a>00206     prec = std::min(10, std::max(0, prec));
+<a name="l00207"></a>00207     std::string s;
+<a name="l00208"></a>00208     <span class="keywordtype">int</span> retval = 0;
+<a name="l00209"></a>00209     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00210"></a>00210       <span class="keywordflow">try</span> {
+<a name="l00211"></a>00211         std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00212"></a>00212         <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00213"></a>00213           std::string::size_type m = s.find(cdelim);
+<a name="l00214"></a>00214           <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00215"></a>00215             eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00216"></a>00216             s = s.substr(0, m);
+<a name="l00217"></a>00217           }
+<a name="l00218"></a>00218         }
+<a name="l00219"></a>00219         std::istringstream str(s);
+<a name="l00220"></a>00220         <span class="keywordflow">if</span> (inverse) {
+<a name="l00221"></a>00221           std::string slat1, slon1, slat2, slon2;
+<a name="l00222"></a>00222           <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> slat2 >> slon2))
+<a name="l00223"></a>00223             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00224"></a>00224           std::string strc;
+<a name="l00225"></a>00225           <span class="keywordflow">if</span> (str >> strc)
+<a name="l00226"></a>00226             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00227"></a>00227           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
+<a name="l00228"></a>00228           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat2, slon2, lat2, lon2);
+<a name="l00229"></a>00229           a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Inverse</a>(lat1, lon1, lat2, lon2, s12, azi1, azi2,
+<a name="l00230"></a>00230                              m12, M12, M21, S12);
+<a name="l00231"></a>00231           <span class="keywordflow">if</span> (full)
+<a name="l00232"></a>00232             *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat1, lon1, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00233"></a>00233           *output << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi1, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00234"></a>00234           <span class="keywordflow">if</span> (full)
+<a name="l00235"></a>00235             *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat2, lon2, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00236"></a>00236           *output << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi2 + azi2sense, prec, dms, dmssep) << <span class="stringliteral">" "</span>
+<a name="l00237"></a>00237                   << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms);
+<a name="l00238"></a>00238           <span class="keywordflow">if</span> (full)
+<a name="l00239"></a>00239             *output << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(m12, prec)
+<a name="l00240"></a>00240                     << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
+<a name="l00241"></a>00241                     << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(M21, prec+7)
+<a name="l00242"></a>00242                     << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
+<a name="l00243"></a>00243           *output << eol;
+<a name="l00244"></a>00244         } <span class="keywordflow">else</span> {
+<a name="l00245"></a>00245           <span class="keywordflow">if</span> (linecalc) {
+<a name="l00246"></a>00246             std::string ss12;
+<a name="l00247"></a>00247             <span class="keywordflow">if</span> (!(str >> ss12))
+<a name="l00248"></a>00248               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00249"></a>00249             std::string strc;
+<a name="l00250"></a>00250             <span class="keywordflow">if</span> (str >> strc)
+<a name="l00251"></a>00251               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00252"></a>00252             s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
+<a name="l00253"></a>00253             <span class="keywordflow">if</span> (arcmode)
+<a name="l00254"></a>00254               l.ArcPosition(s12, lat2, lon2, azi2, a12, m12, M12, M21, S12);
+<a name="l00255"></a>00255             <span class="keywordflow">else</span>
+<a name="l00256"></a>00256               a12 = l.Position(s12, lat2, lon2, azi2, m12, M12, M21, S12);
+<a name="l00257"></a>00257           } <span class="keywordflow">else</span> {
+<a name="l00258"></a>00258             std::string slat1, slon1, sazi1, ss12;
+<a name="l00259"></a>00259             <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> sazi1 >> ss12))
+<a name="l00260"></a>00260               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00261"></a>00261             std::string strc;
+<a name="l00262"></a>00262             <span class="keywordflow">if</span> (str >> strc)
+<a name="l00263"></a>00263               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00264"></a>00264             <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
+<a name="l00265"></a>00265             azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(sazi1);
+<a name="l00266"></a>00266             s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
+<a name="l00267"></a>00267             <span class="keywordflow">if</span> (arcmode)
+<a name="l00268"></a>00268               geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">ArcDirect</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2, a12,
+<a name="l00269"></a>00269                              m12, M12, M21, S12);
+<a name="l00270"></a>00270             <span class="keywordflow">else</span>
+<a name="l00271"></a>00271               a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Direct</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2,
+<a name="l00272"></a>00272                                 m12, M12, M21, S12);
+<a name="l00273"></a>00273           }
+<a name="l00274"></a>00274           <span class="keywordflow">if</span> (arcmode)
+<a name="l00275"></a>00275             std::swap(s12, a12);
+<a name="l00276"></a>00276           <span class="keywordflow">if</span> (full)
+<a name="l00277"></a>00277             *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat1, lon1, prec, dms, dmssep) << <span class="stringliteral">" "</span>
+<a name="l00278"></a>00278                     << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi1, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00279"></a>00279           *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat2, lon2, prec, dms, dmssep) << <span class="stringliteral">" "</span>
+<a name="l00280"></a>00280                   << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi2 + azi2sense, prec, dms, dmssep);
+<a name="l00281"></a>00281           <span class="keywordflow">if</span> (full)
+<a name="l00282"></a>00282             *output << <span class="stringliteral">" "</span>
+<a name="l00283"></a>00283                     << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms)
+<a name="l00284"></a>00284                     << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(m12, prec)
+<a name="l00285"></a>00285                     << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
+<a name="l00286"></a>00286                     << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(M21, prec+7)
+<a name="l00287"></a>00287                     << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
+<a name="l00288"></a>00288           *output << eol;
+<a name="l00289"></a>00289         }
+<a name="l00290"></a>00290       }
+<a name="l00291"></a>00291       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00292"></a>00292         <span class="comment">// Write error message cout so output lines match input lines</span>
+<a name="l00293"></a>00293         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00294"></a>00294         retval = 1;
+<a name="l00295"></a>00295       }
+<a name="l00296"></a>00296     }
+<a name="l00297"></a>00297     <span class="keywordflow">return</span> retval;
+<a name="l00298"></a>00298   }
+<a name="l00299"></a>00299   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00300"></a>00300     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00301"></a>00301     <span class="keywordflow">return</span> 1;
+<a name="l00302"></a>00302   }
+<a name="l00303"></a>00303   <span class="keywordflow">catch</span> (...) {
+<a name="l00304"></a>00304     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00305"></a>00305     <span class="keywordflow">return</span> 1;
+<a name="l00306"></a>00306   }
+<a name="l00307"></a>00307 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeodesicLine_8cpp.html b/doc/html/GeodesicLine_8cpp.html
index 5e0ff97..fca5f9e 100644
--- a/doc/html/GeodesicLine_8cpp.html
+++ b/doc/html/GeodesicLine_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeodesicLine.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">GEOGRAPHICLIB_GEODESICLINE_CPP</a>   "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">GEOGRAPHICLIB_GEODESICLINE_CPP</a>   "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>This is a reformulation of the geodesic problem. The notation is as follows:</p>
 <ul>
 <li>at a general point (no suffix or 1 or 2 as suffix)<ul>
@@ -102,7 +115,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_CPP   "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_CPP   "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"</td>
         </tr>
       </table>
 </div>
@@ -113,8 +126,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeodesicLine_8cpp_source.html b/doc/html/GeodesicLine_8cpp_source.html
index 722e420..9323564 100644
--- a/doc/html/GeodesicLine_8cpp_source.html
+++ b/doc/html/GeodesicLine_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeodesicLine.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeodesicLine.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::GeodesicLine class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * This is a reformulation of the geodesic problem.  The notation is as</span>
@@ -78,7 +93,7 @@
 <a name="l00029"></a>00029 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
 <a name="l00030"></a>00030 
 <a name="l00031"></a><a class="code" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">00031</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEODESICLINE_CPP \</span>
-<a name="l00032"></a>00032 <span class="preprocessor">  "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">  "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"</span>
 <a name="l00033"></a>00033 <span class="preprocessor"></span>
 <a name="l00034"></a>00034 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">GEOGRAPHICLIB_GEODESICLINE_CPP</a>)
 <a name="l00035"></a>00035 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">GEOGRAPHICLIB_GEODESICLINE_HPP</a>)
@@ -106,16 +121,16 @@
 <a name="l00057"></a>00057     _lon1 = lon1;
 <a name="l00058"></a>00058     _azi1 = azi1;
 <a name="l00059"></a>00059     <span class="comment">// alp1 is in [0, pi]</span>
-<a name="l00060"></a>00060     real alp1 = azi1 * Math::degree<real>();
+<a name="l00060"></a>00060     real alp1 = azi1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00061"></a>00061     <span class="comment">// Enforce sin(pi) == 0 and cos(pi/2) == 0.  Better to face the ensuing</span>
 <a name="l00062"></a>00062     <span class="comment">// problems directly than to skirt them.</span>
 <a name="l00063"></a>00063     _salp1 =     azi1  == -180 ? 0 : sin(alp1);
 <a name="l00064"></a>00064     _calp1 = abs(azi1) ==   90 ? 0 : cos(alp1);
 <a name="l00065"></a>00065     real cbet1, sbet1, phi;
-<a name="l00066"></a>00066     phi = lat1 * Math::degree<real>();
+<a name="l00066"></a>00066     phi = lat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00067"></a>00067     <span class="comment">// Ensure cbet1 = +epsilon at poles</span>
 <a name="l00068"></a>00068     sbet1 = _f1 * sin(phi);
-<a name="l00069"></a>00069     cbet1 = abs(lat1) == 90 ? Geodesic::tiny_ : cos(phi);
+<a name="l00069"></a>00069     cbet1 = abs(lat1) == 90 ? <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::tiny_ : cos(phi);
 <a name="l00070"></a>00070     Geodesic::SinCosNorm(sbet1, cbet1);
 <a name="l00071"></a>00071 
 <a name="l00072"></a>00072     <span class="comment">// Evaluate alp0 from sin(alp1) * cos(bet1) = sin(alp0),</span>
@@ -175,7 +190,7 @@
 <a name="l00126"></a>00126     }
 <a name="l00127"></a>00127   }
 <a name="l00128"></a>00128 
-<a name="l00129"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad9522110fe6a5a0c7f912a6b1a23094d">00129</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeodesicLine::GenPosition(<span class="keywordtype">bool</span> arcmode, real s12_a12,
+<a name="l00129"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad9522110fe6a5a0c7f912a6b1a23094d">00129</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real GeodesicLine::GenPosition(<span class="keywordtype">bool</span> arcmode, real s12_a12,
 <a name="l00130"></a>00130                                        <span class="keywordtype">unsigned</span> outmask,
 <a name="l00131"></a>00131                                        real& lat2, real& lon2, real& azi2,
 <a name="l00132"></a>00132                                        real& s12, real& m12,
@@ -185,13 +200,13 @@
 <a name="l00136"></a>00136     outmask &= _caps & OUT_ALL;
 <a name="l00137"></a>00137     <span class="keywordflow">if</span> (!( Init() && (arcmode || (_caps & DISTANCE_IN & OUT_ALL)) ))
 <a name="l00138"></a>00138       <span class="comment">// Uninitialized or impossible distance calculation requested</span>
-<a name="l00139"></a>00139       <span class="keywordflow">return</span> Math::NaN<real>();
+<a name="l00139"></a>00139       <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00140"></a>00140 
 <a name="l00141"></a>00141     <span class="comment">// Avoid warning about uninitialized B12.</span>
 <a name="l00142"></a>00142     real sig12, ssig12, csig12, B12 = 0, AB1 = 0;
 <a name="l00143"></a>00143     <span class="keywordflow">if</span> (arcmode) {
 <a name="l00144"></a>00144       <span class="comment">// Interpret s12_a12 as spherical arc length</span>
-<a name="l00145"></a>00145       sig12 = s12_a12 * Math::degree<real>();
+<a name="l00145"></a>00145       sig12 = s12_a12 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00146"></a>00146       real s12a = abs(s12_a12);
 <a name="l00147"></a>00147       s12a -= 180 * floor(s12a / 180);
 <a name="l00148"></a>00148       ssig12 = s12a ==  0 ? 0 : sin(sig12);
@@ -227,7 +242,7 @@
 <a name="l00178"></a>00178     cbet2 = Math::hypot(_salp0, _calp0 * csig2);
 <a name="l00179"></a>00179     <span class="keywordflow">if</span> (cbet2 == 0)
 <a name="l00180"></a>00180       <span class="comment">// I.e., salp0 = 0, csig2 = 0.  Break the degeneracy in this case</span>
-<a name="l00181"></a>00181       cbet2 = csig2 = Geodesic::tiny_;
+<a name="l00181"></a>00181       cbet2 = csig2 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::tiny_;
 <a name="l00182"></a>00182     <span class="comment">// tan(omg2) = sin(alp0) * tan(sig2)</span>
 <a name="l00183"></a>00183     somg2 = _salp0 * ssig2; comg2 = csig2;  <span class="comment">// No need to normalize</span>
 <a name="l00184"></a>00184     <span class="comment">// tan(alp0) = cos(sig2)*tan(alp2)</span>
@@ -243,7 +258,7 @@
 <a name="l00194"></a>00194       lam12 = omg12 + _A3c *
 <a name="l00195"></a>00195         ( sig12 + (Geodesic::SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, _C3a, nC3_-1)
 <a name="l00196"></a>00196                    - _B31));
-<a name="l00197"></a>00197       lon12 = lam12 / Math::degree<real>();
+<a name="l00197"></a>00197       lon12 = lam12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00198"></a>00198       <span class="comment">// Can't use AngNormalize because longitude might have wrapped multiple</span>
 <a name="l00199"></a>00199       <span class="comment">// times.</span>
 <a name="l00200"></a>00200       lon12 = lon12 - 360 * floor(lon12/360 + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5));
@@ -251,11 +266,11 @@
 <a name="l00202"></a>00202     }
 <a name="l00203"></a>00203 
 <a name="l00204"></a>00204     <span class="keywordflow">if</span> (outmask & LATITUDE)
-<a name="l00205"></a>00205       lat2 = atan2(sbet2, _f1 * cbet2) / Math::degree<real>();
+<a name="l00205"></a>00205       lat2 = atan2(sbet2, _f1 * cbet2) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00206"></a>00206 
 <a name="l00207"></a>00207     <span class="keywordflow">if</span> (outmask & AZIMUTH)
 <a name="l00208"></a>00208       <span class="comment">// minus signs give range [-180, 180). 0- converts -0 to +0.</span>
-<a name="l00209"></a>00209       azi2 = 0 - atan2(-salp2, calp2) / Math::degree<real>();
+<a name="l00209"></a>00209       azi2 = 0 - atan2(-salp2, calp2) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00210"></a>00210 
 <a name="l00211"></a>00211     <span class="keywordflow">if</span> (outmask & (REDUCEDLENGTH | GEODESICSCALE)) {
 <a name="l00212"></a>00212       real
@@ -291,7 +306,7 @@
 <a name="l00242"></a>00242         <span class="comment">// salp12 = -0 and alp12 = -180.  However this depends on the sign being</span>
 <a name="l00243"></a>00243         <span class="comment">// attached to 0 correctly.  The following ensures the correct behavior.</span>
 <a name="l00244"></a>00244         <span class="keywordflow">if</span> (salp12 == 0 && calp12 < 0) {
-<a name="l00245"></a>00245           salp12 = Geodesic::tiny_ * _calp1;
+<a name="l00245"></a>00245           salp12 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::tiny_ * _calp1;
 <a name="l00246"></a>00246           calp12 = -1;
 <a name="l00247"></a>00247         }
 <a name="l00248"></a>00248       } <span class="keywordflow">else</span> {
@@ -311,14 +326,19 @@
 <a name="l00262"></a>00262       S12 = _c2 * atan2(salp12, calp12) + _A4 * (B42 - _B41);
 <a name="l00263"></a>00263     }
 <a name="l00264"></a>00264 
-<a name="l00265"></a>00265     <span class="keywordflow">return</span> arcmode ? s12_a12 : sig12 / Math::degree<real>();
+<a name="l00265"></a>00265     <span class="keywordflow">return</span> arcmode ? s12_a12 : sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00266"></a>00266   }
 <a name="l00267"></a>00267 
 <a name="l00268"></a>00268 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeodesicLine_8hpp.html b/doc/html/GeodesicLine_8hpp.html
index 600068e..9d2e606 100644
--- a/doc/html/GeodesicLine_8hpp.html
+++ b/doc/html/GeodesicLine_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeodesicLine.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">GEOGRAPHICLIB_GEODESICLINE_HPP</a>   "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">GEOGRAPHICLIB_GEODESICLINE_HPP</a>   "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_HPP   "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_HPP   "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeodesicLine_8hpp_source.html b/doc/html/GeodesicLine_8hpp_source.html
index d42a504..e73b7bd 100644
--- a/doc/html/GeodesicLine_8hpp_source.html
+++ b/doc/html/GeodesicLine_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeodesicLine.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeodesicLine.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::GeodesicLine class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEODESICLINE_HPP)</span>
 <a name="l00011"></a><a class="code" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEODESICLINE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
@@ -101,548 +116,558 @@
 <a name="l00051"></a>00051 <span class="comment">   *</span>
 <a name="l00052"></a>00052 <span class="comment">   * Example of use:</span>
 <a name="l00053"></a>00053 <span class="comment">   * \include example-GeodesicLine.cpp</span>
-<a name="l00054"></a>00054 <span class="comment">   **********************************************************************/</span>
-<a name="l00055"></a>00055 
-<a name="l00056"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html">00056</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> {
-<a name="l00057"></a>00057   <span class="keyword">private</span>:
-<a name="l00058"></a>00058     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00059"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a088c26ef9558197029bbeb317f3104c0">00059</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>;
-<a name="l00060"></a>00060     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = Geodesic::nC1_;
-<a name="l00061"></a>00061     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = Geodesic::nC1p_;
-<a name="l00062"></a>00062     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = Geodesic::nC2_;
-<a name="l00063"></a>00063     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = Geodesic::nC3_;
-<a name="l00064"></a>00064     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = Geodesic::nC4_;
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066     real _lat1, _lon1, _azi1;
-<a name="l00067"></a>00067     real _a, _f, _b, _c2, _f1, _salp0, _calp0, _k2,
-<a name="l00068"></a>00068       _salp1, _calp1, _ssig1, _csig1, _stau1, _ctau1, _somg1, _comg1,
-<a name="l00069"></a>00069       _A1m1, _A2m1, _A3c, _B11, _B21, _B31, _A4, _B41;
-<a name="l00070"></a>00070     <span class="comment">// index zero elements of _C1a, _C1pa, _C2a, _C3a are unused</span>
-<a name="l00071"></a>00071     real _C1a[nC1_ + 1], _C1pa[nC1p_ + 1], _C2a[nC2_ + 1], _C3a[nC3_],
-<a name="l00072"></a>00072       _C4a[nC4_];    <span class="comment">// all the elements of _C4a are used</span>
-<a name="l00073"></a>00073     <span class="keywordtype">unsigned</span> _caps;
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075     <span class="keyword">enum</span> captype {
-<a name="l00076"></a>00076       CAP_NONE = Geodesic::CAP_NONE,
-<a name="l00077"></a>00077       CAP_C1   = Geodesic::CAP_C1,
-<a name="l00078"></a>00078       CAP_C1p  = Geodesic::CAP_C1p,
-<a name="l00079"></a>00079       CAP_C2   = Geodesic::CAP_C2,
-<a name="l00080"></a>00080       CAP_C3   = Geodesic::CAP_C3,
-<a name="l00081"></a>00081       CAP_C4   = Geodesic::CAP_C4,
-<a name="l00082"></a>00082       CAP_ALL  = Geodesic::CAP_ALL,
-<a name="l00083"></a>00083       OUT_ALL  = Geodesic::OUT_ALL,
-<a name="l00084"></a>00084     };
-<a name="l00085"></a>00085   <span class="keyword">public</span>:
-<a name="l00086"></a>00086 <span class="comment"></span>
-<a name="l00087"></a>00087 <span class="comment">    /**</span>
-<a name="l00088"></a>00088 <span class="comment">     * Bit masks for what calculations to do.  They signify to the</span>
-<a name="l00089"></a>00089 <span class="comment">     * GeodesicLine::GeodesicLine constructor and to Geodesic::Line what</span>
-<a name="l00090"></a>00090 <span class="comment">     * capabilities should be included in the GeodesicLine object.  This is</span>
-<a name="l00091"></a>00091 <span class="comment">     * merely a duplication of Geodesic::mask.</span>
-<a name="l00092"></a>00092 <span class="comment">     **********************************************************************/</span>
-<a name="l00093"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">00093</a>     <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">mask</a> {<span class="comment"></span>
-<a name="l00094"></a>00094 <span class="comment">      /**</span>
-<a name="l00095"></a>00095 <span class="comment">       * No capabilities, no output.</span>
-<a name="l00096"></a>00096 <span class="comment">       * @hideinitializer</span>
-<a name="l00097"></a>00097 <span class="comment">       **********************************************************************/</span>
-<a name="l00098"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca0f2ec05e56540d908a326a872b9aa68f">00098</a>       NONE          = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ab10adfebcb73de5356c4787246f056af">Geodesic::NONE</a>,<span class="comment"></span>
-<a name="l00099"></a>00099 <span class="comment">      /**</span>
-<a name="l00100"></a>00100 <span class="comment">       * Calculate latitude \e lat2.  (It's not necessary to include this as a</span>
-<a name="l00101"></a>00101 <span class="comment">       * capability to GeodesicLine because this is included by default.)</span>
-<a name="l00102"></a>00102 <span class="comment">       * @hideinitializer</span>
-<a name="l00103"></a>00103 <span class="comment">       **********************************************************************/</span>
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca34e259b158b7fa5441e91d32eae20c23">00104</a>       LATITUDE      = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">Geodesic::LATITUDE</a>,<span class="comment"></span>
-<a name="l00105"></a>00105 <span class="comment">      /**</span>
-<a name="l00106"></a>00106 <span class="comment">       * Calculate longitude \e lon2.</span>
-<a name="l00107"></a>00107 <span class="comment">       * @hideinitializer</span>
-<a name="l00108"></a>00108 <span class="comment">       **********************************************************************/</span>
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">00109</a>       LONGITUDE     = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">Geodesic::LONGITUDE</a>,<span class="comment"></span>
-<a name="l00110"></a>00110 <span class="comment">      /**</span>
-<a name="l00111"></a>00111 <span class="comment">       * Calculate azimuths \e azi1 and \e azi2.  (It's not necessary to</span>
-<a name="l00112"></a>00112 <span class="comment">       * include this as a capability to GeodesicLine because this is included</span>
-<a name="l00113"></a>00113 <span class="comment">       * by default.)</span>
-<a name="l00114"></a>00114 <span class="comment">       * @hideinitializer</span>
-<a name="l00115"></a>00115 <span class="comment">       **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca654b16d956cdd16a70605a6b54a1228e">00116</a>       AZIMUTH       = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa413d0b81ccb4b5302285b1a01f16c08">Geodesic::AZIMUTH</a>,<span class="comment"></span>
-<a name="l00117"></a>00117 <span class="comment">      /**</span>
-<a name="l00118"></a>00118 <span class="comment">       * Calculate distance \e s12.</span>
-<a name="l00119"></a>00119 <span class="comment">       * @hideinitializer</span>
-<a name="l00120"></a>00120 <span class="comment">       **********************************************************************/</span>
-<a name="l00121"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca6d8b294c13e0495120b9bfd6a9281184">00121</a>       DISTANCE      = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">Geodesic::DISTANCE</a>,<span class="comment"></span>
-<a name="l00122"></a>00122 <span class="comment">      /**</span>
-<a name="l00123"></a>00123 <span class="comment">       * Allow distance \e s12 to be used as input in the direct geodesic</span>
-<a name="l00124"></a>00124 <span class="comment">       * problem.</span>
-<a name="l00125"></a>00125 <span class="comment">       * @hideinitializer</span>
-<a name="l00126"></a>00126 <span class="comment">       **********************************************************************/</span>
-<a name="l00127"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">00127</a>       DISTANCE_IN   = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ae20140cdf788fa0497df59630d3211ef">Geodesic::DISTANCE_IN</a>,<span class="comment"></span>
-<a name="l00128"></a>00128 <span class="comment">      /**</span>
-<a name="l00129"></a>00129 <span class="comment">       * Calculate reduced length \e m12.</span>
-<a name="l00130"></a>00130 <span class="comment">       * @hideinitializer</span>
-<a name="l00131"></a>00131 <span class="comment">       **********************************************************************/</span>
-<a name="l00132"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccab6649103de9393f5f18a5d2e44624411">00132</a>       REDUCEDLENGTH = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">Geodesic::REDUCEDLENGTH</a>,<span class="comment"></span>
-<a name="l00133"></a>00133 <span class="comment">      /**</span>
-<a name="l00134"></a>00134 <span class="comment">       * Calculate geodesic scales \e M12 and \e M21.</span>
-<a name="l00135"></a>00135 <span class="comment">       * @hideinitializer</span>
-<a name="l00136"></a>00136 <span class="comment">       **********************************************************************/</span>
-<a name="l00137"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca74f896572150d24be4667cf66ed696a6">00137</a>       GEODESICSCALE = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828afb114302395314a68dfef3c14693ea2e">Geodesic::GEODESICSCALE</a>,<span class="comment"></span>
-<a name="l00138"></a>00138 <span class="comment">      /**</span>
-<a name="l00139"></a>00139 <span class="comment">       * Calculate area \e S12.</span>
-<a name="l00140"></a>00140 <span class="comment">       * @hideinitializer</span>
-<a name="l00141"></a>00141 <span class="comment">       **********************************************************************/</span>
-<a name="l00142"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca71c623894b3e6bb0864f3da89d1a1915">00142</a>       AREA          = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">Geodesic::AREA</a>,<span class="comment"></span>
-<a name="l00143"></a>00143 <span class="comment">      /**</span>
-<a name="l00144"></a>00144 <span class="comment">       * All capabilities.  Calculate everything.</span>
-<a name="l00145"></a>00145 <span class="comment">       * @hideinitializer</span>
-<a name="l00146"></a>00146 <span class="comment">       **********************************************************************/</span>
-<a name="l00147"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccabf2df1a904dc1c546a122ac0ebe1acd6">00147</a>       ALL           = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">Geodesic::ALL</a>,
-<a name="l00148"></a>00148     };
-<a name="l00149"></a>00149 <span class="comment"></span>
-<a name="l00150"></a>00150 <span class="comment">    /** \name Constructors</span>
-<a name="l00151"></a>00151 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00152"></a>00152 <span class="comment">    ///@{</span>
-<a name="l00153"></a>00153 <span class="comment"></span><span class="comment"></span>
-<a name="l00154"></a>00154 <span class="comment">    /**</span>
-<a name="l00155"></a>00155 <span class="comment">     * Constructor for a geodesic line staring at latitude \e lat1, longitude</span>
-<a name="l00156"></a>00156 <span class="comment">     * \e lon1, and azimuth \e azi1 (all in degrees).</span>
-<a name="l00157"></a>00157 <span class="comment">     *</span>
-<a name="l00158"></a>00158 <span class="comment">     * @param[in] g A Geodesic object used to compute the necessary information</span>
-<a name="l00159"></a>00159 <span class="comment">     *   about the GeodesicLine.</span>
+<a name="l00054"></a>00054 <span class="comment">   *</span>
+<a name="l00055"></a>00055 <span class="comment">   * <a href="Geod.1.html">Geod</a> is a command-line utility providing access</span>
+<a name="l00056"></a>00056 <span class="comment">   * to the functionality of Geodesic and GeodesicLine.</span>
+<a name="l00057"></a>00057 <span class="comment">   **********************************************************************/</span>
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GeodesicLine {
+<a name="l00060"></a>00060   <span class="keyword">private</span>:
+<a name="l00061"></a>00061     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00062"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a088c26ef9558197029bbeb317f3104c0">00062</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>;
+<a name="l00063"></a>00063     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC1_;
+<a name="l00064"></a>00064     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC1p_;
+<a name="l00065"></a>00065     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC2_;
+<a name="l00066"></a>00066     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC3_;
+<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC4_;
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069     real _lat1, _lon1, _azi1;
+<a name="l00070"></a>00070     real _a, _f, _b, _c2, _f1, _salp0, _calp0, _k2,
+<a name="l00071"></a>00071       _salp1, _calp1, _ssig1, _csig1, _stau1, _ctau1, _somg1, _comg1,
+<a name="l00072"></a>00072       _A1m1, _A2m1, _A3c, _B11, _B21, _B31, _A4, _B41;
+<a name="l00073"></a>00073     <span class="comment">// index zero elements of _C1a, _C1pa, _C2a, _C3a are unused</span>
+<a name="l00074"></a>00074     real _C1a[nC1_ + 1], _C1pa[nC1p_ + 1], _C2a[nC2_ + 1], _C3a[nC3_],
+<a name="l00075"></a>00075       _C4a[nC4_];    <span class="comment">// all the elements of _C4a are used</span>
+<a name="l00076"></a>00076     <span class="keywordtype">unsigned</span> _caps;
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078     <span class="keyword">enum</span> captype {
+<a name="l00079"></a>00079       CAP_NONE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_NONE,
+<a name="l00080"></a>00080       CAP_C1   = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C1,
+<a name="l00081"></a>00081       CAP_C1p  = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C1p,
+<a name="l00082"></a>00082       CAP_C2   = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C2,
+<a name="l00083"></a>00083       CAP_C3   = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C3,
+<a name="l00084"></a>00084       CAP_C4   = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C4,
+<a name="l00085"></a>00085       CAP_ALL  = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_ALL,
+<a name="l00086"></a>00086       OUT_ALL  = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::OUT_ALL,
+<a name="l00087"></a>00087     };
+<a name="l00088"></a>00088   <span class="keyword">public</span>:
+<a name="l00089"></a>00089 <span class="comment"></span>
+<a name="l00090"></a>00090 <span class="comment">    /**</span>
+<a name="l00091"></a>00091 <span class="comment">     * Bit masks for what calculations to do.  They signify to the</span>
+<a name="l00092"></a>00092 <span class="comment">     * GeodesicLine::GeodesicLine constructor and to Geodesic::Line what</span>
+<a name="l00093"></a>00093 <span class="comment">     * capabilities should be included in the GeodesicLine object.  This is</span>
+<a name="l00094"></a>00094 <span class="comment">     * merely a duplication of Geodesic::mask.</span>
+<a name="l00095"></a>00095 <span class="comment">     **********************************************************************/</span>
+<a name="l00096"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">00096</a>     <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">mask</a> {<span class="comment"></span>
+<a name="l00097"></a>00097 <span class="comment">      /**</span>
+<a name="l00098"></a>00098 <span class="comment">       * No capabilities, no output.</span>
+<a name="l00099"></a>00099 <span class="comment">       * @hideinitializer</span>
+<a name="l00100"></a>00100 <span class="comment">       **********************************************************************/</span>
+<a name="l00101"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca0f2ec05e56540d908a326a872b9aa68f">00101</a>       NONE          = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::NONE,<span class="comment"></span>
+<a name="l00102"></a>00102 <span class="comment">      /**</span>
+<a name="l00103"></a>00103 <span class="comment">       * Calculate latitude \e lat2.  (It's not necessary to include this as a</span>
+<a name="l00104"></a>00104 <span class="comment">       * capability to GeodesicLine because this is included by default.)</span>
+<a name="l00105"></a>00105 <span class="comment">       * @hideinitializer</span>
+<a name="l00106"></a>00106 <span class="comment">       **********************************************************************/</span>
+<a name="l00107"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca34e259b158b7fa5441e91d32eae20c23">00107</a>       LATITUDE      = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::LATITUDE,<span class="comment"></span>
+<a name="l00108"></a>00108 <span class="comment">      /**</span>
+<a name="l00109"></a>00109 <span class="comment">       * Calculate longitude \e lon2.</span>
+<a name="l00110"></a>00110 <span class="comment">       * @hideinitializer</span>
+<a name="l00111"></a>00111 <span class="comment">       **********************************************************************/</span>
+<a name="l00112"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">00112</a>       LONGITUDE     = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::LONGITUDE,<span class="comment"></span>
+<a name="l00113"></a>00113 <span class="comment">      /**</span>
+<a name="l00114"></a>00114 <span class="comment">       * Calculate azimuths \e azi1 and \e azi2.  (It's not necessary to</span>
+<a name="l00115"></a>00115 <span class="comment">       * include this as a capability to GeodesicLine because this is included</span>
+<a name="l00116"></a>00116 <span class="comment">       * by default.)</span>
+<a name="l00117"></a>00117 <span class="comment">       * @hideinitializer</span>
+<a name="l00118"></a>00118 <span class="comment">       **********************************************************************/</span>
+<a name="l00119"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca654b16d956cdd16a70605a6b54a1228e">00119</a>       AZIMUTH       = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AZIMUTH,<span class="comment"></span>
+<a name="l00120"></a>00120 <span class="comment">      /**</span>
+<a name="l00121"></a>00121 <span class="comment">       * Calculate distance \e s12.</span>
+<a name="l00122"></a>00122 <span class="comment">       * @hideinitializer</span>
+<a name="l00123"></a>00123 <span class="comment">       **********************************************************************/</span>
+<a name="l00124"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca6d8b294c13e0495120b9bfd6a9281184">00124</a>       DISTANCE      = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE,<span class="comment"></span>
+<a name="l00125"></a>00125 <span class="comment">      /**</span>
+<a name="l00126"></a>00126 <span class="comment">       * Allow distance \e s12 to be used as input in the direct geodesic</span>
+<a name="l00127"></a>00127 <span class="comment">       * problem.</span>
+<a name="l00128"></a>00128 <span class="comment">       * @hideinitializer</span>
+<a name="l00129"></a>00129 <span class="comment">       **********************************************************************/</span>
+<a name="l00130"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">00130</a>       DISTANCE_IN   = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE_IN,<span class="comment"></span>
+<a name="l00131"></a>00131 <span class="comment">      /**</span>
+<a name="l00132"></a>00132 <span class="comment">       * Calculate reduced length \e m12.</span>
+<a name="l00133"></a>00133 <span class="comment">       * @hideinitializer</span>
+<a name="l00134"></a>00134 <span class="comment">       **********************************************************************/</span>
+<a name="l00135"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccab6649103de9393f5f18a5d2e44624411">00135</a>       REDUCEDLENGTH = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::REDUCEDLENGTH,<span class="comment"></span>
+<a name="l00136"></a>00136 <span class="comment">      /**</span>
+<a name="l00137"></a>00137 <span class="comment">       * Calculate geodesic scales \e M12 and \e M21.</span>
+<a name="l00138"></a>00138 <span class="comment">       * @hideinitializer</span>
+<a name="l00139"></a>00139 <span class="comment">       **********************************************************************/</span>
+<a name="l00140"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca74f896572150d24be4667cf66ed696a6">00140</a>       GEODESICSCALE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::GEODESICSCALE,<span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">      /**</span>
+<a name="l00142"></a>00142 <span class="comment">       * Calculate area \e S12.</span>
+<a name="l00143"></a>00143 <span class="comment">       * @hideinitializer</span>
+<a name="l00144"></a>00144 <span class="comment">       **********************************************************************/</span>
+<a name="l00145"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca71c623894b3e6bb0864f3da89d1a1915">00145</a>       AREA          = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AREA,<span class="comment"></span>
+<a name="l00146"></a>00146 <span class="comment">      /**</span>
+<a name="l00147"></a>00147 <span class="comment">       * All capabilities.  Calculate everything.</span>
+<a name="l00148"></a>00148 <span class="comment">       * @hideinitializer</span>
+<a name="l00149"></a>00149 <span class="comment">       **********************************************************************/</span>
+<a name="l00150"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccabf2df1a904dc1c546a122ac0ebe1acd6">00150</a>       ALL           = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::ALL,
+<a name="l00151"></a>00151     };
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment">    /** \name Constructors</span>
+<a name="l00154"></a>00154 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00155"></a>00155 <span class="comment">    ///@{</span>
+<a name="l00156"></a>00156 <span class="comment"></span><span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment">    /**</span>
+<a name="l00158"></a>00158 <span class="comment">     * Constructor for a geodesic line staring at latitude \e lat1, longitude</span>
+<a name="l00159"></a>00159 <span class="comment">     * \e lon1, and azimuth \e azi1 (all in degrees).</span>
 <a name="l00160"></a>00160 <span class="comment">     *</span>
-<a name="l00161"></a>00161 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00162"></a>00162 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00163"></a>00163 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00164"></a>00164 <span class="comment">     * @param[in] caps bitor'ed combination of GeodesicLine::mask values</span>
-<a name="l00165"></a>00165 <span class="comment">     *   specifying the capabilities the GeodesicLine object should possess,</span>
-<a name="l00166"></a>00166 <span class="comment">     *   i.e., which quantities can be returned in calls to</span>
-<a name="l00167"></a>00167 <span class="comment">     *   GeodesicLib::Position.</span>
-<a name="l00168"></a>00168 <span class="comment">     *</span>
-<a name="l00169"></a>00169 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00170"></a>00170 <span class="comment">     * in the range [-180, 360].</span>
+<a name="l00161"></a>00161 <span class="comment">     * @param[in] g A Geodesic object used to compute the necessary information</span>
+<a name="l00162"></a>00162 <span class="comment">     *   about the GeodesicLine.</span>
+<a name="l00163"></a>00163 <span class="comment">     *</span>
+<a name="l00164"></a>00164 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00165"></a>00165 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00166"></a>00166 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00167"></a>00167 <span class="comment">     * @param[in] caps bitor'ed combination of GeodesicLine::mask values</span>
+<a name="l00168"></a>00168 <span class="comment">     *   specifying the capabilities the GeodesicLine object should possess,</span>
+<a name="l00169"></a>00169 <span class="comment">     *   i.e., which quantities can be returned in calls to</span>
+<a name="l00170"></a>00170 <span class="comment">     *   GeodesicLib::Position.</span>
 <a name="l00171"></a>00171 <span class="comment">     *</span>
-<a name="l00172"></a>00172 <span class="comment">     * The GeodesicLine::mask values are</span>
-<a name="l00173"></a>00173 <span class="comment">     * - \e caps |= GeodesicLine::LATITUDE for the latitude \e lat2; this is</span>
-<a name="l00174"></a>00174 <span class="comment">     *   added automatically</span>
-<a name="l00175"></a>00175 <span class="comment">     * - \e caps |= GeodesicLine::LONGITUDE for the latitude \e lon2</span>
-<a name="l00176"></a>00176 <span class="comment">     * - \e caps |= GeodesicLine::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00172"></a>00172 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00173"></a>00173 <span class="comment">     * in the range [-180, 360].</span>
+<a name="l00174"></a>00174 <span class="comment">     *</span>
+<a name="l00175"></a>00175 <span class="comment">     * The GeodesicLine::mask values are</span>
+<a name="l00176"></a>00176 <span class="comment">     * - \e caps |= GeodesicLine::LATITUDE for the latitude \e lat2; this is</span>
 <a name="l00177"></a>00177 <span class="comment">     *   added automatically</span>
-<a name="l00178"></a>00178 <span class="comment">     * - \e caps |= GeodesicLine::DISTANCE for the distance \e s12</span>
-<a name="l00179"></a>00179 <span class="comment">     * - \e caps |= GeodesicLine::REDUCEDLENGTH for the reduced length \e m12</span>
-<a name="l00180"></a>00180 <span class="comment">     * - \e caps |= GeodesicLine::GEODESICSCALE for the geodesic scales \e M12</span>
-<a name="l00181"></a>00181 <span class="comment">     *   and \e M21</span>
-<a name="l00182"></a>00182 <span class="comment">     * - \e caps |= GeodesicLine::AREA for the area \e S12</span>
-<a name="l00183"></a>00183 <span class="comment">     * - \e caps |= GeodesicLine::DISTANCE_IN permits the length of the</span>
-<a name="l00184"></a>00184 <span class="comment">     *   geodesic to be given in terms of \e s12; without this capability the</span>
-<a name="l00185"></a>00185 <span class="comment">     *   length can only be specified in terms of arc length.</span>
-<a name="l00186"></a>00186 <span class="comment">     * .</span>
-<a name="l00187"></a>00187 <span class="comment">     * The default value of \e caps is GeodesicLine::ALL which turns on all the</span>
-<a name="l00188"></a>00188 <span class="comment">     * capabilities.</span>
-<a name="l00189"></a>00189 <span class="comment">     *</span>
-<a name="l00190"></a>00190 <span class="comment">     * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
-<a name="l00191"></a>00191 <span class="comment">     * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
-<a name="l00192"></a>00192 <span class="comment">     * limit \e eps -> 0 from above.</span>
-<a name="l00193"></a>00193 <span class="comment">     **********************************************************************/</span>
-<a name="l00194"></a>00194     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& g, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html# [...]
-<a name="l00195"></a>00195                  <span class="keywordtype">unsigned</span> caps = ALL)
-<a name="l00196"></a>00196       throw();
-<a name="l00197"></a>00197 <span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment">    /**</span>
-<a name="l00199"></a>00199 <span class="comment">     * A default constructor.  If GeodesicLine::Position is called on the</span>
-<a name="l00200"></a>00200 <span class="comment">     * resulting object, it returns immediately (without doing any</span>
-<a name="l00201"></a>00201 <span class="comment">     * calculations).  The object can be set with a call to Geodesic::Line.</span>
-<a name="l00202"></a>00202 <span class="comment">     * Use Init() to test whether object is still in this uninitialized state.</span>
-<a name="l00203"></a>00203 <span class="comment">     **********************************************************************/</span>
-<a name="l00204"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ae5ad84103d70f252c66bf61afbda3fa0">00204</a>     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>() throw() : _caps(0U) {}<span class="comment"></span>
-<a name="l00205"></a>00205 <span class="comment">    ///@}</span>
-<a name="l00206"></a>00206 <span class="comment"></span><span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment">    /** \name Position in terms of distance</span>
-<a name="l00208"></a>00208 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment">    ///@{</span>
-<a name="l00210"></a>00210 <span class="comment"></span><span class="comment"></span>
-<a name="l00211"></a>00211 <span class="comment">    /**</span>
-<a name="l00212"></a>00212 <span class="comment">     * Compute the position of point 2 which is a distance \e s12 (meters)</span>
-<a name="l00213"></a>00213 <span class="comment">     * from point 1.</span>
-<a name="l00214"></a>00214 <span class="comment">     *</span>
-<a name="l00215"></a>00215 <span class="comment">     * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
-<a name="l00216"></a>00216 <span class="comment">     *   signed.</span>
-<a name="l00217"></a>00217 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00218"></a>00218 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
-<a name="l00219"></a>00219 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00220"></a>00220 <span class="comment">     *   GeodesicLine::LONGITUDE.</span>
-<a name="l00221"></a>00221 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00222"></a>00222 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
-<a name="l00223"></a>00223 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00224"></a>00224 <span class="comment">     *   GeodesicLine::REDUCEDLENGTH.</span>
-<a name="l00225"></a>00225 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00226"></a>00226 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
-<a name="l00227"></a>00227 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00228"></a>00228 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00178"></a>00178 <span class="comment">     * - \e caps |= GeodesicLine::LONGITUDE for the latitude \e lon2</span>
+<a name="l00179"></a>00179 <span class="comment">     * - \e caps |= GeodesicLine::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00180"></a>00180 <span class="comment">     *   added automatically</span>
+<a name="l00181"></a>00181 <span class="comment">     * - \e caps |= GeodesicLine::DISTANCE for the distance \e s12</span>
+<a name="l00182"></a>00182 <span class="comment">     * - \e caps |= GeodesicLine::REDUCEDLENGTH for the reduced length \e m12</span>
+<a name="l00183"></a>00183 <span class="comment">     * - \e caps |= GeodesicLine::GEODESICSCALE for the geodesic scales \e M12</span>
+<a name="l00184"></a>00184 <span class="comment">     *   and \e M21</span>
+<a name="l00185"></a>00185 <span class="comment">     * - \e caps |= GeodesicLine::AREA for the area \e S12</span>
+<a name="l00186"></a>00186 <span class="comment">     * - \e caps |= GeodesicLine::DISTANCE_IN permits the length of the</span>
+<a name="l00187"></a>00187 <span class="comment">     *   geodesic to be given in terms of \e s12; without this capability the</span>
+<a name="l00188"></a>00188 <span class="comment">     *   length can only be specified in terms of arc length.</span>
+<a name="l00189"></a>00189 <span class="comment">     * .</span>
+<a name="l00190"></a>00190 <span class="comment">     * The default value of \e caps is GeodesicLine::ALL which turns on all the</span>
+<a name="l00191"></a>00191 <span class="comment">     * capabilities.</span>
+<a name="l00192"></a>00192 <span class="comment">     *</span>
+<a name="l00193"></a>00193 <span class="comment">     * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
+<a name="l00194"></a>00194 <span class="comment">     * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
+<a name="l00195"></a>00195 <span class="comment">     * limit \e eps -> 0 from above.</span>
+<a name="l00196"></a>00196 <span class="comment">     **********************************************************************/</span>
+<a name="l00197"></a>00197     GeodesicLine(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& g, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1,
+<a name="l00198"></a>00198                  <span class="keywordtype">unsigned</span> caps = ALL)
+<a name="l00199"></a>00199       throw();
+<a name="l00200"></a>00200 <span class="comment"></span>
+<a name="l00201"></a>00201 <span class="comment">    /**</span>
+<a name="l00202"></a>00202 <span class="comment">     * A default constructor.  If GeodesicLine::Position is called on the</span>
+<a name="l00203"></a>00203 <span class="comment">     * resulting object, it returns immediately (without doing any</span>
+<a name="l00204"></a>00204 <span class="comment">     * calculations).  The object can be set with a call to Geodesic::Line.</span>
+<a name="l00205"></a>00205 <span class="comment">     * Use Init() to test whether object is still in this uninitialized state.</span>
+<a name="l00206"></a>00206 <span class="comment">     **********************************************************************/</span>
+<a name="l00207"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ae5ad84103d70f252c66bf61afbda3fa0">00207</a>     GeodesicLine() throw() : _caps(0U) {}<span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment">    ///@}</span>
+<a name="l00209"></a>00209 <span class="comment"></span><span class="comment"></span>
+<a name="l00210"></a>00210 <span class="comment">    /** \name Position in terms of distance</span>
+<a name="l00211"></a>00211 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00212"></a>00212 <span class="comment">    ///@{</span>
+<a name="l00213"></a>00213 <span class="comment"></span><span class="comment"></span>
+<a name="l00214"></a>00214 <span class="comment">    /**</span>
+<a name="l00215"></a>00215 <span class="comment">     * Compute the position of point 2 which is a distance \e s12 (meters)</span>
+<a name="l00216"></a>00216 <span class="comment">     * from point 1.</span>
+<a name="l00217"></a>00217 <span class="comment">     *</span>
+<a name="l00218"></a>00218 <span class="comment">     * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
+<a name="l00219"></a>00219 <span class="comment">     *   signed.</span>
+<a name="l00220"></a>00220 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00221"></a>00221 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
+<a name="l00222"></a>00222 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00223"></a>00223 <span class="comment">     *   GeodesicLine::LONGITUDE.</span>
+<a name="l00224"></a>00224 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00225"></a>00225 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
+<a name="l00226"></a>00226 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00227"></a>00227 <span class="comment">     *   GeodesicLine::REDUCEDLENGTH.</span>
+<a name="l00228"></a>00228 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
 <a name="l00229"></a>00229 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
 <a name="l00230"></a>00230 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00231"></a>00231 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
-<a name="l00232"></a>00232 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00233"></a>00233 <span class="comment">     *   GeodesicLine::AREA.</span>
-<a name="l00234"></a>00234 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00235"></a>00235 <span class="comment">     *</span>
-<a name="l00236"></a>00236 <span class="comment">     * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
-<a name="l00237"></a>00237 <span class="comment">     *</span>
-<a name="l00238"></a>00238 <span class="comment">     * The GeodesicLine object \e must have been constructed with \e caps |=</span>
-<a name="l00239"></a>00239 <span class="comment">     * GeodesicLine::DISTANCE_IN; otherwise Math::NaN() is returned and no</span>
-<a name="l00240"></a>00240 <span class="comment">     * parameters are set.  Requesting a value which the GeodesicLine object is</span>
-<a name="l00241"></a>00241 <span class="comment">     * not capable of computing is not an error; the corresponding argument</span>
-<a name="l00242"></a>00242 <span class="comment">     * will not be altered.</span>
-<a name="l00243"></a>00243 <span class="comment">     *</span>
-<a name="l00244"></a>00244 <span class="comment">     * The following functions are overloaded versions of</span>
-<a name="l00245"></a>00245 <span class="comment">     * GeodesicLine::Position which omit some of the output parameters.  Note,</span>
-<a name="l00246"></a>00246 <span class="comment">     * however, that the arc length is always computed and returned as the</span>
-<a name="l00247"></a>00247 <span class="comment">     * function value.</span>
-<a name="l00248"></a>00248 <span class="comment">     **********************************************************************/</span>
-<a name="l00249"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">00249</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12,
-<a name="l00250"></a>00250                         real& lat2, real& lon2, real& azi2,
-<a name="l00251"></a>00251                         real& m12, real& M12, real& M21,
-<a name="l00252"></a>00252                         real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00253"></a>00253       real t;
-<a name="l00254"></a>00254       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00255"></a>00255                          LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00256"></a>00256                          REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00257"></a>00257                          lat2, lon2, azi2, t, m12, M12, M21, S12);
-<a name="l00258"></a>00258     }
-<a name="l00259"></a>00259 <span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment">    /**</span>
-<a name="l00261"></a>00261 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
-<a name="l00262"></a>00262 <span class="comment">     **********************************************************************/</span>
-<a name="l00263"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">00263</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">Position</a>(real s12, real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00264"></a>00264       real t;
-<a name="l00265"></a>00265       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00266"></a>00266                          LATITUDE | LONGITUDE,
-<a name="l00267"></a>00267                          lat2, lon2, t, t, t, t, t, t);
-<a name="l00268"></a>00268     }
-<a name="l00269"></a>00269 <span class="comment"></span>
-<a name="l00270"></a>00270 <span class="comment">    /**</span>
-<a name="l00271"></a>00271 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
-<a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac736a0cc3300e443d42bbd2dc901962c">00273</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12, real& lat2, real& lon2,
-<a name="l00274"></a>00274                         real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00275"></a>00275       real t;
-<a name="l00276"></a>00276       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00277"></a>00277                          LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00278"></a>00278                          lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00279"></a>00279     }
-<a name="l00280"></a>00280 <span class="comment"></span>
-<a name="l00281"></a>00281 <span class="comment">    /**</span>
-<a name="l00282"></a>00282 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
-<a name="l00283"></a>00283 <span class="comment">     **********************************************************************/</span>
-<a name="l00284"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a10b743a14701f620c0f41f1c6e1cee76">00284</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12, real& lat2, real& lon2,
-<a name="l00285"></a>00285                         real& azi2, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00286"></a>00286       real t;
-<a name="l00287"></a>00287       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00288"></a>00288                          LATITUDE | LONGITUDE |
-<a name="l00289"></a>00289                          AZIMUTH | REDUCEDLENGTH,
-<a name="l00290"></a>00290                          lat2, lon2, azi2, t, m12, t, t, t);
-<a name="l00291"></a>00291     }
-<a name="l00292"></a>00292 <span class="comment"></span>
-<a name="l00293"></a>00293 <span class="comment">    /**</span>
-<a name="l00294"></a>00294 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
-<a name="l00295"></a>00295 <span class="comment">     **********************************************************************/</span>
-<a name="l00296"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ada48245beb736fe9ff3d8c491e9a691f">00296</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12, real& lat2, real& lon2,
-<a name="l00297"></a>00297                         real& azi2, real& M12, real& M21)
-<a name="l00298"></a>00298       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00299"></a>00299       real t;
-<a name="l00300"></a>00300       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00301"></a>00301                          LATITUDE | LONGITUDE |
-<a name="l00302"></a>00302                          AZIMUTH | GEODESICSCALE,
-<a name="l00303"></a>00303                          lat2, lon2, azi2, t, t, M12, M21, t);
-<a name="l00304"></a>00304     }
-<a name="l00305"></a>00305 <span class="comment"></span>
-<a name="l00306"></a>00306 <span class="comment">    /**</span>
-<a name="l00307"></a>00307 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
-<a name="l00308"></a>00308 <span class="comment">     **********************************************************************/</span>
-<a name="l00309"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#aa42e5028aa78ef3ce8fbcb01b25eb458">00309</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12,
-<a name="l00310"></a>00310                         real& lat2, real& lon2, real& azi2,
-<a name="l00311"></a>00311                         real& m12, real& M12, real& M21)
-<a name="l00312"></a>00312       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00313"></a>00313       real t;
-<a name="l00314"></a>00314       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00315"></a>00315                          LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00316"></a>00316                          REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00317"></a>00317                          lat2, lon2, azi2, t, m12, M12, M21, t);
-<a name="l00318"></a>00318     }
-<a name="l00319"></a>00319 <span class="comment"></span>
-<a name="l00320"></a>00320 <span class="comment">    ///@}</span>
-<a name="l00321"></a>00321 <span class="comment"></span><span class="comment"></span>
-<a name="l00322"></a>00322 <span class="comment">    /** \name Position in terms of arc length</span>
-<a name="l00323"></a>00323 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00324"></a>00324 <span class="comment">    ///@{</span>
-<a name="l00325"></a>00325 <span class="comment"></span><span class="comment"></span>
-<a name="l00326"></a>00326 <span class="comment">    /**</span>
-<a name="l00327"></a>00327 <span class="comment">     * Compute the position of point 2 which is an arc length \e a12 (degrees)</span>
-<a name="l00328"></a>00328 <span class="comment">     * from point 1.</span>
-<a name="l00329"></a>00329 <span class="comment">     *</span>
-<a name="l00330"></a>00330 <span class="comment">     * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
-<a name="l00331"></a>00331 <span class="comment">     *   be signed.</span>
-<a name="l00332"></a>00332 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00333"></a>00333 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
-<a name="l00334"></a>00334 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00335"></a>00335 <span class="comment">     *   GeodesicLine::LONGITUDE.</span>
-<a name="l00336"></a>00336 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00337"></a>00337 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
-<a name="l00338"></a>00338 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00339"></a>00339 <span class="comment">     *   GeodesicLine::DISTANCE.</span>
-<a name="l00340"></a>00340 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
-<a name="l00341"></a>00341 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00342"></a>00342 <span class="comment">     *   GeodesicLine::REDUCEDLENGTH.</span>
-<a name="l00343"></a>00343 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00344"></a>00344 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
-<a name="l00345"></a>00345 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00346"></a>00346 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00231"></a>00231 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00232"></a>00232 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
+<a name="l00233"></a>00233 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
+<a name="l00234"></a>00234 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
+<a name="l00235"></a>00235 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00236"></a>00236 <span class="comment">     *   GeodesicLine::AREA.</span>
+<a name="l00237"></a>00237 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00238"></a>00238 <span class="comment">     *</span>
+<a name="l00239"></a>00239 <span class="comment">     * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
+<a name="l00240"></a>00240 <span class="comment">     *</span>
+<a name="l00241"></a>00241 <span class="comment">     * The GeodesicLine object \e must have been constructed with \e caps |=</span>
+<a name="l00242"></a>00242 <span class="comment">     * GeodesicLine::DISTANCE_IN; otherwise Math::NaN() is returned and no</span>
+<a name="l00243"></a>00243 <span class="comment">     * parameters are set.  Requesting a value which the GeodesicLine object is</span>
+<a name="l00244"></a>00244 <span class="comment">     * not capable of computing is not an error; the corresponding argument</span>
+<a name="l00245"></a>00245 <span class="comment">     * will not be altered.</span>
+<a name="l00246"></a>00246 <span class="comment">     *</span>
+<a name="l00247"></a>00247 <span class="comment">     * The following functions are overloaded versions of</span>
+<a name="l00248"></a>00248 <span class="comment">     * GeodesicLine::Position which omit some of the output parameters.  Note,</span>
+<a name="l00249"></a>00249 <span class="comment">     * however, that the arc length is always computed and returned as the</span>
+<a name="l00250"></a>00250 <span class="comment">     * function value.</span>
+<a name="l00251"></a>00251 <span class="comment">     **********************************************************************/</span>
+<a name="l00252"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">00252</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12,
+<a name="l00253"></a>00253                         real& lat2, real& lon2, real& azi2,
+<a name="l00254"></a>00254                         real& m12, real& M12, real& M21,
+<a name="l00255"></a>00255                         real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00256"></a>00256       real t;
+<a name="l00257"></a>00257       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00258"></a>00258                          LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00259"></a>00259                          REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00260"></a>00260                          lat2, lon2, azi2, t, m12, M12, M21, S12);
+<a name="l00261"></a>00261     }
+<a name="l00262"></a>00262 <span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment">    /**</span>
+<a name="l00264"></a>00264 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
+<a name="l00265"></a>00265 <span class="comment">     **********************************************************************/</span>
+<a name="l00266"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">00266</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">Position</a>(real s12, real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00267"></a>00267       real t;
+<a name="l00268"></a>00268       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00269"></a>00269                          LATITUDE | LONGITUDE,
+<a name="l00270"></a>00270                          lat2, lon2, t, t, t, t, t, t);
+<a name="l00271"></a>00271     }
+<a name="l00272"></a>00272 <span class="comment"></span>
+<a name="l00273"></a>00273 <span class="comment">    /**</span>
+<a name="l00274"></a>00274 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
+<a name="l00275"></a>00275 <span class="comment">     **********************************************************************/</span>
+<a name="l00276"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac736a0cc3300e443d42bbd2dc901962c">00276</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12, real& lat2, real& lon2,
+<a name="l00277"></a>00277                         real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00278"></a>00278       real t;
+<a name="l00279"></a>00279       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00280"></a>00280                          LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00281"></a>00281                          lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00282"></a>00282     }
+<a name="l00283"></a>00283 <span class="comment"></span>
+<a name="l00284"></a>00284 <span class="comment">    /**</span>
+<a name="l00285"></a>00285 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
+<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span>
+<a name="l00287"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a10b743a14701f620c0f41f1c6e1cee76">00287</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12, real& lat2, real& lon2,
+<a name="l00288"></a>00288                         real& azi2, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00289"></a>00289       real t;
+<a name="l00290"></a>00290       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00291"></a>00291                          LATITUDE | LONGITUDE |
+<a name="l00292"></a>00292                          AZIMUTH | REDUCEDLENGTH,
+<a name="l00293"></a>00293                          lat2, lon2, azi2, t, m12, t, t, t);
+<a name="l00294"></a>00294     }
+<a name="l00295"></a>00295 <span class="comment"></span>
+<a name="l00296"></a>00296 <span class="comment">    /**</span>
+<a name="l00297"></a>00297 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
+<a name="l00298"></a>00298 <span class="comment">     **********************************************************************/</span>
+<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ada48245beb736fe9ff3d8c491e9a691f">00299</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12, real& lat2, real& lon2,
+<a name="l00300"></a>00300                         real& azi2, real& M12, real& M21)
+<a name="l00301"></a>00301       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00302"></a>00302       real t;
+<a name="l00303"></a>00303       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00304"></a>00304                          LATITUDE | LONGITUDE |
+<a name="l00305"></a>00305                          AZIMUTH | GEODESICSCALE,
+<a name="l00306"></a>00306                          lat2, lon2, azi2, t, t, M12, M21, t);
+<a name="l00307"></a>00307     }
+<a name="l00308"></a>00308 <span class="comment"></span>
+<a name="l00309"></a>00309 <span class="comment">    /**</span>
+<a name="l00310"></a>00310 <span class="comment">     * See the documentation for GeodesicLine::Position.</span>
+<a name="l00311"></a>00311 <span class="comment">     **********************************************************************/</span>
+<a name="l00312"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#aa42e5028aa78ef3ce8fbcb01b25eb458">00312</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12,
+<a name="l00313"></a>00313                         real& lat2, real& lon2, real& azi2,
+<a name="l00314"></a>00314                         real& m12, real& M12, real& M21)
+<a name="l00315"></a>00315       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00316"></a>00316       real t;
+<a name="l00317"></a>00317       <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00318"></a>00318                          LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00319"></a>00319                          REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00320"></a>00320                          lat2, lon2, azi2, t, m12, M12, M21, t);
+<a name="l00321"></a>00321     }
+<a name="l00322"></a>00322 <span class="comment"></span>
+<a name="l00323"></a>00323 <span class="comment">    ///@}</span>
+<a name="l00324"></a>00324 <span class="comment"></span><span class="comment"></span>
+<a name="l00325"></a>00325 <span class="comment">    /** \name Position in terms of arc length</span>
+<a name="l00326"></a>00326 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00327"></a>00327 <span class="comment">    ///@{</span>
+<a name="l00328"></a>00328 <span class="comment"></span><span class="comment"></span>
+<a name="l00329"></a>00329 <span class="comment">    /**</span>
+<a name="l00330"></a>00330 <span class="comment">     * Compute the position of point 2 which is an arc length \e a12 (degrees)</span>
+<a name="l00331"></a>00331 <span class="comment">     * from point 1.</span>
+<a name="l00332"></a>00332 <span class="comment">     *</span>
+<a name="l00333"></a>00333 <span class="comment">     * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
+<a name="l00334"></a>00334 <span class="comment">     *   be signed.</span>
+<a name="l00335"></a>00335 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00336"></a>00336 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
+<a name="l00337"></a>00337 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00338"></a>00338 <span class="comment">     *   GeodesicLine::LONGITUDE.</span>
+<a name="l00339"></a>00339 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00340"></a>00340 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
+<a name="l00341"></a>00341 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00342"></a>00342 <span class="comment">     *   GeodesicLine::DISTANCE.</span>
+<a name="l00343"></a>00343 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
+<a name="l00344"></a>00344 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00345"></a>00345 <span class="comment">     *   GeodesicLine::REDUCEDLENGTH.</span>
+<a name="l00346"></a>00346 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
 <a name="l00347"></a>00347 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
 <a name="l00348"></a>00348 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00349"></a>00349 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
-<a name="l00350"></a>00350 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00351"></a>00351 <span class="comment">     *   GeodesicLine::AREA.</span>
-<a name="l00352"></a>00352 <span class="comment">     *</span>
-<a name="l00353"></a>00353 <span class="comment">     * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
-<a name="l00354"></a>00354 <span class="comment">     *</span>
-<a name="l00355"></a>00355 <span class="comment">     * Requesting a value which the GeodesicLine object is not capable of</span>
-<a name="l00356"></a>00356 <span class="comment">     * computing is not an error; the corresponding argument will not be</span>
-<a name="l00357"></a>00357 <span class="comment">     * altered.</span>
-<a name="l00358"></a>00358 <span class="comment">     *</span>
-<a name="l00359"></a>00359 <span class="comment">     * The following functions are overloaded versions of</span>
-<a name="l00360"></a>00360 <span class="comment">     * GeodesicLine::ArcPosition which omit some of the output parameters.</span>
-<a name="l00361"></a>00361 <span class="comment">     **********************************************************************/</span>
-<a name="l00362"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">00362</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00363"></a>00363                      real& s12, real& m12, real& M12, real& M21,
-<a name="l00364"></a>00364                      real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00365"></a>00365       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00366"></a>00366                   LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00367"></a>00367                   REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00368"></a>00368                   lat2, lon2, azi2, s12, m12, M12, M21, S12);
-<a name="l00369"></a>00369     }
-<a name="l00370"></a>00370 <span class="comment"></span>
-<a name="l00371"></a>00371 <span class="comment">    /**</span>
-<a name="l00372"></a>00372 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00373"></a>00373 <span class="comment">     **********************************************************************/</span>
-<a name="l00374"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afa377ee7344df5759cb7ea1022ff8288">00374</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2)
-<a name="l00375"></a>00375       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00376"></a>00376       real t;
-<a name="l00377"></a>00377       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00378"></a>00378                   LATITUDE | LONGITUDE,
-<a name="l00379"></a>00379                   lat2, lon2, t, t, t, t, t, t);
-<a name="l00380"></a>00380     }
-<a name="l00381"></a>00381 <span class="comment"></span>
-<a name="l00382"></a>00382 <span class="comment">    /**</span>
-<a name="l00383"></a>00383 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00384"></a>00384 <span class="comment">     **********************************************************************/</span>
-<a name="l00385"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2d147b25bcef6a7258fabc581a2d64a1">00385</a>     <span class="keywordtype">void</span> ArcPosition(real a12,
-<a name="l00386"></a>00386                      real& lat2, real& lon2, real& azi2)
-<a name="l00387"></a>00387       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00388"></a>00388       real t;
-<a name="l00389"></a>00389       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00390"></a>00390                   LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00391"></a>00391                   lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00392"></a>00392     }
-<a name="l00393"></a>00393 <span class="comment"></span>
-<a name="l00394"></a>00394 <span class="comment">    /**</span>
-<a name="l00395"></a>00395 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00396"></a>00396 <span class="comment">     **********************************************************************/</span>
-<a name="l00397"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afdedfa0bc105dbe5de4c292115c7b7ae">00397</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00398"></a>00398                      real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00399"></a>00399       real t;
-<a name="l00400"></a>00400       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00401"></a>00401                   LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
-<a name="l00402"></a>00402                   lat2, lon2, azi2, s12, t, t, t, t);
-<a name="l00403"></a>00403     }
-<a name="l00404"></a>00404 <span class="comment"></span>
-<a name="l00405"></a>00405 <span class="comment">    /**</span>
-<a name="l00406"></a>00406 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00407"></a>00407 <span class="comment">     **********************************************************************/</span>
-<a name="l00408"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad6b2013f9dcde3f4bf867632f6a2d1ff">00408</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00409"></a>00409                      real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00410"></a>00410       real t;
-<a name="l00411"></a>00411       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00412"></a>00412                   LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00413"></a>00413                   DISTANCE | REDUCEDLENGTH,
-<a name="l00414"></a>00414                   lat2, lon2, azi2, s12, m12, t, t, t);
-<a name="l00415"></a>00415     }
-<a name="l00416"></a>00416 <span class="comment"></span>
-<a name="l00417"></a>00417 <span class="comment">    /**</span>
-<a name="l00418"></a>00418 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00419"></a>00419 <span class="comment">     **********************************************************************/</span>
-<a name="l00420"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2e0249a548d2dd9c882cb4a8de17d8eb">00420</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00421"></a>00421                      real& s12, real& M12, real& M21)
-<a name="l00422"></a>00422       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00423"></a>00423       real t;
-<a name="l00424"></a>00424       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00425"></a>00425                   LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00426"></a>00426                   DISTANCE | GEODESICSCALE,
-<a name="l00427"></a>00427                   lat2, lon2, azi2, s12, t, M12, M21, t);
-<a name="l00428"></a>00428     }
-<a name="l00429"></a>00429 <span class="comment"></span>
-<a name="l00430"></a>00430 <span class="comment">    /**</span>
-<a name="l00431"></a>00431 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00432"></a>00432 <span class="comment">     **********************************************************************/</span>
-<a name="l00433"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af286d2071bdc59e68046dd2557115f21">00433</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00434"></a>00434                      real& s12, real& m12, real& M12, real& M21)
-<a name="l00435"></a>00435       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00436"></a>00436       real t;
-<a name="l00437"></a>00437       GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00438"></a>00438                   LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00439"></a>00439                   DISTANCE | REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00440"></a>00440                   lat2, lon2, azi2, s12, m12, M12, M21, t);
-<a name="l00441"></a>00441     }<span class="comment"></span>
-<a name="l00442"></a>00442 <span class="comment">    ///@}</span>
-<a name="l00443"></a>00443 <span class="comment"></span><span class="comment"></span>
-<a name="l00444"></a>00444 <span class="comment">    /** \name The general position function.</span>
-<a name="l00445"></a>00445 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00446"></a>00446 <span class="comment">    ///@{</span>
-<a name="l00447"></a>00447 <span class="comment"></span><span class="comment"></span>
-<a name="l00448"></a>00448 <span class="comment">    /**</span>
-<a name="l00449"></a>00449 <span class="comment">     * The general position function.  GeodesicLine::Position and</span>
-<a name="l00450"></a>00450 <span class="comment">     * GeodesicLine::ArcPosition are defined in terms of this function.</span>
-<a name="l00451"></a>00451 <span class="comment">     *</span>
-<a name="l00452"></a>00452 <span class="comment">     * @param[in] arcmode boolean flag determining the meaning of the second</span>
-<a name="l00453"></a>00453 <span class="comment">     *   parameter; if arcmode is false, then the GeodesicLine object must have</span>
-<a name="l00454"></a>00454 <span class="comment">     *   been constructed with \e caps |= GeodesicLine::DISTANCE_IN.</span>
-<a name="l00455"></a>00455 <span class="comment">     * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
-<a name="l00456"></a>00456 <span class="comment">     *   point 1 and point 2 (meters); otherwise it is the arc length between</span>
-<a name="l00457"></a>00457 <span class="comment">     *   point 1 and point 2 (degrees); it can be signed.</span>
-<a name="l00458"></a>00458 <span class="comment">     * @param[in] outmask a bitor'ed combination of GeodesicLine::mask values</span>
-<a name="l00459"></a>00459 <span class="comment">     *   specifying which of the following parameters should be set.</span>
-<a name="l00460"></a>00460 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00461"></a>00461 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
-<a name="l00462"></a>00462 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00463"></a>00463 <span class="comment">     *   GeodesicLine::LONGITUDE.</span>
-<a name="l00464"></a>00464 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00465"></a>00465 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
-<a name="l00466"></a>00466 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00467"></a>00467 <span class="comment">     *   GeodesicLine::DISTANCE.</span>
-<a name="l00468"></a>00468 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
-<a name="l00469"></a>00469 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00470"></a>00470 <span class="comment">     *   GeodesicLine::REDUCEDLENGTH.</span>
-<a name="l00471"></a>00471 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00472"></a>00472 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
-<a name="l00473"></a>00473 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00474"></a>00474 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00349"></a>00349 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00350"></a>00350 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
+<a name="l00351"></a>00351 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
+<a name="l00352"></a>00352 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
+<a name="l00353"></a>00353 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00354"></a>00354 <span class="comment">     *   GeodesicLine::AREA.</span>
+<a name="l00355"></a>00355 <span class="comment">     *</span>
+<a name="l00356"></a>00356 <span class="comment">     * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
+<a name="l00357"></a>00357 <span class="comment">     *</span>
+<a name="l00358"></a>00358 <span class="comment">     * Requesting a value which the GeodesicLine object is not capable of</span>
+<a name="l00359"></a>00359 <span class="comment">     * computing is not an error; the corresponding argument will not be</span>
+<a name="l00360"></a>00360 <span class="comment">     * altered.</span>
+<a name="l00361"></a>00361 <span class="comment">     *</span>
+<a name="l00362"></a>00362 <span class="comment">     * The following functions are overloaded versions of</span>
+<a name="l00363"></a>00363 <span class="comment">     * GeodesicLine::ArcPosition which omit some of the output parameters.</span>
+<a name="l00364"></a>00364 <span class="comment">     **********************************************************************/</span>
+<a name="l00365"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">00365</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00366"></a>00366                      real& s12, real& m12, real& M12, real& M21,
+<a name="l00367"></a>00367                      real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00368"></a>00368       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00369"></a>00369                   LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00370"></a>00370                   REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00371"></a>00371                   lat2, lon2, azi2, s12, m12, M12, M21, S12);
+<a name="l00372"></a>00372     }
+<a name="l00373"></a>00373 <span class="comment"></span>
+<a name="l00374"></a>00374 <span class="comment">    /**</span>
+<a name="l00375"></a>00375 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00376"></a>00376 <span class="comment">     **********************************************************************/</span>
+<a name="l00377"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afa377ee7344df5759cb7ea1022ff8288">00377</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2)
+<a name="l00378"></a>00378       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00379"></a>00379       real t;
+<a name="l00380"></a>00380       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00381"></a>00381                   LATITUDE | LONGITUDE,
+<a name="l00382"></a>00382                   lat2, lon2, t, t, t, t, t, t);
+<a name="l00383"></a>00383     }
+<a name="l00384"></a>00384 <span class="comment"></span>
+<a name="l00385"></a>00385 <span class="comment">    /**</span>
+<a name="l00386"></a>00386 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00387"></a>00387 <span class="comment">     **********************************************************************/</span>
+<a name="l00388"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2d147b25bcef6a7258fabc581a2d64a1">00388</a>     <span class="keywordtype">void</span> ArcPosition(real a12,
+<a name="l00389"></a>00389                      real& lat2, real& lon2, real& azi2)
+<a name="l00390"></a>00390       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00391"></a>00391       real t;
+<a name="l00392"></a>00392       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00393"></a>00393                   LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00394"></a>00394                   lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00395"></a>00395     }
+<a name="l00396"></a>00396 <span class="comment"></span>
+<a name="l00397"></a>00397 <span class="comment">    /**</span>
+<a name="l00398"></a>00398 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00399"></a>00399 <span class="comment">     **********************************************************************/</span>
+<a name="l00400"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afdedfa0bc105dbe5de4c292115c7b7ae">00400</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00401"></a>00401                      real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00402"></a>00402       real t;
+<a name="l00403"></a>00403       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00404"></a>00404                   LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
+<a name="l00405"></a>00405                   lat2, lon2, azi2, s12, t, t, t, t);
+<a name="l00406"></a>00406     }
+<a name="l00407"></a>00407 <span class="comment"></span>
+<a name="l00408"></a>00408 <span class="comment">    /**</span>
+<a name="l00409"></a>00409 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00410"></a>00410 <span class="comment">     **********************************************************************/</span>
+<a name="l00411"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad6b2013f9dcde3f4bf867632f6a2d1ff">00411</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00412"></a>00412                      real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00413"></a>00413       real t;
+<a name="l00414"></a>00414       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00415"></a>00415                   LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00416"></a>00416                   DISTANCE | REDUCEDLENGTH,
+<a name="l00417"></a>00417                   lat2, lon2, azi2, s12, m12, t, t, t);
+<a name="l00418"></a>00418     }
+<a name="l00419"></a>00419 <span class="comment"></span>
+<a name="l00420"></a>00420 <span class="comment">    /**</span>
+<a name="l00421"></a>00421 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00422"></a>00422 <span class="comment">     **********************************************************************/</span>
+<a name="l00423"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2e0249a548d2dd9c882cb4a8de17d8eb">00423</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00424"></a>00424                      real& s12, real& M12, real& M21)
+<a name="l00425"></a>00425       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00426"></a>00426       real t;
+<a name="l00427"></a>00427       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00428"></a>00428                   LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00429"></a>00429                   DISTANCE | GEODESICSCALE,
+<a name="l00430"></a>00430                   lat2, lon2, azi2, s12, t, M12, M21, t);
+<a name="l00431"></a>00431     }
+<a name="l00432"></a>00432 <span class="comment"></span>
+<a name="l00433"></a>00433 <span class="comment">    /**</span>
+<a name="l00434"></a>00434 <span class="comment">     * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00435"></a>00435 <span class="comment">     **********************************************************************/</span>
+<a name="l00436"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af286d2071bdc59e68046dd2557115f21">00436</a>     <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00437"></a>00437                      real& s12, real& m12, real& M12, real& M21)
+<a name="l00438"></a>00438       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00439"></a>00439       real t;
+<a name="l00440"></a>00440       GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00441"></a>00441                   LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00442"></a>00442                   DISTANCE | REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00443"></a>00443                   lat2, lon2, azi2, s12, m12, M12, M21, t);
+<a name="l00444"></a>00444     }<span class="comment"></span>
+<a name="l00445"></a>00445 <span class="comment">    ///@}</span>
+<a name="l00446"></a>00446 <span class="comment"></span><span class="comment"></span>
+<a name="l00447"></a>00447 <span class="comment">    /** \name The general position function.</span>
+<a name="l00448"></a>00448 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00449"></a>00449 <span class="comment">    ///@{</span>
+<a name="l00450"></a>00450 <span class="comment"></span><span class="comment"></span>
+<a name="l00451"></a>00451 <span class="comment">    /**</span>
+<a name="l00452"></a>00452 <span class="comment">     * The general position function.  GeodesicLine::Position and</span>
+<a name="l00453"></a>00453 <span class="comment">     * GeodesicLine::ArcPosition are defined in terms of this function.</span>
+<a name="l00454"></a>00454 <span class="comment">     *</span>
+<a name="l00455"></a>00455 <span class="comment">     * @param[in] arcmode boolean flag determining the meaning of the second</span>
+<a name="l00456"></a>00456 <span class="comment">     *   parameter; if arcmode is false, then the GeodesicLine object must have</span>
+<a name="l00457"></a>00457 <span class="comment">     *   been constructed with \e caps |= GeodesicLine::DISTANCE_IN.</span>
+<a name="l00458"></a>00458 <span class="comment">     * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
+<a name="l00459"></a>00459 <span class="comment">     *   point 1 and point 2 (meters); otherwise it is the arc length between</span>
+<a name="l00460"></a>00460 <span class="comment">     *   point 1 and point 2 (degrees); it can be signed.</span>
+<a name="l00461"></a>00461 <span class="comment">     * @param[in] outmask a bitor'ed combination of GeodesicLine::mask values</span>
+<a name="l00462"></a>00462 <span class="comment">     *   specifying which of the following parameters should be set.</span>
+<a name="l00463"></a>00463 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00464"></a>00464 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
+<a name="l00465"></a>00465 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00466"></a>00466 <span class="comment">     *   GeodesicLine::LONGITUDE.</span>
+<a name="l00467"></a>00467 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00468"></a>00468 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
+<a name="l00469"></a>00469 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00470"></a>00470 <span class="comment">     *   GeodesicLine::DISTANCE.</span>
+<a name="l00471"></a>00471 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
+<a name="l00472"></a>00472 <span class="comment">     *   GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00473"></a>00473 <span class="comment">     *   GeodesicLine::REDUCEDLENGTH.</span>
+<a name="l00474"></a>00474 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
 <a name="l00475"></a>00475 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
 <a name="l00476"></a>00476 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00477"></a>00477 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
-<a name="l00478"></a>00478 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00479"></a>00479 <span class="comment">     *   GeodesicLine::AREA.</span>
-<a name="l00480"></a>00480 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00481"></a>00481 <span class="comment">     *</span>
-<a name="l00482"></a>00482 <span class="comment">     * The GeodesicLine::mask values possible for \e outmask are</span>
-<a name="l00483"></a>00483 <span class="comment">     * - \e outmask |= GeodesicLine::LATITUDE for the latitude \e lat2.</span>
-<a name="l00484"></a>00484 <span class="comment">     * - \e outmask |= GeodesicLine::LONGITUDE for the latitude \e lon2.</span>
-<a name="l00485"></a>00485 <span class="comment">     * - \e outmask |= GeodesicLine::AZIMUTH for the latitude \e azi2.</span>
-<a name="l00486"></a>00486 <span class="comment">     * - \e outmask |= GeodesicLine::DISTANCE for the distance \e s12.</span>
-<a name="l00487"></a>00487 <span class="comment">     * - \e outmask |= GeodesicLine::REDUCEDLENGTH for the reduced length \e</span>
-<a name="l00488"></a>00488 <span class="comment">     *   m12.</span>
-<a name="l00489"></a>00489 <span class="comment">     * - \e outmask |= GeodesicLine::GEODESICSCALE for the geodesic scales \e</span>
-<a name="l00490"></a>00490 <span class="comment">     *   M12 and \e M21.</span>
-<a name="l00491"></a>00491 <span class="comment">     * - \e outmask |= GeodesicLine::AREA for the area \e S12.</span>
-<a name="l00492"></a>00492 <span class="comment">     * .</span>
-<a name="l00493"></a>00493 <span class="comment">     * Requesting a value which the GeodesicLine object is not capable of</span>
-<a name="l00494"></a>00494 <span class="comment">     * computing is not an error; the corresponding argument will not be</span>
-<a name="l00495"></a>00495 <span class="comment">     * altered.  Note, however, that the arc length is always computed and</span>
-<a name="l00496"></a>00496 <span class="comment">     * returned as the function value.</span>
-<a name="l00497"></a>00497 <span class="comment">     **********************************************************************/</span>
-<a name="l00498"></a>00498     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GenPosition(<span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
-<a name="l00499"></a>00499                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
-<a name="l00500"></a>00500                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00501"></a>00501                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00502"></a>00502 <span class="comment"></span>
-<a name="l00503"></a>00503 <span class="comment">    ///@}</span>
-<a name="l00504"></a>00504 <span class="comment"></span><span class="comment"></span>
-<a name="l00505"></a>00505 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00506"></a>00506 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00507"></a>00507 <span class="comment">    ///@{</span>
-<a name="l00508"></a>00508 <span class="comment"></span><span class="comment"></span>
-<a name="l00509"></a>00509 <span class="comment">    /**</span>
-<a name="l00510"></a>00510 <span class="comment">     * @return true if the object has been initialized.</span>
-<a name="l00511"></a>00511 <span class="comment">     **********************************************************************/</span>
-<a name="l00512"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">00512</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps != 0U; }
-<a name="l00513"></a>00513 <span class="comment"></span>
-<a name="l00514"></a>00514 <span class="comment">    /**</span>
-<a name="l00515"></a>00515 <span class="comment">     * @return \e lat1 the latitude of point 1 (degrees).</span>
-<a name="l00516"></a>00516 <span class="comment">     **********************************************************************/</span>
-<a name="l00517"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a00a291e94d0c688a168a58623a360659">00517</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Latitude() <span class="keyword">const</span> throw()
-<a name="l00518"></a>00518     { <span class="keywordflow">return</span> Init() ? _lat1 : Math::NaN<real>(); }
-<a name="l00519"></a>00519 <span class="comment"></span>
-<a name="l00520"></a>00520 <span class="comment">    /**</span>
-<a name="l00521"></a>00521 <span class="comment">     * @return \e lon1 the longitude of point 1 (degrees).</span>
-<a name="l00522"></a>00522 <span class="comment">     **********************************************************************/</span>
-<a name="l00523"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">00523</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Longitude() <span class="keyword">const</span> throw()
-<a name="l00524"></a>00524     { <span class="keywordflow">return</span> Init() ? _lon1 : Math::NaN<real>(); }
-<a name="l00525"></a>00525 <span class="comment"></span>
-<a name="l00526"></a>00526 <span class="comment">    /**</span>
-<a name="l00527"></a>00527 <span class="comment">     * @return \e azi1 the azimuth (degrees) of the geodesic line at point 1.</span>
-<a name="l00528"></a>00528 <span class="comment">     **********************************************************************/</span>
-<a name="l00529"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a40707b9e989c95418b2559b271cc2699">00529</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Azimuth() <span class="keyword">const</span> throw()
-<a name="l00530"></a>00530     { <span class="keywordflow">return</span> Init() ? _azi1 : Math::NaN<real>(); }
-<a name="l00531"></a>00531 <span class="comment"></span>
-<a name="l00532"></a>00532 <span class="comment">    /**</span>
-<a name="l00533"></a>00533 <span class="comment">     * @return \e azi0 the azimuth (degrees) of the geodesic line as it crosses</span>
-<a name="l00534"></a>00534 <span class="comment">     * the equator in a northward direction.</span>
-<a name="l00535"></a>00535 <span class="comment">     **********************************************************************/</span>
-<a name="l00536"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">00536</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">EquatorialAzimuth</a>() <span class="keyword">const</span> throw() {
-<a name="l00537"></a>00537       <span class="keywordflow">return</span> Init() ?
-<a name="l00538"></a>00538         atan2(_salp0, _calp0) / Math::degree<real>() : Math::NaN<real>();
-<a name="l00539"></a>00539     }
-<a name="l00540"></a>00540 <span class="comment"></span>
-<a name="l00541"></a>00541 <span class="comment">    /**</span>
-<a name="l00542"></a>00542 <span class="comment">     * @return \e a1 the arc length (degrees) between the northward equatorial</span>
-<a name="l00543"></a>00543 <span class="comment">     * crossing and point 1.</span>
-<a name="l00544"></a>00544 <span class="comment">     **********************************************************************/</span>
-<a name="l00545"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">00545</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">EquatorialArc</a>() <span class="keyword">const</span> throw() {
-<a name="l00546"></a>00546       <span class="keywordflow">return</span> Init() ?
-<a name="l00547"></a>00547         atan2(_ssig1, _csig1) / Math::degree<real>() : Math::NaN<real>();
-<a name="l00548"></a>00548     }
-<a name="l00549"></a>00549 <span class="comment"></span>
-<a name="l00550"></a>00550 <span class="comment">    /**</span>
-<a name="l00551"></a>00551 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00552"></a>00552 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00553"></a>00553 <span class="comment">     **********************************************************************/</span>
-<a name="l00554"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af8953029b9985a3929fe406f7530143b">00554</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00555"></a>00555     { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
-<a name="l00556"></a>00556 <span class="comment"></span>
-<a name="l00557"></a>00557 <span class="comment">    /**</span>
-<a name="l00558"></a>00558 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00559"></a>00559 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
-<a name="l00560"></a>00560 <span class="comment">     **********************************************************************/</span>
-<a name="l00561"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a42e1f97e3ed564f98b305450b0d04590">00561</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00562"></a>00562     { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
-<a name="l00563"></a>00563 <span class="comment"></span>
-<a name="l00564"></a>00564 <span class="comment">    /**</span>
-<a name="l00565"></a>00565 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00566"></a>00566 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00567"></a>00567 <span class="comment">     **********************************************************************/</span>
-<a name="l00568"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">00568</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00569"></a>00569     { <span class="keywordflow">return</span> Init() ? 1/_f : Math::NaN<real>(); }
-<a name="l00570"></a>00570 <span class="comment"></span>
-<a name="l00571"></a>00571 <span class="comment">    /**</span>
-<a name="l00572"></a>00572 <span class="comment">     * @return \e caps the computational capabilities that this object was</span>
-<a name="l00573"></a>00573 <span class="comment">     *   constructed with.  LATITUDE and AZIMUTH are always included.</span>
-<a name="l00574"></a>00574 <span class="comment">     **********************************************************************/</span>
-<a name="l00575"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">00575</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
-<a name="l00576"></a>00576 <span class="comment"></span>
-<a name="l00577"></a>00577 <span class="comment">    /**</span>
-<a name="l00578"></a>00578 <span class="comment">     * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
-<a name="l00579"></a>00579 <span class="comment">     * @return true if the GeodesicLine object has all these capabilities.</span>
-<a name="l00580"></a>00580 <span class="comment">     **********************************************************************/</span>
-<a name="l00581"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">00581</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00582"></a>00582       testcaps &= OUT_ALL;
-<a name="l00583"></a>00583       <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
-<a name="l00584"></a>00584     }<span class="comment"></span>
-<a name="l00585"></a>00585 <span class="comment">    ///@}</span>
-<a name="l00586"></a>00586 <span class="comment"></span>
-<a name="l00587"></a>00587   };
-<a name="l00588"></a>00588 
-<a name="l00589"></a>00589 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00590"></a>00590 
-<a name="l00591"></a>00591 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEODESICLINE_HPP</span>
+<a name="l00477"></a>00477 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00478"></a>00478 <span class="comment">     *   (dimensionless); requires that the GeodesicLine object was constructed</span>
+<a name="l00479"></a>00479 <span class="comment">     *   with \e caps |= GeodesicLine::GEODESICSCALE.</span>
+<a name="l00480"></a>00480 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
+<a name="l00481"></a>00481 <span class="comment">     *   that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00482"></a>00482 <span class="comment">     *   GeodesicLine::AREA.</span>
+<a name="l00483"></a>00483 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00484"></a>00484 <span class="comment">     *</span>
+<a name="l00485"></a>00485 <span class="comment">     * The GeodesicLine::mask values possible for \e outmask are</span>
+<a name="l00486"></a>00486 <span class="comment">     * - \e outmask |= GeodesicLine::LATITUDE for the latitude \e lat2.</span>
+<a name="l00487"></a>00487 <span class="comment">     * - \e outmask |= GeodesicLine::LONGITUDE for the latitude \e lon2.</span>
+<a name="l00488"></a>00488 <span class="comment">     * - \e outmask |= GeodesicLine::AZIMUTH for the latitude \e azi2.</span>
+<a name="l00489"></a>00489 <span class="comment">     * - \e outmask |= GeodesicLine::DISTANCE for the distance \e s12.</span>
+<a name="l00490"></a>00490 <span class="comment">     * - \e outmask |= GeodesicLine::REDUCEDLENGTH for the reduced length \e</span>
+<a name="l00491"></a>00491 <span class="comment">     *   m12.</span>
+<a name="l00492"></a>00492 <span class="comment">     * - \e outmask |= GeodesicLine::GEODESICSCALE for the geodesic scales \e</span>
+<a name="l00493"></a>00493 <span class="comment">     *   M12 and \e M21.</span>
+<a name="l00494"></a>00494 <span class="comment">     * - \e outmask |= GeodesicLine::AREA for the area \e S12.</span>
+<a name="l00495"></a>00495 <span class="comment">     * .</span>
+<a name="l00496"></a>00496 <span class="comment">     * Requesting a value which the GeodesicLine object is not capable of</span>
+<a name="l00497"></a>00497 <span class="comment">     * computing is not an error; the corresponding argument will not be</span>
+<a name="l00498"></a>00498 <span class="comment">     * altered.  Note, however, that the arc length is always computed and</span>
+<a name="l00499"></a>00499 <span class="comment">     * returned as the function value.</span>
+<a name="l00500"></a>00500 <span class="comment">     **********************************************************************/</span>
+<a name="l00501"></a>00501     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GenPosition(<span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
+<a name="l00502"></a>00502                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
+<a name="l00503"></a>00503                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00504"></a>00504                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00505"></a>00505 <span class="comment"></span>
+<a name="l00506"></a>00506 <span class="comment">    ///@}</span>
+<a name="l00507"></a>00507 <span class="comment"></span><span class="comment"></span>
+<a name="l00508"></a>00508 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00509"></a>00509 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00510"></a>00510 <span class="comment">    ///@{</span>
+<a name="l00511"></a>00511 <span class="comment"></span><span class="comment"></span>
+<a name="l00512"></a>00512 <span class="comment">    /**</span>
+<a name="l00513"></a>00513 <span class="comment">     * @return true if the object has been initialized.</span>
+<a name="l00514"></a>00514 <span class="comment">     **********************************************************************/</span>
+<a name="l00515"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">00515</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps != 0U; }
+<a name="l00516"></a>00516 <span class="comment"></span>
+<a name="l00517"></a>00517 <span class="comment">    /**</span>
+<a name="l00518"></a>00518 <span class="comment">     * @return \e lat1 the latitude of point 1 (degrees).</span>
+<a name="l00519"></a>00519 <span class="comment">     **********************************************************************/</span>
+<a name="l00520"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a00a291e94d0c688a168a58623a360659">00520</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Latitude() <span class="keyword">const</span> throw()
+<a name="l00521"></a>00521     { <span class="keywordflow">return</span> Init() ? _lat1 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00522"></a>00522 <span class="comment"></span>
+<a name="l00523"></a>00523 <span class="comment">    /**</span>
+<a name="l00524"></a>00524 <span class="comment">     * @return \e lon1 the longitude of point 1 (degrees).</span>
+<a name="l00525"></a>00525 <span class="comment">     **********************************************************************/</span>
+<a name="l00526"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">00526</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Longitude() <span class="keyword">const</span> throw()
+<a name="l00527"></a>00527     { <span class="keywordflow">return</span> Init() ? _lon1 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00528"></a>00528 <span class="comment"></span>
+<a name="l00529"></a>00529 <span class="comment">    /**</span>
+<a name="l00530"></a>00530 <span class="comment">     * @return \e azi1 the azimuth (degrees) of the geodesic line at point 1.</span>
+<a name="l00531"></a>00531 <span class="comment">     **********************************************************************/</span>
+<a name="l00532"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a40707b9e989c95418b2559b271cc2699">00532</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Azimuth() <span class="keyword">const</span> throw()
+<a name="l00533"></a>00533     { <span class="keywordflow">return</span> Init() ? _azi1 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00534"></a>00534 <span class="comment"></span>
+<a name="l00535"></a>00535 <span class="comment">    /**</span>
+<a name="l00536"></a>00536 <span class="comment">     * @return \e azi0 the azimuth (degrees) of the geodesic line as it crosses</span>
+<a name="l00537"></a>00537 <span class="comment">     * the equator in a northward direction.</span>
+<a name="l00538"></a>00538 <span class="comment">     **********************************************************************/</span>
+<a name="l00539"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">00539</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">EquatorialAzimuth</a>() <span class="keyword">const</span> throw() {
+<a name="l00540"></a>00540       <span class="keywordflow">return</span> Init() ?
+<a name="l00541"></a>00541         atan2(_salp0, _calp0) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() : Math::NaN<real>();
+<a name="l00542"></a>00542     }
+<a name="l00543"></a>00543 <span class="comment"></span>
+<a name="l00544"></a>00544 <span class="comment">    /**</span>
+<a name="l00545"></a>00545 <span class="comment">     * @return \e a1 the arc length (degrees) between the northward equatorial</span>
+<a name="l00546"></a>00546 <span class="comment">     * crossing and point 1.</span>
+<a name="l00547"></a>00547 <span class="comment">     **********************************************************************/</span>
+<a name="l00548"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">00548</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">EquatorialArc</a>() <span class="keyword">const</span> throw() {
+<a name="l00549"></a>00549       <span class="keywordflow">return</span> Init() ?
+<a name="l00550"></a>00550         atan2(_ssig1, _csig1) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() : Math::NaN<real>();
+<a name="l00551"></a>00551     }
+<a name="l00552"></a>00552 <span class="comment"></span>
+<a name="l00553"></a>00553 <span class="comment">    /**</span>
+<a name="l00554"></a>00554 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00555"></a>00555 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00556"></a>00556 <span class="comment">     **********************************************************************/</span>
+<a name="l00557"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af8953029b9985a3929fe406f7530143b">00557</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00558"></a>00558     { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00559"></a>00559 <span class="comment"></span>
+<a name="l00560"></a>00560 <span class="comment">    /**</span>
+<a name="l00561"></a>00561 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00562"></a>00562 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
+<a name="l00563"></a>00563 <span class="comment">     **********************************************************************/</span>
+<a name="l00564"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a42e1f97e3ed564f98b305450b0d04590">00564</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00565"></a>00565     { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00566"></a>00566 <span class="comment"></span>
+<a name="l00567"></a>00567 <span class="comment">    /// \cond SKIP</span>
+<a name="l00568"></a>00568 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00569"></a>00569 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00570"></a>00570 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00571"></a>00571 <span class="comment">     **********************************************************************/</span>
+<a name="l00572"></a>00572     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00573"></a>00573     { <span class="keywordflow">return</span> Init() ? 1/_f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00574"></a>00574 <span class="comment">    /// \endcond</span>
+<a name="l00575"></a>00575 <span class="comment"></span><span class="comment"></span>
+<a name="l00576"></a>00576 <span class="comment">    /**</span>
+<a name="l00577"></a>00577 <span class="comment">     * @return \e caps the computational capabilities that this object was</span>
+<a name="l00578"></a>00578 <span class="comment">     *   constructed with.  LATITUDE and AZIMUTH are always included.</span>
+<a name="l00579"></a>00579 <span class="comment">     **********************************************************************/</span>
+<a name="l00580"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">00580</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
+<a name="l00581"></a>00581 <span class="comment"></span>
+<a name="l00582"></a>00582 <span class="comment">    /**</span>
+<a name="l00583"></a>00583 <span class="comment">     * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
+<a name="l00584"></a>00584 <span class="comment">     * @return true if the GeodesicLine object has all these capabilities.</span>
+<a name="l00585"></a>00585 <span class="comment">     **********************************************************************/</span>
+<a name="l00586"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">00586</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00587"></a>00587       testcaps &= OUT_ALL;
+<a name="l00588"></a>00588       <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
+<a name="l00589"></a>00589     }<span class="comment"></span>
+<a name="l00590"></a>00590 <span class="comment">    ///@}</span>
+<a name="l00591"></a>00591 <span class="comment"></span>
+<a name="l00592"></a>00592   };
+<a name="l00593"></a>00593 
+<a name="l00594"></a>00594 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00595"></a>00595 
+<a name="l00596"></a>00596 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEODESICLINE_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeodesicProj.1.html b/doc/html/GeodesicProj.1.html
index 333e061..2d3f493 100644
--- a/doc/html/GeodesicProj.1.html
+++ b/doc/html/GeodesicProj.1.html
@@ -44,8 +44,11 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>GeodesicProj</strong> ( <strong>-z</strong> | <strong>-c</strong> | <strong>-g</strong> ) <em>lat0</em> <em>lon0</em> [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 1/<em>f</em>.)  By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
 <em>f</em> = 1/298.257223563.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/doc/html/GeodesicProj_8cpp.html b/doc/html/GeodesicProj_8cpp.html
index d8203cc..61fb37c 100644
--- a/doc/html/GeodesicProj_8cpp.html
+++ b/doc/html/GeodesicProj_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeodesicProj.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for geodesic projections. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o GeodesicProj \ <a class="el" href="GeodesicProj_8cpp.html" title="Command line utility for geodesic projections.">GeodesicProj.cpp</a> \ ../src/AzimuthalEquidistant.cpp \ ../src/CassiniSoldner.cpp \ ../src/DMS.cpp \ ../src/Geodesic.cpp \ ../src/GeodesicLine.cpp \ ../src/Gnomonic.cpp</p>
 <p>See the <a href="GeodesicProj.1.html">man page</a> for usage information. </p>
 
@@ -105,13 +120,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="GeodesicProj_8cpp_source.html#l00037">37</a> of file <a class="el" href="GeodesicProj_8cpp_source.html">GeodesicProj.cpp</a>.</p>
 
-<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="Gnomonic_8cpp_source.html#l00025">GeographicLib::Gnomonic::Forward()</a>, <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00025">GeographicLib::AzimuthalEquidistant::Forward()</a>, <a class="el" href="Gnomonic_8cpp_source.html#l00044">GeographicLib::Gnomonic::Reverse()</a>, and <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00036">GeographicLib [...]
+<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00036">GeographicLib::AzimuthalEquidistant::Reverse()</a>, <a class="el" href="Gnomonic_8cpp_source.html#l00044">GeographicLib::Gnomonic::Reverse()</a>, <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00025">GeographicLib::AzimuthalEquidistant::Forward()</a>, and <a class="el" href="Gnomonic_8cpp_source.html#l00025">G [...]
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeodesicProj_8cpp_source.html b/doc/html/GeodesicProj_8cpp_source.html
index 4061eeb..4a328a9 100644
--- a/doc/html/GeodesicProj_8cpp_source.html
+++ b/doc/html/GeodesicProj_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeodesicProj.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeodesicProj.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geodesic projections</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -86,174 +101,198 @@
 <a name="l00037"></a><a class="code" href="GeodesicProj_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00037</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00038"></a>00038   <span class="keywordflow">try</span> {
 <a name="l00039"></a>00039     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00040"></a>00040     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00040"></a>00040     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00041"></a>00041     <span class="keywordtype">bool</span> azimuthal = <span class="keyword">false</span>, cassini = <span class="keyword">false</span>, gnomonic = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
 <a name="l00042"></a>00042     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0 = 0, lon0 = 0;
 <a name="l00043"></a>00043     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00044"></a>00044       a = Constants::WGS84_a<real>(),
+<a name="l00044"></a>00044       a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
 <a name="l00045"></a>00045       f = Constants::WGS84_f<real>();
-<a name="l00046"></a>00046     std::string istring, ifile, ofile;
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00049"></a>00049       std::string arg(argv[m]);
-<a name="l00050"></a>00050       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00051"></a>00051         reverse = <span class="keyword">true</span>;
-<a name="l00052"></a>00052       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-z"</span> || arg == <span class="stringliteral">"-g"</span>) {
-<a name="l00053"></a>00053         cassini = arg == <span class="stringliteral">"-c"</span>;
-<a name="l00054"></a>00054         azimuthal = arg == <span class="stringliteral">"-z"</span>;
-<a name="l00055"></a>00055         gnomonic = arg == <span class="stringliteral">"-g"</span>;
-<a name="l00056"></a>00056         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00057"></a>00057         <span class="keywordflow">try</span> {
-<a name="l00058"></a>00058           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00059"></a>00059                             lat0, lon0);
-<a name="l00060"></a>00060         }
-<a name="l00061"></a>00061         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00062"></a>00062           std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00063"></a>00063                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00064"></a>00064           <span class="keywordflow">return</span> 1;
-<a name="l00065"></a>00065         }
-<a name="l00066"></a>00066         m += 2;
-<a name="l00067"></a>00067       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00068"></a>00068         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00069"></a>00069         <span class="keywordflow">try</span> {
-<a name="l00070"></a>00070           a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00071"></a>00071           f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00072"></a>00072         }
-<a name="l00073"></a>00073         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00074"></a>00074           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00075"></a>00075           <span class="keywordflow">return</span> 1;
-<a name="l00076"></a>00076         }
-<a name="l00077"></a>00077         m += 2;
-<a name="l00078"></a>00078       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00079"></a>00079         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00080"></a>00080         istring = argv[m];
-<a name="l00081"></a>00081       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00082"></a>00082         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00083"></a>00083         ifile = argv[m];
-<a name="l00084"></a>00084       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00085"></a>00085         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00086"></a>00086         ofile = argv[m];
-<a name="l00087"></a>00087       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00088"></a>00088         std::cout
-<a name="l00089"></a>00089           << argv[0]
-<a name="l00090"></a>00090           << <span class="stringliteral">": $Id: add83c03428521dde4441cc0de01d5b8313549b6 $\n"</span>
-<a name="l00091"></a>00091           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00092"></a>00092         <span class="keywordflow">return</span> 0;
-<a name="l00093"></a>00093       } <span class="keywordflow">else</span>
-<a name="l00094"></a>00094         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00095"></a>00095     }
-<a name="l00096"></a>00096 
-<a name="l00097"></a>00097     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00098"></a>00098       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00099"></a>00099       <span class="keywordflow">return</span> 1;
-<a name="l00100"></a>00100     }
-<a name="l00101"></a>00101     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00102"></a>00102     std::ifstream infile;
-<a name="l00103"></a>00103     std::istringstream instring;
-<a name="l00104"></a>00104     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00105"></a>00105       infile.open(ifile.c_str());
-<a name="l00106"></a>00106       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00107"></a>00107         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00108"></a>00108         <span class="keywordflow">return</span> 1;
-<a name="l00109"></a>00109       }
-<a name="l00110"></a>00110     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00111"></a>00111       std::string::size_type m = 0;
-<a name="l00112"></a>00112       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00113"></a>00113         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00114"></a>00114         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00115"></a>00115           <span class="keywordflow">break</span>;
-<a name="l00116"></a>00116         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00117"></a>00117       }
-<a name="l00118"></a>00118       instring.str(istring);
-<a name="l00119"></a>00119     }
-<a name="l00120"></a>00120     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00121"></a>00121       (!istring.empty() ? &instring : &std::cin);
-<a name="l00122"></a>00122 
-<a name="l00123"></a>00123     std::ofstream outfile;
-<a name="l00124"></a>00124     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00125"></a>00125     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00126"></a>00126       outfile.open(ofile.c_str());
-<a name="l00127"></a>00127       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00128"></a>00128         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00129"></a>00129         <span class="keywordflow">return</span> 1;
-<a name="l00130"></a>00130       }
-<a name="l00131"></a>00131     }
-<a name="l00132"></a>00132     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00046"></a>00046     std::string istring, ifile, ofile, cdelim;
+<a name="l00047"></a>00047     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00050"></a>00050       std::string arg(argv[m]);
+<a name="l00051"></a>00051       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00052"></a>00052         reverse = <span class="keyword">true</span>;
+<a name="l00053"></a>00053       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-z"</span> || arg == <span class="stringliteral">"-g"</span>) {
+<a name="l00054"></a>00054         cassini = arg == <span class="stringliteral">"-c"</span>;
+<a name="l00055"></a>00055         azimuthal = arg == <span class="stringliteral">"-z"</span>;
+<a name="l00056"></a>00056         gnomonic = arg == <span class="stringliteral">"-g"</span>;
+<a name="l00057"></a>00057         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00058"></a>00058         <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00060"></a>00060                             lat0, lon0);
+<a name="l00061"></a>00061         }
+<a name="l00062"></a>00062         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00063"></a>00063           std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00064"></a>00064                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00065"></a>00065           <span class="keywordflow">return</span> 1;
+<a name="l00066"></a>00066         }
+<a name="l00067"></a>00067         m += 2;
+<a name="l00068"></a>00068       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00069"></a>00069         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00070"></a>00070         <span class="keywordflow">try</span> {
+<a name="l00071"></a>00071           a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00072"></a>00072           f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00073"></a>00073         }
+<a name="l00074"></a>00074         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00075"></a>00075           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00076"></a>00076           <span class="keywordflow">return</span> 1;
+<a name="l00077"></a>00077         }
+<a name="l00078"></a>00078         m += 2;
+<a name="l00079"></a>00079       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00080"></a>00080         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00081"></a>00081         istring = argv[m];
+<a name="l00082"></a>00082       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00083"></a>00083         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00084"></a>00084         ifile = argv[m];
+<a name="l00085"></a>00085       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00086"></a>00086         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00087"></a>00087         ofile = argv[m];
+<a name="l00088"></a>00088       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00089"></a>00089         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00090"></a>00090         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00091"></a>00091           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00092"></a>00092           <span class="keywordflow">return</span> 1;
+<a name="l00093"></a>00093         }
+<a name="l00094"></a>00094         lsep = argv[m][0];
+<a name="l00095"></a>00095       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00096"></a>00096         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00097"></a>00097         cdelim = argv[m];
+<a name="l00098"></a>00098       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00099"></a>00099         std::cout
+<a name="l00100"></a>00100           << argv[0]
+<a name="l00101"></a>00101           << <span class="stringliteral">": $Id: d6745c19af3da288a8f95b4c6a9003906409800c $\n"</span>
+<a name="l00102"></a>00102           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00103"></a>00103         <span class="keywordflow">return</span> 0;
+<a name="l00104"></a>00104       } <span class="keywordflow">else</span>
+<a name="l00105"></a>00105         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00106"></a>00106     }
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00109"></a>00109       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00110"></a>00110       <span class="keywordflow">return</span> 1;
+<a name="l00111"></a>00111     }
+<a name="l00112"></a>00112     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00113"></a>00113     std::ifstream infile;
+<a name="l00114"></a>00114     std::istringstream instring;
+<a name="l00115"></a>00115     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00116"></a>00116       infile.open(ifile.c_str());
+<a name="l00117"></a>00117       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00118"></a>00118         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00119"></a>00119         <span class="keywordflow">return</span> 1;
+<a name="l00120"></a>00120       }
+<a name="l00121"></a>00121     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00122"></a>00122       std::string::size_type m = 0;
+<a name="l00123"></a>00123       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00124"></a>00124         m = istring.find(lsep, m);
+<a name="l00125"></a>00125         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00126"></a>00126           <span class="keywordflow">break</span>;
+<a name="l00127"></a>00127         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00128"></a>00128       }
+<a name="l00129"></a>00129       instring.str(istring);
+<a name="l00130"></a>00130     }
+<a name="l00131"></a>00131     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00132"></a>00132       (!istring.empty() ? &instring : &std::cin);
 <a name="l00133"></a>00133 
-<a name="l00134"></a>00134     <span class="keywordflow">if</span> (!(azimuthal || cassini || gnomonic)) {
-<a name="l00135"></a>00135       std::cerr << <span class="stringliteral">"Must specify \"-z lat0 lon0\" or "</span>
-<a name="l00136"></a>00136                 << <span class="stringliteral">"\"-c lat0 lon0\" or \"-g lat0 lon0\"\n"</span>;
-<a name="l00137"></a>00137       <span class="keywordflow">return</span> 1;
-<a name="l00138"></a>00138     }
-<a name="l00139"></a>00139 
-<a name="l00140"></a>00140     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
-<a name="l00141"></a>00141     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> cs = cassini ?
-<a name="l00142"></a>00142       <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(lat0, lon0, geod) : CassiniSoldner(geod);
-<a name="l00143"></a>00143     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> az(geod);
-<a name="l00144"></a>00144     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> gn(geod);
-<a name="l00145"></a>00145 
-<a name="l00146"></a>00146     std::string s;
-<a name="l00147"></a>00147     <span class="keywordtype">int</span> retval = 0;
-<a name="l00148"></a>00148     std::cout << std::fixed;
-<a name="l00149"></a>00149     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00150"></a>00150       <span class="keywordflow">try</span> {
-<a name="l00151"></a>00151         std::istringstream str(s);
-<a name="l00152"></a>00152         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, azi, rk;
-<a name="l00153"></a>00153         std::string stra, strb;
-<a name="l00154"></a>00154         <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00155"></a>00155           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00156"></a>00156         <span class="keywordflow">if</span> (reverse) {
-<a name="l00157"></a>00157           x = Utility::num<real>(stra);
-<a name="l00158"></a>00158           y = Utility::num<real>(strb);
-<a name="l00159"></a>00159         } <span class="keywordflow">else</span>
-<a name="l00160"></a>00160           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00161"></a>00161         std::string strc;
-<a name="l00162"></a>00162         <span class="keywordflow">if</span> (str >> strc)
-<a name="l00163"></a>00163           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00164"></a>00164         <span class="keywordflow">if</span> (reverse) {
-<a name="l00165"></a>00165           <span class="keywordflow">if</span> (cassini)
-<a name="l00166"></a>00166             cs.Reverse(x, y, lat, lon, azi, rk);
-<a name="l00167"></a>00167           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
-<a name="l00168"></a>00168             az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00169"></a>00169           <span class="keywordflow">else</span>
-<a name="l00170"></a>00170             gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00171"></a>00171           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00172"></a>00172                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00173"></a>00173                   << Utility::str<real>(azi, 15) << <span class="stringliteral">" "</span>
-<a name="l00174"></a>00174                   << Utility::str<real>(rk, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00175"></a>00175         } <span class="keywordflow">else</span> {
-<a name="l00176"></a>00176           <span class="keywordflow">if</span> (cassini)
-<a name="l00177"></a>00177             cs.Forward(lat, lon, x, y, azi, rk);
-<a name="l00178"></a>00178           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
-<a name="l00179"></a>00179             az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00180"></a>00180           <span class="keywordflow">else</span>
-<a name="l00181"></a>00181             gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00182"></a>00182           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00183"></a>00183                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00184"></a>00184                   << Utility::str<real>(azi, 15) << <span class="stringliteral">" "</span>
-<a name="l00185"></a>00185                   << Utility::str<real>(rk, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00186"></a>00186         }
-<a name="l00187"></a>00187       }
-<a name="l00188"></a>00188       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00189"></a>00189         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00190"></a>00190         retval = 1;
-<a name="l00191"></a>00191       }
-<a name="l00192"></a>00192     }
-<a name="l00193"></a>00193     <span class="keywordflow">return</span> retval;
-<a name="l00194"></a>00194   }
-<a name="l00195"></a>00195   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00196"></a>00196     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00197"></a>00197     <span class="keywordflow">return</span> 1;
-<a name="l00198"></a>00198   }
-<a name="l00199"></a>00199   <span class="keywordflow">catch</span> (...) {
-<a name="l00200"></a>00200     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00201"></a>00201     <span class="keywordflow">return</span> 1;
-<a name="l00202"></a>00202   }
-<a name="l00203"></a>00203 }
+<a name="l00134"></a>00134     std::ofstream outfile;
+<a name="l00135"></a>00135     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00136"></a>00136     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00137"></a>00137       outfile.open(ofile.c_str());
+<a name="l00138"></a>00138       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00139"></a>00139         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00140"></a>00140         <span class="keywordflow">return</span> 1;
+<a name="l00141"></a>00141       }
+<a name="l00142"></a>00142     }
+<a name="l00143"></a>00143     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145     <span class="keywordflow">if</span> (!(azimuthal || cassini || gnomonic)) {
+<a name="l00146"></a>00146       std::cerr << <span class="stringliteral">"Must specify \"-z lat0 lon0\" or "</span>
+<a name="l00147"></a>00147                 << <span class="stringliteral">"\"-c lat0 lon0\" or \"-g lat0 lon0\"\n"</span>;
+<a name="l00148"></a>00148       <span class="keywordflow">return</span> 1;
+<a name="l00149"></a>00149     }
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
+<a name="l00152"></a>00152     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> cs = cassini ?
+<a name="l00153"></a>00153       <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(lat0, lon0, geod) : CassiniSoldner(geod);
+<a name="l00154"></a>00154     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> az(geod);
+<a name="l00155"></a>00155     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> gn(geod);
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157     std::string s;
+<a name="l00158"></a>00158     <span class="keywordtype">int</span> retval = 0;
+<a name="l00159"></a>00159     std::cout << std::fixed;
+<a name="l00160"></a>00160     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00161"></a>00161       <span class="keywordflow">try</span> {
+<a name="l00162"></a>00162         std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00163"></a>00163         <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00164"></a>00164           std::string::size_type m = s.find(cdelim);
+<a name="l00165"></a>00165           <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00166"></a>00166             eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00167"></a>00167             s = s.substr(0, m);
+<a name="l00168"></a>00168           }
+<a name="l00169"></a>00169         }
+<a name="l00170"></a>00170         std::istringstream str(s);
+<a name="l00171"></a>00171         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, azi, rk;
+<a name="l00172"></a>00172         std::string stra, strb;
+<a name="l00173"></a>00173         <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00174"></a>00174           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00175"></a>00175         <span class="keywordflow">if</span> (reverse) {
+<a name="l00176"></a>00176           x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00177"></a>00177           y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00178"></a>00178         } <span class="keywordflow">else</span>
+<a name="l00179"></a>00179           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00180"></a>00180         std::string strc;
+<a name="l00181"></a>00181         <span class="keywordflow">if</span> (str >> strc)
+<a name="l00182"></a>00182           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00183"></a>00183         <span class="keywordflow">if</span> (reverse) {
+<a name="l00184"></a>00184           <span class="keywordflow">if</span> (cassini)
+<a name="l00185"></a>00185             cs.Reverse(x, y, lat, lon, azi, rk);
+<a name="l00186"></a>00186           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
+<a name="l00187"></a>00187             az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00188"></a>00188           <span class="keywordflow">else</span>
+<a name="l00189"></a>00189             gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00190"></a>00190           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00191"></a>00191                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00192"></a>00192                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(azi, 15) << <span class="stringliteral">" "</span>
+<a name="l00193"></a>00193                   << Utility::str<real>(rk, 16) << eol;
+<a name="l00194"></a>00194         } <span class="keywordflow">else</span> {
+<a name="l00195"></a>00195           <span class="keywordflow">if</span> (cassini)
+<a name="l00196"></a>00196             cs.Forward(lat, lon, x, y, azi, rk);
+<a name="l00197"></a>00197           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
+<a name="l00198"></a>00198             az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00199"></a>00199           <span class="keywordflow">else</span>
+<a name="l00200"></a>00200             gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00201"></a>00201           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00202"></a>00202                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00203"></a>00203                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(azi, 15) << <span class="stringliteral">" "</span>
+<a name="l00204"></a>00204                   << Utility::str<real>(rk, 16) << eol;
+<a name="l00205"></a>00205         }
+<a name="l00206"></a>00206       }
+<a name="l00207"></a>00207       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00208"></a>00208         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00209"></a>00209         retval = 1;
+<a name="l00210"></a>00210       }
+<a name="l00211"></a>00211     }
+<a name="l00212"></a>00212     <span class="keywordflow">return</span> retval;
+<a name="l00213"></a>00213   }
+<a name="l00214"></a>00214   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00215"></a>00215     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00216"></a>00216     <span class="keywordflow">return</span> 1;
+<a name="l00217"></a>00217   }
+<a name="l00218"></a>00218   <span class="keywordflow">catch</span> (...) {
+<a name="l00219"></a>00219     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00220"></a>00220     <span class="keywordflow">return</span> 1;
+<a name="l00221"></a>00221   }
+<a name="l00222"></a>00222 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geodesic_8cpp.html b/doc/html/Geodesic_8cpp.html
index daaae6a..e4089f4 100644
--- a/doc/html/Geodesic_8cpp.html
+++ b/doc/html/Geodesic_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geodesic.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,17 +76,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">GEOGRAPHICLIB_GEODESIC_CPP</a>   "$Id: ff2511fd7f024c20973838884776d929597eb044 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">GEOGRAPHICLIB_GEODESIC_CPP</a>   "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>This is a reformulation of the geodesic problem. The notation is as follows:</p>
 <ul>
 <li>at a general point (no suffix or 1 or 2 as suffix)<ul>
@@ -103,7 +116,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEODESIC_CPP   "$Id: ff2511fd7f024c20973838884776d929597eb044 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEODESIC_CPP   "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"</td>
         </tr>
       </table>
 </div>
@@ -114,8 +127,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geodesic_8cpp_source.html b/doc/html/Geodesic_8cpp_source.html
index f83f7e1..c16f746 100644
--- a/doc/html/Geodesic_8cpp_source.html
+++ b/doc/html/Geodesic_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geodesic.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geodesic.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::Geodesic class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011, 2012) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * This is a reformulation of the geodesic problem.  The notation is as</span>
@@ -79,7 +94,7 @@
 <a name="l00030"></a>00030 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
 <a name="l00031"></a>00031 
 <a name="l00032"></a><a class="code" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">00032</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEODESIC_CPP \</span>
-<a name="l00033"></a>00033 <span class="preprocessor">  "$Id: ff2511fd7f024c20973838884776d929597eb044 $"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">  "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"</span>
 <a name="l00034"></a>00034 <span class="preprocessor"></span>
 <a name="l00035"></a>00035 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">GEOGRAPHICLIB_GEODESIC_CPP</a>)
 <a name="l00036"></a>00036 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">GEOGRAPHICLIB_GEODESIC_HPP</a>)
@@ -91,14 +106,14 @@
 <a name="l00042"></a>00042   <span class="comment">// Underflow guard.  We require</span>
 <a name="l00043"></a>00043   <span class="comment">//   tiny_ * epsilon() > 0</span>
 <a name="l00044"></a>00044   <span class="comment">//   tiny_ + epsilon() == epsilon()</span>
-<a name="l00045"></a>00045   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tiny_ = sqrt(numeric_limits<real>::min());
-<a name="l00046"></a>00046   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tol0_ = numeric_limits<real>::epsilon();
+<a name="l00045"></a>00045   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tiny_ = sqrt(numeric_limits<real>::min());
+<a name="l00046"></a>00046   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tol0_ = numeric_limits<real>::epsilon();
 <a name="l00047"></a>00047   <span class="comment">// Increase multiplier in defn of tol1_ from 100 to 200 to fix inverse case</span>
 <a name="l00048"></a>00048   <span class="comment">// 52.784459512564 0 -52.784459512563990912 179.634407464943777557</span>
 <a name="l00049"></a>00049   <span class="comment">// which otherwise failed for Visual Studio 10 (Release and Debug)</span>
-<a name="l00050"></a>00050   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tol1_ = 200 * tol0_;
-<a name="l00051"></a>00051   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tol2_ = sqrt(numeric_limits<real>::epsilon());
-<a name="l00052"></a>00052   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::xthresh_ = 1000 * tol2_;
+<a name="l00050"></a>00050   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tol1_ = 200 * tol0_;
+<a name="l00051"></a>00051   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tol2_ = sqrt(numeric_limits<real>::epsilon());
+<a name="l00052"></a>00052   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::xthresh_ = 1000 * tol2_;
 <a name="l00053"></a>00053 
 <a name="l00054"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a455300c36e6caa70968115416e1573a4">00054</a>   Geodesic::Geodesic(real a, real f)
 <a name="l00055"></a>00055     : _a(a)
@@ -112,1406 +127,1414 @@
 <a name="l00063"></a>00063            (_e2 == 0 ? 1 :
 <a name="l00064"></a>00064             (_e2 > 0 ? <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::atanh(sqrt(_e2)) : atan(sqrt(-_e2))) /
 <a name="l00065"></a>00065             sqrt(abs(_e2))))/2) <span class="comment">// authalic radius squared</span>
-<a name="l00066"></a>00066     , _etol2(tol2_ / max(real(0.1), sqrt(abs(_e2))))
-<a name="l00067"></a>00067   {
-<a name="l00068"></a>00068     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
-<a name="l00069"></a>00069       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00070"></a>00070     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_b) && _b > 0))
-<a name="l00071"></a>00071       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00072"></a>00072     A3coeff();
-<a name="l00073"></a>00073     C3coeff();
-<a name="l00074"></a>00074     C4coeff();
-<a name="l00075"></a>00075   }
-<a name="l00076"></a>00076 
-<a name="l00077"></a>00077   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>(Constants::WGS84_a<real>(),
-<a name="l00078"></a>00078                                  Constants::WGS84_f<real>());
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::SinCosSeries(<span class="keywordtype">bool</span> sinp,
-<a name="l00081"></a>00081                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx,
-<a name="l00082"></a>00082                                     <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() {
-<a name="l00083"></a>00083     <span class="comment">// Evaluate</span>
-<a name="l00084"></a>00084     <span class="comment">// y = sinp ? sum(c[i] * sin( 2*i    * x), i, 1, n) :</span>
-<a name="l00085"></a>00085     <span class="comment">//            sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :</span>
-<a name="l00086"></a>00086     <span class="comment">// using Clenshaw summation.  N.B. c[0] is unused for sin series</span>
-<a name="l00087"></a>00087     <span class="comment">// Approx operation count = (n + 5) mult and (2 * n + 2) add</span>
-<a name="l00088"></a>00088     c += (n + sinp);            <span class="comment">// Point to one beyond last element</span>
-<a name="l00089"></a>00089     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00090"></a>00090       ar = 2 * (cosx - sinx) * (cosx + sinx), <span class="comment">// 2 * cos(2 * x)</span>
-<a name="l00091"></a>00091       y0 = n & 1 ? *--c : 0, y1 = 0;          <span class="comment">// accumulators for sum</span>
-<a name="l00092"></a>00092     <span class="comment">// Now n is even</span>
-<a name="l00093"></a>00093     n /= 2;
-<a name="l00094"></a>00094     <span class="keywordflow">while</span> (n--) {
-<a name="l00095"></a>00095       <span class="comment">// Unroll loop x 2, so accumulators return to their original role</span>
-<a name="l00096"></a>00096       y1 = ar * y0 - y1 + *--c;
-<a name="l00097"></a>00097       y0 = ar * y1 - y0 + *--c;
-<a name="l00098"></a>00098     }
-<a name="l00099"></a>00099     <span class="keywordflow">return</span> sinp
-<a name="l00100"></a>00100       ? 2 * sinx * cosx * y0    <span class="comment">// sin(2 * x) * y0</span>
-<a name="l00101"></a>00101       : cosx * (y0 - y1);       <span class="comment">// cos(x) * (y0 - y1)</span>
-<a name="l00102"></a>00102   }
-<a name="l00103"></a>00103 
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">00104</a>   <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Geodesic::Line</a>(real lat1, real lon1, real azi1, <span class="keywordtype">unsigned</span> caps)
-<a name="l00105"></a>00105     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00106"></a>00106     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1, caps);
-<a name="l00107"></a>00107   }
-<a name="l00108"></a>00108 
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">00109</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">Geodesic::GenDirect</a>(real lat1, real lon1, real azi1,
-<a name="l00110"></a>00110                                  <span class="keywordtype">bool</span> arcmode, real s12_a12, <span class="keywordtype">unsigned</span> outmask,
-<a name="l00111"></a>00111                                  real& lat2, real& lon2, real& azi2,
-<a name="l00112"></a>00112                                  real& s12, real& m12, real& M12, real& M21,
-<a name="l00113"></a>00113                                  real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00114"></a>00114     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1,
-<a name="l00115"></a>00115                         <span class="comment">// Automatically supply DISTANCE_IN if necessary</span>
-<a name="l00116"></a>00116                         outmask | (arcmode ? NONE : DISTANCE_IN))
-<a name="l00117"></a>00117       .                         <span class="comment">// Note the dot!</span>
-<a name="l00118"></a>00118       GenPosition(arcmode, s12_a12, outmask,
-<a name="l00119"></a>00119                   lat2, lon2, azi2, s12, m12, M12, M21, S12);
-<a name="l00120"></a>00120   }
-<a name="l00121"></a>00121 
-<a name="l00122"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">00122</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">Geodesic::GenInverse</a>(real lat1, real lon1, real lat2, real lon2,
-<a name="l00123"></a>00123                                   <span class="keywordtype">unsigned</span> outmask,
-<a name="l00124"></a>00124                                   real& s12, real& azi1, real& azi2,
-<a name="l00125"></a>00125                                   real& m12, real& M12, real& M21, real& S12)
-<a name="l00126"></a>00126     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00127"></a>00127     outmask &= OUT_ALL;
-<a name="l00128"></a>00128     lon1 = AngNormalize(lon1);
-<a name="l00129"></a>00129     real lon12 = AngNormalize(AngNormalize(lon2) - lon1);
-<a name="l00130"></a>00130     <span class="comment">// If very close to being on the same meridian, then make it so.</span>
-<a name="l00131"></a>00131     <span class="comment">// Not sure this is necessary...</span>
-<a name="l00132"></a>00132     lon12 = AngRound(lon12);
-<a name="l00133"></a>00133     <span class="comment">// Make longitude difference positive.</span>
-<a name="l00134"></a>00134     <span class="keywordtype">int</span> lonsign = lon12 >= 0 ? 1 : -1;
-<a name="l00135"></a>00135     lon12 *= lonsign;
-<a name="l00136"></a>00136     <span class="keywordflow">if</span> (lon12 == 180)
-<a name="l00137"></a>00137       lonsign = 1;
-<a name="l00138"></a>00138     <span class="comment">// If really close to the equator, treat as on equator.</span>
-<a name="l00139"></a>00139     lat1 = AngRound(lat1);
-<a name="l00140"></a>00140     lat2 = AngRound(lat2);
-<a name="l00141"></a>00141     <span class="comment">// Swap points so that point with higher (abs) latitude is point 1</span>
-<a name="l00142"></a>00142     <span class="keywordtype">int</span> swapp = abs(lat1) >= abs(lat2) ? 1 : -1;
-<a name="l00143"></a>00143     <span class="keywordflow">if</span> (swapp < 0) {
-<a name="l00144"></a>00144       lonsign *= -1;
-<a name="l00145"></a>00145       swap(lat1, lat2);
-<a name="l00146"></a>00146     }
-<a name="l00147"></a>00147     <span class="comment">// Make lat1 <= 0</span>
-<a name="l00148"></a>00148     <span class="keywordtype">int</span> latsign = lat1 < 0 ? 1 : -1;
-<a name="l00149"></a>00149     lat1 *= latsign;
-<a name="l00150"></a>00150     lat2 *= latsign;
-<a name="l00151"></a>00151     <span class="comment">// Now we have</span>
-<a name="l00152"></a>00152     <span class="comment">//</span>
-<a name="l00153"></a>00153     <span class="comment">//     0 <= lon12 <= 180</span>
-<a name="l00154"></a>00154     <span class="comment">//     -90 <= lat1 <= 0</span>
-<a name="l00155"></a>00155     <span class="comment">//     lat1 <= lat2 <= -lat1</span>
-<a name="l00156"></a>00156     <span class="comment">//</span>
-<a name="l00157"></a>00157     <span class="comment">// longsign, swapp, latsign register the transformation to bring the</span>
-<a name="l00158"></a>00158     <span class="comment">// coordinates to this canonical form.  In all cases, 1 means no change was</span>
-<a name="l00159"></a>00159     <span class="comment">// made.  We make these transformations so that there are few cases to</span>
-<a name="l00160"></a>00160     <span class="comment">// check, e.g., on verifying quadrants in atan2.  In addition, this</span>
-<a name="l00161"></a>00161     <span class="comment">// enforces some symmetries in the results returned.</span>
-<a name="l00162"></a>00162 
-<a name="l00163"></a>00163     real phi, sbet1, cbet1, sbet2, cbet2, s12x, m12x;
-<a name="l00164"></a>00164 
-<a name="l00165"></a>00165     phi = lat1 * Math::degree<real>();
-<a name="l00166"></a>00166     <span class="comment">// Ensure cbet1 = +epsilon at poles</span>
-<a name="l00167"></a>00167     sbet1 = _f1 * sin(phi);
-<a name="l00168"></a>00168     cbet1 = lat1 == -90 ? tiny_ : cos(phi);
-<a name="l00169"></a>00169     SinCosNorm(sbet1, cbet1);
-<a name="l00170"></a>00170 
-<a name="l00171"></a>00171     phi = lat2 * Math::degree<real>();
-<a name="l00172"></a>00172     <span class="comment">// Ensure cbet2 = +epsilon at poles</span>
-<a name="l00173"></a>00173     sbet2 = _f1 * sin(phi);
-<a name="l00174"></a>00174     cbet2 = abs(lat2) == 90 ? tiny_ : cos(phi);
-<a name="l00175"></a>00175     SinCosNorm(sbet2, cbet2);
-<a name="l00176"></a>00176 
-<a name="l00177"></a>00177     <span class="comment">// If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the</span>
-<a name="l00178"></a>00178     <span class="comment">// |bet1| - |bet2|.  Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1 is</span>
-<a name="l00179"></a>00179     <span class="comment">// a better measure.  This logic is used in assigning calp2 in Lambda12.</span>
-<a name="l00180"></a>00180     <span class="comment">// Sometimes these quantities vanish and in that case we force bet2 = +/-</span>
-<a name="l00181"></a>00181     <span class="comment">// bet1 exactly.  An example where is is necessary is the inverse problem</span>
-<a name="l00182"></a>00182     <span class="comment">// 48.522876735459 0 -48.52287673545898293 179.599720456223079643</span>
-<a name="l00183"></a>00183     <span class="comment">// which failed with Visual Studio 10 (Release and Debug)</span>
-<a name="l00184"></a>00184 
-<a name="l00185"></a>00185     <span class="keywordflow">if</span> (cbet1 < -sbet1) {
-<a name="l00186"></a>00186       <span class="keywordflow">if</span> (cbet2 == cbet1)
-<a name="l00187"></a>00187         sbet2 = sbet2 < 0 ? sbet1 : -sbet1;
-<a name="l00188"></a>00188     } <span class="keywordflow">else</span> {
-<a name="l00189"></a>00189       <span class="keywordflow">if</span> (abs(sbet2) == -sbet1)
-<a name="l00190"></a>00190         cbet2 = cbet1;
-<a name="l00191"></a>00191     }
-<a name="l00192"></a>00192 
-<a name="l00193"></a>00193     real
-<a name="l00194"></a>00194       lam12 = lon12 * Math::degree<real>(),
-<a name="l00195"></a>00195       slam12 = lon12 == 180 ? 0 : sin(lam12),
-<a name="l00196"></a>00196       clam12 = cos(lam12);      <span class="comment">// lon12 == 90 isn't interesting</span>
-<a name="l00197"></a>00197 
-<a name="l00198"></a>00198     real a12, sig12, calp1, salp1, calp2, salp2;
-<a name="l00199"></a>00199     <span class="comment">// index zero elements of these arrays are unused</span>
-<a name="l00200"></a>00200     real C1a[nC1_ + 1], C2a[nC2_ + 1], C3a[nC3_];
-<a name="l00201"></a>00201 
-<a name="l00202"></a>00202     <span class="keywordtype">bool</span> meridian = lat1 == -90 || slam12 == 0;
-<a name="l00203"></a>00203 
-<a name="l00204"></a>00204     <span class="keywordflow">if</span> (meridian) {
-<a name="l00205"></a>00205 
-<a name="l00206"></a>00206       <span class="comment">// Endpoints are on a single full meridian, so the geodesic might lie on</span>
-<a name="l00207"></a>00207       <span class="comment">// a meridian.</span>
-<a name="l00208"></a>00208 
-<a name="l00209"></a>00209       calp1 = clam12; salp1 = slam12; <span class="comment">// Head to the target longitude</span>
-<a name="l00210"></a>00210       calp2 = 1; salp2 = 0;           <span class="comment">// At the target we're heading north</span>
-<a name="l00211"></a>00211 
-<a name="l00212"></a>00212       real
-<a name="l00213"></a>00213         <span class="comment">// tan(bet) = tan(sig) * cos(alp)</span>
-<a name="l00214"></a>00214         ssig1 = sbet1, csig1 = calp1 * cbet1,
-<a name="l00215"></a>00215         ssig2 = sbet2, csig2 = calp2 * cbet2;
-<a name="l00216"></a>00216 
-<a name="l00217"></a>00217       <span class="comment">// sig12 = sig2 - sig1</span>
-<a name="l00218"></a>00218       sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
-<a name="l00219"></a>00219                     csig1 * csig2 + ssig1 * ssig2);
-<a name="l00220"></a>00220       {
-<a name="l00221"></a>00221         real dummy;
-<a name="l00222"></a>00222         Lengths(_n, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00223"></a>00223                 cbet1, cbet2, s12x, m12x, dummy,
-<a name="l00224"></a>00224                 (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
-<a name="l00225"></a>00225       }
-<a name="l00226"></a>00226       <span class="comment">// Add the check for sig12 since zero length geodesics might yield m12 <</span>
-<a name="l00227"></a>00227       <span class="comment">// 0.  Test case was</span>
-<a name="l00228"></a>00228       <span class="comment">//</span>
-<a name="l00229"></a>00229       <span class="comment">//    echo 20.001 0 20.001 0 | Geod -i</span>
-<a name="l00230"></a>00230       <span class="comment">//</span>
-<a name="l00231"></a>00231       <span class="comment">// In fact, we will have sig12 > pi/2 for meridional geodesic which is</span>
-<a name="l00232"></a>00232       <span class="comment">// not a shortest path.</span>
-<a name="l00233"></a>00233       <span class="keywordflow">if</span> (sig12 < 1 || m12x >= 0) {
-<a name="l00234"></a>00234         m12x *= _a;
-<a name="l00235"></a>00235         s12x *= _b;
-<a name="l00236"></a>00236         a12 = sig12 / Math::degree<real>();
-<a name="l00237"></a>00237       } <span class="keywordflow">else</span>
-<a name="l00238"></a>00238         <span class="comment">// m12 < 0, i.e., prolate and too close to anti-podal</span>
-<a name="l00239"></a>00239         meridian = <span class="keyword">false</span>;
-<a name="l00240"></a>00240     }
-<a name="l00241"></a>00241 
-<a name="l00242"></a>00242     real omg12;
-<a name="l00243"></a>00243     <span class="keywordflow">if</span> (!meridian &&
-<a name="l00244"></a>00244         sbet1 == 0 &&   <span class="comment">// and sbet2 == 0</span>
-<a name="l00245"></a>00245         <span class="comment">// Mimic the way Lambda12 works with calp1 = 0</span>
-<a name="l00246"></a>00246         (_f <= 0 || lam12 <= Math::pi<real>() - _f * Math::pi<real>())) {
-<a name="l00247"></a>00247 
-<a name="l00248"></a>00248       <span class="comment">// Geodesic runs along equator</span>
-<a name="l00249"></a>00249       calp1 = calp2 = 0; salp1 = salp2 = 1;
-<a name="l00250"></a>00250       s12x = _a * lam12;
-<a name="l00251"></a>00251       m12x = _b * sin(lam12 / _f1);
-<a name="l00252"></a>00252       <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00253"></a>00253         M12 = M21 = cos(lam12 / _f1);
-<a name="l00254"></a>00254       a12 = lon12 / _f1;
-<a name="l00255"></a>00255       sig12 = omg12 = lam12 / _f1;
-<a name="l00256"></a>00256 
-<a name="l00257"></a>00257     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!meridian) {
-<a name="l00258"></a>00258 
-<a name="l00259"></a>00259       <span class="comment">// Now point1 and point2 belong within a hemisphere bounded by a</span>
-<a name="l00260"></a>00260       <span class="comment">// meridian and geodesic is neither meridional or equatorial.</span>
-<a name="l00261"></a>00261 
-<a name="l00262"></a>00262       <span class="comment">// Figure a starting point for Newton's method</span>
-<a name="l00263"></a>00263       sig12 = InverseStart(sbet1, cbet1, sbet2, cbet2,
-<a name="l00264"></a>00264                            lam12,
-<a name="l00265"></a>00265                            salp1, calp1, salp2, calp2,
-<a name="l00266"></a>00266                            C1a, C2a);
-<a name="l00267"></a>00267 
-<a name="l00268"></a>00268       <span class="keywordflow">if</span> (sig12 >= 0) {
-<a name="l00269"></a>00269         <span class="comment">// Short lines (InverseStart sets salp2, calp2)</span>
-<a name="l00270"></a>00270         real w1 = sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1));
-<a name="l00271"></a>00271         s12x = sig12 * _a * w1;
-<a name="l00272"></a>00272         m12x = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(w1) * _a / _f1 * sin(sig12 * _f1 / w1);
-<a name="l00273"></a>00273         <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00274"></a>00274           M12 = M21 = cos(sig12 * _f1 / w1);
-<a name="l00275"></a>00275         a12 = sig12 / Math::degree<real>();
-<a name="l00276"></a>00276         omg12 = lam12 / w1;
-<a name="l00277"></a>00277       } <span class="keywordflow">else</span> {
-<a name="l00278"></a>00278 
-<a name="l00279"></a>00279         <span class="comment">// Newton's method</span>
-<a name="l00280"></a>00280         real ssig1, csig1, ssig2, csig2, eps;
-<a name="l00281"></a>00281         real ov = 0;
-<a name="l00282"></a>00282         <span class="keywordtype">unsigned</span> numit = 0;
-<a name="l00283"></a>00283         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> trip = 0; numit < maxit_; ++numit) {
-<a name="l00284"></a>00284           real dv;
-<a name="l00285"></a>00285           real v = Lambda12(sbet1, cbet1, sbet2, cbet2, salp1, calp1,
-<a name="l00286"></a>00286                             salp2, calp2, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00287"></a>00287                             eps, omg12, trip < 1, dv, C1a, C2a, C3a) - lam12;
-<a name="l00288"></a>00288           <span class="keywordflow">if</span> (!(abs(v) > tiny_) || !(trip < 1)) {
-<a name="l00289"></a>00289             <span class="keywordflow">if</span> (!(abs(v) <= max(tol1_, ov)))
-<a name="l00290"></a>00290               numit = maxit_;
-<a name="l00291"></a>00291             <span class="keywordflow">break</span>;
-<a name="l00292"></a>00292           }
-<a name="l00293"></a>00293           real
-<a name="l00294"></a>00294             dalp1 = -v/dv;
-<a name="l00295"></a>00295           real
-<a name="l00296"></a>00296             sdalp1 = sin(dalp1), cdalp1 = cos(dalp1),
-<a name="l00297"></a>00297             nsalp1 = salp1 * cdalp1 + calp1 * sdalp1;
-<a name="l00298"></a>00298           calp1 = calp1 * cdalp1 - salp1 * sdalp1;
-<a name="l00299"></a>00299           salp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), nsalp1);
-<a name="l00300"></a>00300           SinCosNorm(salp1, calp1);
-<a name="l00301"></a>00301           <span class="comment">// In some regimes we don't get quadratic convergence because slope</span>
-<a name="l00302"></a>00302           <span class="comment">// -> 0.  So use convergence conditions based on epsilon instead of</span>
-<a name="l00303"></a>00303           <span class="comment">// sqrt(epsilon).  The first criterion is a test on abs(v) against</span>
-<a name="l00304"></a>00304           <span class="comment">// 100 * epsilon.  The second takes credit for an anticipated</span>
-<a name="l00305"></a>00305           <span class="comment">// reduction in abs(v) by v/ov (due to the latest update in alp1) and</span>
-<a name="l00306"></a>00306           <span class="comment">// checks this against epsilon.</span>
-<a name="l00307"></a>00307           <span class="keywordflow">if</span> (!(abs(v) >= tol1_ && <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(v) >= ov * tol0_)) ++trip;
-<a name="l00308"></a>00308           ov = abs(v);
-<a name="l00309"></a>00309         }
-<a name="l00310"></a>00310 
-<a name="l00311"></a>00311         <span class="keywordflow">if</span> (numit >= maxit_) {
-<a name="l00312"></a>00312           <span class="comment">// Signal failure.</span>
-<a name="l00313"></a>00313           <span class="keywordflow">if</span> (outmask & DISTANCE)
-<a name="l00314"></a>00314             s12 = Math::NaN<real>();
-<a name="l00315"></a>00315           <span class="keywordflow">if</span> (outmask & AZIMUTH)
-<a name="l00316"></a>00316             azi1 = azi2 = Math::NaN<real>();
-<a name="l00317"></a>00317           <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
-<a name="l00318"></a>00318             m12 = Math::NaN<real>();
-<a name="l00319"></a>00319           <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00320"></a>00320             M12 = M21 = Math::NaN<real>();
-<a name="l00321"></a>00321           <span class="keywordflow">if</span> (outmask & AREA)
-<a name="l00322"></a>00322             S12 = Math::NaN<real>();
-<a name="l00323"></a>00323           <span class="keywordflow">return</span> Math::NaN<real>();
-<a name="l00324"></a>00324         }
-<a name="l00325"></a>00325 
-<a name="l00326"></a>00326         {
-<a name="l00327"></a>00327           real dummy;
-<a name="l00328"></a>00328           Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00329"></a>00329                   cbet1, cbet2, s12x, m12x, dummy,
-<a name="l00330"></a>00330                   (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
-<a name="l00331"></a>00331         }
-<a name="l00332"></a>00332         m12x *= _a;
-<a name="l00333"></a>00333         s12x *= _b;
-<a name="l00334"></a>00334         a12 = sig12 / Math::degree<real>();
-<a name="l00335"></a>00335         omg12 = lam12 - omg12;
-<a name="l00336"></a>00336       }
-<a name="l00337"></a>00337     }
-<a name="l00338"></a>00338 
-<a name="l00339"></a>00339     <span class="keywordflow">if</span> (outmask & DISTANCE)
-<a name="l00340"></a>00340       s12 = 0 + s12x;           <span class="comment">// Convert -0 to 0</span>
-<a name="l00341"></a>00341 
-<a name="l00342"></a>00342     <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
-<a name="l00343"></a>00343       m12 = 0 + m12x;           <span class="comment">// Convert -0 to 0</span>
-<a name="l00344"></a>00344 
-<a name="l00345"></a>00345     <span class="keywordflow">if</span> (outmask & AREA) {
-<a name="l00346"></a>00346       real
-<a name="l00347"></a>00347         <span class="comment">// From Lambda12: sin(alp1) * cos(bet1) = sin(alp0)</span>
-<a name="l00348"></a>00348         salp0 = salp1 * cbet1,
-<a name="l00349"></a>00349         calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
-<a name="l00350"></a>00350       real alp12;
-<a name="l00351"></a>00351       <span class="keywordflow">if</span> (calp0 != 0 && salp0 != 0) {
-<a name="l00352"></a>00352         real
-<a name="l00353"></a>00353           <span class="comment">// From Lambda12: tan(bet) = tan(sig) * cos(alp)</span>
-<a name="l00354"></a>00354           ssig1 = sbet1, csig1 = calp1 * cbet1,
-<a name="l00355"></a>00355           ssig2 = sbet2, csig2 = calp2 * cbet2,
-<a name="l00356"></a>00356           k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp0) * _ep2,
-<a name="l00357"></a>00357           <span class="comment">// Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).</span>
-<a name="l00358"></a>00358           A4 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_a) * calp0 * salp0 * _e2;
-<a name="l00359"></a>00359         SinCosNorm(ssig1, csig1);
-<a name="l00360"></a>00360         SinCosNorm(ssig2, csig2);
-<a name="l00361"></a>00361         real C4a[nC4_];
-<a name="l00362"></a>00362         C4f(k2, C4a);
-<a name="l00363"></a>00363         real
-<a name="l00364"></a>00364           B41 = SinCosSeries(<span class="keyword">false</span>, ssig1, csig1, C4a, nC4_),
-<a name="l00365"></a>00365           B42 = SinCosSeries(<span class="keyword">false</span>, ssig2, csig2, C4a, nC4_);
-<a name="l00366"></a>00366         S12 = A4 * (B42 - B41);
-<a name="l00367"></a>00367       } <span class="keywordflow">else</span>
-<a name="l00368"></a>00368         <span class="comment">// Avoid problems with indeterminate sig1, sig2 on equator</span>
-<a name="l00369"></a>00369         S12 = 0;
-<a name="l00370"></a>00370 
-<a name="l00371"></a>00371       <span class="keywordflow">if</span> (!meridian &&
-<a name="l00372"></a>00372           omg12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * Math::pi<real>() && <span class="comment">// Long difference too big</span>
-<a name="l00373"></a>00373           sbet2 - sbet1 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1.75)) {            <span class="comment">// Lat difference too big</span>
-<a name="l00374"></a>00374         <span class="comment">// Use tan(Gamma/2) = tan(omg12/2)</span>
-<a name="l00375"></a>00375         <span class="comment">// * (tan(bet1/2)+tan(bet2/2))/(1+tan(bet1/2)*tan(bet2/2))</span>
-<a name="l00376"></a>00376         <span class="comment">// with tan(x/2) = sin(x)/(1+cos(x))</span>
-<a name="l00377"></a>00377         real
-<a name="l00378"></a>00378           somg12 = sin(omg12), domg12 = 1 + cos(omg12),
-<a name="l00379"></a>00379           dbet1 = 1 + cbet1, dbet2 = 1 + cbet2;
-<a name="l00380"></a>00380         alp12 = 2 * atan2( somg12 * ( sbet1 * dbet2 + sbet2 * dbet1 ),
-<a name="l00381"></a>00381                            domg12 * ( sbet1 * sbet2 + dbet1 * dbet2 ) );
-<a name="l00382"></a>00382       } <span class="keywordflow">else</span> {
-<a name="l00383"></a>00383         <span class="comment">// alp12 = alp2 - alp1, used in atan2 so no need to normalize</span>
-<a name="l00384"></a>00384         real
-<a name="l00385"></a>00385           salp12 = salp2 * calp1 - calp2 * salp1,
-<a name="l00386"></a>00386           calp12 = calp2 * calp1 + salp2 * salp1;
-<a name="l00387"></a>00387         <span class="comment">// The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz</span>
-<a name="l00388"></a>00388         <span class="comment">// salp12 = -0 and alp12 = -180.  However this depends on the sign</span>
-<a name="l00389"></a>00389         <span class="comment">// being attached to 0 correctly.  The following ensures the correct</span>
-<a name="l00390"></a>00390         <span class="comment">// behavior.</span>
-<a name="l00391"></a>00391         <span class="keywordflow">if</span> (salp12 == 0 && calp12 < 0) {
-<a name="l00392"></a>00392           salp12 = tiny_ * calp1;
-<a name="l00393"></a>00393           calp12 = -1;
-<a name="l00394"></a>00394         }
-<a name="l00395"></a>00395         alp12 = atan2(salp12, calp12);
-<a name="l00396"></a>00396       }
-<a name="l00397"></a>00397       S12 += _c2 * alp12;
-<a name="l00398"></a>00398       S12 *= swapp * lonsign * latsign;
-<a name="l00399"></a>00399       <span class="comment">// Convert -0 to 0</span>
-<a name="l00400"></a>00400       S12 += 0;
-<a name="l00401"></a>00401     }
-<a name="l00402"></a>00402 
-<a name="l00403"></a>00403     <span class="comment">// Convert calp, salp to azimuth accounting for lonsign, swapp, latsign.</span>
-<a name="l00404"></a>00404     <span class="keywordflow">if</span> (swapp < 0) {
-<a name="l00405"></a>00405       swap(salp1, salp2);
-<a name="l00406"></a>00406       swap(calp1, calp2);
-<a name="l00407"></a>00407       <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00408"></a>00408         swap(M12, M21);
-<a name="l00409"></a>00409     }
-<a name="l00410"></a>00410 
-<a name="l00411"></a>00411     salp1 *= swapp * lonsign; calp1 *= swapp * latsign;
-<a name="l00412"></a>00412     salp2 *= swapp * lonsign; calp2 *= swapp * latsign;
-<a name="l00413"></a>00413 
-<a name="l00414"></a>00414     <span class="keywordflow">if</span> (outmask & AZIMUTH) {
-<a name="l00415"></a>00415       <span class="comment">// minus signs give range [-180, 180). 0- converts -0 to +0.</span>
-<a name="l00416"></a>00416       azi1 = 0 - atan2(-salp1, calp1) / Math::degree<real>();
-<a name="l00417"></a>00417       azi2 = 0 - atan2(-salp2, calp2) / Math::degree<real>();
-<a name="l00418"></a>00418     }
-<a name="l00419"></a>00419 
-<a name="l00420"></a>00420     <span class="comment">// Returned value in [0, 180]</span>
-<a name="l00421"></a>00421     <span class="keywordflow">return</span> a12;
-<a name="l00422"></a>00422   }
-<a name="l00423"></a>00423 
-<a name="l00424"></a>00424   <span class="keywordtype">void</span> Geodesic::Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
-<a name="l00425"></a>00425                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
-<a name="l00426"></a>00426                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00427"></a>00427                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12b, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
-<a name="l00428"></a>00428                          <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00429"></a>00429                          <span class="comment">// Scratch areas of the right size</span>
-<a name="l00430"></a>00430                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00431"></a>00431     <span class="comment">// Return m12a = (reduced length)/_a; also calculate s12b = distance/_b,</span>
-<a name="l00432"></a>00432     <span class="comment">// and m0 = coefficient of secular term in expression for reduced length.</span>
-<a name="l00433"></a>00433     C1f(eps, C1a);
-<a name="l00434"></a>00434     C2f(eps, C2a);
-<a name="l00435"></a>00435     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00436"></a>00436       A1m1 = A1m1f(eps),
-<a name="l00437"></a>00437       AB1 = (1 + A1m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C1a, nC1_) -
-<a name="l00438"></a>00438                           SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C1a, nC1_)),
-<a name="l00439"></a>00439       A2m1 = A2m1f(eps),
-<a name="l00440"></a>00440       AB2 = (1 + A2m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C2a, nC2_) -
-<a name="l00441"></a>00441                           SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C2a, nC2_)),
-<a name="l00442"></a>00442       cbet1sq = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1),
-<a name="l00443"></a>00443       cbet2sq = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet2),
-<a name="l00444"></a>00444       w1 = sqrt(1 - _e2 * cbet1sq),
-<a name="l00445"></a>00445       w2 = sqrt(1 - _e2 * cbet2sq),
-<a name="l00446"></a>00446       <span class="comment">// Make sure it's OK to have repeated dummy arguments</span>
-<a name="l00447"></a>00447       m0x = A1m1 - A2m1,
-<a name="l00448"></a>00448       J12 = m0x * sig12 + (AB1 - AB2);
-<a name="l00449"></a>00449     m0 = m0x;
-<a name="l00450"></a>00450     <span class="comment">// Missing a factor of _a.</span>
-<a name="l00451"></a>00451     <span class="comment">// Add parens around (csig1 * ssig2) and (ssig1 * csig2) to ensure accurate</span>
-<a name="l00452"></a>00452     <span class="comment">// cancellation in the case of coincident points.</span>
-<a name="l00453"></a>00453     m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
-<a name="l00454"></a>00454       - _f1 * csig1 * csig2 * J12;
-<a name="l00455"></a>00455     <span class="comment">// Missing a factor of _b</span>
-<a name="l00456"></a>00456     s12b =  (1 + A1m1) * sig12 + AB1;
-<a name="l00457"></a>00457     <span class="keywordflow">if</span> (scalep) {
-<a name="l00458"></a>00458       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig12 = csig1 * csig2 + ssig1 * ssig2;
-<a name="l00459"></a>00459       J12 *= _f1;
-<a name="l00460"></a>00460       M12 = csig12 + (_e2 * (cbet1sq - cbet2sq) * ssig2 / (w1 + w2)
-<a name="l00461"></a>00461                       - csig2 * J12) * ssig1 / w1;
-<a name="l00462"></a>00462       M21 = csig12 - (_e2 * (cbet1sq - cbet2sq) * ssig1 / (w1 + w2)
-<a name="l00463"></a>00463                       - csig1 * J12) * ssig2 / w2;
-<a name="l00464"></a>00464     }
-<a name="l00465"></a>00465   }
-<a name="l00466"></a>00466 
-<a name="l00467"></a>00467   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
-<a name="l00468"></a>00468     <span class="comment">// Solve k^4+2*k^3-(x^2+y^2-1)*k^2-2*y^2*k-y^2 = 0 for positive root k.</span>
-<a name="l00469"></a>00469     <span class="comment">// This solution is adapted from Geocentric::Reverse.</span>
-<a name="l00470"></a>00470     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k;
-<a name="l00471"></a>00471     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00472"></a>00472       p = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(x),
-<a name="l00473"></a>00473       q = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(y),
-<a name="l00474"></a>00474       r = (p + q - 1) / 6;
-<a name="l00475"></a>00475     <span class="keywordflow">if</span> ( !(q == 0 && r <= 0) ) {
-<a name="l00476"></a>00476       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00477"></a>00477         <span class="comment">// Avoid possible division by zero when r = 0 by multiplying equations</span>
-<a name="l00478"></a>00478         <span class="comment">// for s and t by r^3 and r, resp.</span>
-<a name="l00479"></a>00479         S = p * q / 4,            <span class="comment">// S = r^3 * s</span>
-<a name="l00480"></a>00480         r2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(r),
-<a name="l00481"></a>00481         r3 = r * r2,
-<a name="l00482"></a>00482         <span class="comment">// The discrimant of the quadratic equation for T3.  This is zero on</span>
-<a name="l00483"></a>00483         <span class="comment">// the evolute curve p^(1/3)+q^(1/3) = 1</span>
-<a name="l00484"></a>00484         disc =  S * (S + 2 * r3);
-<a name="l00485"></a>00485       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u = r;
-<a name="l00486"></a>00486       <span class="keywordflow">if</span> (disc >= 0) {
-<a name="l00487"></a>00487         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T3 = S + r3;
-<a name="l00488"></a>00488         <span class="comment">// Pick the sign on the sqrt to maximize abs(T3).  This minimizes loss</span>
-<a name="l00489"></a>00489         <span class="comment">// of precision due to cancellation.  The result is unchanged because</span>
-<a name="l00490"></a>00490         <span class="comment">// of the way the T is used in definition of u.</span>
-<a name="l00491"></a>00491         T3 += T3 < 0 ? -sqrt(disc) : sqrt(disc); <span class="comment">// T3 = (r * t)^3</span>
-<a name="l00492"></a>00492         <span class="comment">// N.B. cbrt always returns the real root.  cbrt(-8) = -2.</span>
-<a name="l00493"></a>00493         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
-<a name="l00494"></a>00494         <span class="comment">// T can be zero; but then r2 / T -> 0.</span>
-<a name="l00495"></a>00495         u += T + (T != 0 ? r2 / T : 0);
-<a name="l00496"></a>00496       } <span class="keywordflow">else</span> {
-<a name="l00497"></a>00497         <span class="comment">// T is complex, but the way u is defined the result is real.</span>
-<a name="l00498"></a>00498         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ang = atan2(sqrt(-disc), -(S + r3));
-<a name="l00499"></a>00499         <span class="comment">// There are three possible cube roots.  We choose the root which</span>
-<a name="l00500"></a>00500         <span class="comment">// avoids cancellation.  Note that disc < 0 implies that r < 0.</span>
-<a name="l00501"></a>00501         u += 2 * r * cos(ang / 3);
-<a name="l00502"></a>00502       }
-<a name="l00503"></a>00503       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00504"></a>00504         v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(u) + q),    <span class="comment">// guaranteed positive</span>
-<a name="l00505"></a>00505         <span class="comment">// Avoid loss of accuracy when u < 0.</span>
-<a name="l00506"></a>00506         uv = u < 0 ? q / (v - u) : u + v, <span class="comment">// u+v, guaranteed positive</span>
-<a name="l00507"></a>00507         w = (uv - q) / (2 * v);           <span class="comment">// positive?</span>
-<a name="l00508"></a>00508       <span class="comment">// Rearrange expression for k to avoid loss of accuracy due to</span>
-<a name="l00509"></a>00509       <span class="comment">// subtraction.  Division by 0 not possible because uv > 0, w >= 0.</span>
-<a name="l00510"></a>00510       k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(w)) + w);   <span class="comment">// guaranteed positive</span>
-<a name="l00511"></a>00511     } <span class="keywordflow">else</span> {               <span class="comment">// q == 0 && r <= 0</span>
-<a name="l00512"></a>00512       <span class="comment">// y = 0 with |x| <= 1.  Handle this case directly.</span>
-<a name="l00513"></a>00513       <span class="comment">// for y small, positive root is k = abs(y)/sqrt(1-x^2)</span>
-<a name="l00514"></a>00514       k = 0;
-<a name="l00515"></a>00515     }
-<a name="l00516"></a>00516     <span class="keywordflow">return</span> k;
-<a name="l00517"></a>00517   }
-<a name="l00518"></a>00518 
-<a name="l00519"></a>00519   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1,
-<a name="l00520"></a>00520                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00521"></a>00521                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
-<a name="l00522"></a>00522                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
-<a name="l00523"></a>00523                                     <span class="comment">// Only updated if return val >= 0</span>
-<a name="l00524"></a>00524                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
-<a name="l00525"></a>00525                                     <span class="comment">// Scratch areas of the right size</span>
-<a name="l00526"></a>00526                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00527"></a>00527     <span class="comment">// Return a starting point for Newton's method in salp1 and calp1 (function</span>
-<a name="l00528"></a>00528     <span class="comment">// value is -1).  If Newton's method doesn't need to be used, return also</span>
-<a name="l00529"></a>00529     <span class="comment">// salp2 and calp2 and function value is sig12.</span>
-<a name="l00530"></a>00530     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00531"></a>00531       sig12 = -1,               <span class="comment">// Return value</span>
-<a name="l00532"></a>00532       <span class="comment">// bet12 = bet2 - bet1 in [0, pi); bet12a = bet2 + bet1 in (-pi, 0]</span>
-<a name="l00533"></a>00533       sbet12 = sbet2 * cbet1 - cbet2 * sbet1,
-<a name="l00534"></a>00534       cbet12 = cbet2 * cbet1 + sbet2 * sbet1;
-<a name="l00535"></a>00535 <span class="preprocessor">#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6</span>
-<a name="l00536"></a>00536 <span class="preprocessor"></span>    <span class="comment">// Volatile declaration needed to fix inverse cases</span>
-<a name="l00537"></a>00537     <span class="comment">// 88.202499451857 0 -88.202499451857 179.981022032992859592</span>
-<a name="l00538"></a>00538     <span class="comment">// 89.262080389218 0 -89.262080389218 179.992207982775375662</span>
-<a name="l00539"></a>00539     <span class="comment">// 89.333123580033 0 -89.333123580032997687 179.99295812360148422</span>
-<a name="l00540"></a>00540     <span class="comment">// which otherwise fail with g++ 4.4.4 x86 -O3 (Linux)</span>
-<a name="l00541"></a>00541     <span class="comment">// and g++ 4.4.0 (mingw).</span>
-<a name="l00542"></a>00542     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a;
-<a name="l00543"></a>00543     {
-<a name="l00544"></a>00544       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx1 = sbet2 * cbet1;
-<a name="l00545"></a>00545       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx2 = cbet2 * sbet1;
-<a name="l00546"></a>00546       sbet12a = xx1 + xx2;
-<a name="l00547"></a>00547     }
-<a name="l00548"></a>00548 <span class="preprocessor">#else</span>
-<a name="l00549"></a>00549 <span class="preprocessor"></span>    <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a = sbet2 * cbet1 + cbet2 * sbet1;
-<a name="l00550"></a>00550 <span class="preprocessor">#endif</span>
-<a name="l00551"></a>00551 <span class="preprocessor"></span>    <span class="keywordtype">bool</span> shortline = cbet12 >= 0 && sbet12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5) &&
-<a name="l00552"></a>00552       lam12 <= Math::pi<real>() / 6;
-<a name="l00553"></a>00553     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00554"></a>00554       omg12 = shortline ? lam12 / sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1)) : lam12,
-<a name="l00555"></a>00555       somg12 = sin(omg12), comg12 = cos(omg12);
-<a name="l00556"></a>00556 
-<a name="l00557"></a>00557     salp1 = cbet2 * somg12;
-<a name="l00558"></a>00558     calp1 = comg12 >= 0 ?
-<a name="l00559"></a>00559       sbet12 + cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 + comg12) :
-<a name="l00560"></a>00560       sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 - comg12);
-<a name="l00561"></a>00561 
-<a name="l00562"></a>00562     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00563"></a>00563       ssig12 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(salp1, calp1),
-<a name="l00564"></a>00564       csig12 = sbet1 * sbet2 + cbet1 * cbet2 * comg12;
-<a name="l00565"></a>00565 
-<a name="l00566"></a>00566     <span class="keywordflow">if</span> (shortline && ssig12 < _etol2) {
-<a name="l00567"></a>00567       <span class="comment">// really short lines</span>
-<a name="l00568"></a>00568       salp2 = cbet1 * somg12;
-<a name="l00569"></a>00569       calp2 = sbet12 - cbet1 * sbet2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 + comg12);
-<a name="l00570"></a>00570       SinCosNorm(salp2, calp2);
-<a name="l00571"></a>00571       <span class="comment">// Set return value</span>
-<a name="l00572"></a>00572       sig12 = atan2(ssig12, csig12);
-<a name="l00573"></a>00573     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (csig12 >= 0 ||
-<a name="l00574"></a>00574                ssig12 >= 3 * abs(_f) * Math::pi<real>() * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1)) {
-<a name="l00575"></a>00575       <span class="comment">// Nothing to do, zeroth order spherical approximation is OK</span>
-<a name="l00576"></a>00576     } <span class="keywordflow">else</span> {
-<a name="l00577"></a>00577       <span class="comment">// Scale lam12 and bet2 to x, y coordinate system where antipodal point</span>
-<a name="l00578"></a>00578       <span class="comment">// is at origin and singular point is at y = 0, x = -1.</span>
-<a name="l00579"></a>00579       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, lamscale, betscale;
-<a name="l00580"></a>00580       <span class="comment">// Volatile declaration needed to fix inverse case</span>
-<a name="l00581"></a>00581       <span class="comment">// 56.320923501171 0 -56.320923501171 179.664747671772880215</span>
-<a name="l00582"></a>00582       <span class="comment">// which otherwise fails with g++ 4.4.4 x86 -O3</span>
-<a name="l00583"></a>00583       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x;
-<a name="l00584"></a>00584       <span class="keywordflow">if</span> (_f >= 0) {            <span class="comment">// In fact f == 0 does not get here</span>
-<a name="l00585"></a>00585         <span class="comment">// x = dlong, y = dlat</span>
-<a name="l00586"></a>00586         {
-<a name="l00587"></a>00587           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00588"></a>00588             k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sbet1) * _ep2,
-<a name="l00589"></a>00589             eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
-<a name="l00590"></a>00590           lamscale = _f * cbet1 * A3f(eps) * Math::pi<real>();
-<a name="l00591"></a>00591         }
-<a name="l00592"></a>00592         betscale = lamscale * cbet1;
-<a name="l00593"></a>00593 
-<a name="l00594"></a>00594         x = (lam12 - Math::pi<real>()) / lamscale;
-<a name="l00595"></a>00595         y = sbet12a / betscale;
-<a name="l00596"></a>00596       } <span class="keywordflow">else</span> {                  <span class="comment">// _f < 0</span>
-<a name="l00597"></a>00597         <span class="comment">// x = dlat, y = dlong</span>
-<a name="l00598"></a>00598         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00599"></a>00599           cbet12a = cbet2 * cbet1 - sbet2 * sbet1,
-<a name="l00600"></a>00600           bet12a = atan2(sbet12a, cbet12a);
-<a name="l00601"></a>00601         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> m12a, m0, dummy;
-<a name="l00602"></a>00602         <span class="comment">// In the case of lon12 = 180, this repeats a calculation made in</span>
-<a name="l00603"></a>00603         <span class="comment">// Inverse.</span>
-<a name="l00604"></a>00604         Lengths(_n, Math::pi<real>() + bet12a, sbet1, -cbet1, sbet2, cbet2,
-<a name="l00605"></a>00605                 cbet1, cbet2, dummy, m12a, m0, <span class="keyword">false</span>,
-<a name="l00606"></a>00606                 dummy, dummy, C1a, C2a);
-<a name="l00607"></a>00607         x = -1 + m12a/(_f1 * cbet1 * cbet2 * m0 * Math::pi<real>());
-<a name="l00608"></a>00608         betscale = x < -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) ? sbet12a / x :
-<a name="l00609"></a>00609           -_f * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1) * Math::pi<real>();
-<a name="l00610"></a>00610         lamscale = betscale / cbet1;
-<a name="l00611"></a>00611         y = (lam12 - Math::pi<real>()) / lamscale;
-<a name="l00612"></a>00612       }
-<a name="l00613"></a>00613 
-<a name="l00614"></a>00614       <span class="keywordflow">if</span> (y > -tol1_ && x >  -1 - xthresh_) {
-<a name="l00615"></a>00615         <span class="comment">// strip near cut</span>
-<a name="l00616"></a>00616         <span class="keywordflow">if</span> (_f >= 0) {
-<a name="l00617"></a>00617           salp1 = min(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x)); calp1 = - sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(salp1));
-<a name="l00618"></a>00618         } <span class="keywordflow">else</span> {
-<a name="l00619"></a>00619           calp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x > -tol1_ ? 0 : -1),  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x));
-<a name="l00620"></a>00620           salp1 = sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp1));
-<a name="l00621"></a>00621         }
-<a name="l00622"></a>00622       } <span class="keywordflow">else</span> {
-<a name="l00623"></a>00623         <span class="comment">// Estimate alp1, by solving the astroid problem.</span>
-<a name="l00624"></a>00624         <span class="comment">//</span>
-<a name="l00625"></a>00625         <span class="comment">// Could estimate alpha1 = theta + pi/2, directly, i.e.,</span>
-<a name="l00626"></a>00626         <span class="comment">//   calp1 = y/k; salp1 = -x/(1+k);  for _f >= 0</span>
-<a name="l00627"></a>00627         <span class="comment">//   calp1 = x/(1+k); salp1 = -y/k;  for _f < 0 (need to check)</span>
-<a name="l00628"></a>00628         <span class="comment">//</span>
-<a name="l00629"></a>00629         <span class="comment">// However, it's better to estimate omg12 from astroid and use</span>
-<a name="l00630"></a>00630         <span class="comment">// spherical formula to compute alp1.  This reduces the mean number of</span>
-<a name="l00631"></a>00631         <span class="comment">// Newton iterations for astroid cases from 2.24 (min 0, max 6) to 2.12</span>
-<a name="l00632"></a>00632         <span class="comment">// (min 0 max 5).  The changes in the number of iterations are as</span>
-<a name="l00633"></a>00633         <span class="comment">// follows:</span>
-<a name="l00634"></a>00634         <span class="comment">//</span>
-<a name="l00635"></a>00635         <span class="comment">// change percent</span>
-<a name="l00636"></a>00636         <span class="comment">//    1       5</span>
-<a name="l00637"></a>00637         <span class="comment">//    0      78</span>
-<a name="l00638"></a>00638         <span class="comment">//   -1      16</span>
-<a name="l00639"></a>00639         <span class="comment">//   -2       0.6</span>
-<a name="l00640"></a>00640         <span class="comment">//   -3       0.04</span>
-<a name="l00641"></a>00641         <span class="comment">//   -4       0.002</span>
-<a name="l00642"></a>00642         <span class="comment">//</span>
-<a name="l00643"></a>00643         <span class="comment">// The histogram of iterations is (m = number of iterations estimating</span>
-<a name="l00644"></a>00644         <span class="comment">// alp1 directly, n = number of iterations estimating via omg12, total</span>
-<a name="l00645"></a>00645         <span class="comment">// number of trials = 148605):</span>
-<a name="l00646"></a>00646         <span class="comment">//</span>
-<a name="l00647"></a>00647         <span class="comment">//  iter    m      n</span>
-<a name="l00648"></a>00648         <span class="comment">//    0   148    186</span>
-<a name="l00649"></a>00649         <span class="comment">//    1 13046  13845</span>
-<a name="l00650"></a>00650         <span class="comment">//    2 93315 102225</span>
-<a name="l00651"></a>00651         <span class="comment">//    3 36189  32341</span>
-<a name="l00652"></a>00652         <span class="comment">//    4  5396      7</span>
-<a name="l00653"></a>00653         <span class="comment">//    5   455      1</span>
-<a name="l00654"></a>00654         <span class="comment">//    6    56      0</span>
-<a name="l00655"></a>00655         <span class="comment">//</span>
-<a name="l00656"></a>00656         <span class="comment">// Because omg12 is near pi, estimate work with omg12a = pi - omg12</span>
-<a name="l00657"></a>00657         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = Astroid(x, y);
-<a name="l00658"></a>00658         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00659"></a>00659           omg12a = lamscale * ( _f >= 0 ? -x * k/(1 + k) : -y * (1 + k)/k ),
-<a name="l00660"></a>00660           somg12 = sin(omg12a), comg12 = -cos(omg12a);
-<a name="l00661"></a>00661         <span class="comment">// Update spherical estimate of alp1 using omg12 instead of lam12</span>
-<a name="l00662"></a>00662         salp1 = cbet2 * somg12;
-<a name="l00663"></a>00663         calp1 = sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 - comg12);
-<a name="l00664"></a>00664       }
-<a name="l00665"></a>00665     }
-<a name="l00666"></a>00666     SinCosNorm(salp1, calp1);
-<a name="l00667"></a>00667     <span class="keywordflow">return</span> sig12;
-<a name="l00668"></a>00668   }
-<a name="l00669"></a>00669 
-<a name="l00670"></a>00670   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real [...]
-<a name="l00671"></a>00671                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
-<a name="l00672"></a>00672                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
-<a name="l00673"></a>00673                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
-<a name="l00674"></a>00674                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1,
-<a name="l00675"></a>00675                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
-<a name="l00676"></a>00676                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12,
-<a name="l00677"></a>00677                                 <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
-<a name="l00678"></a>00678                                 <span class="comment">// Scratch areas of the right size</span>
-<a name="l00679"></a>00679                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[]) <span class="keyword">const</span>
-<a name="l00680"></a>00680     <span class="keywordflow">throw</span>() {
-<a name="l00681"></a>00681 
-<a name="l00682"></a>00682     <span class="keywordflow">if</span> (sbet1 == 0 && calp1 == 0)
-<a name="l00683"></a>00683       <span class="comment">// Break degeneracy of equatorial line.  This case has already been</span>
-<a name="l00684"></a>00684       <span class="comment">// handled.</span>
-<a name="l00685"></a>00685       calp1 = -tiny_;
-<a name="l00686"></a>00686 
-<a name="l00687"></a>00687     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00688"></a>00688       <span class="comment">// sin(alp1) * cos(bet1) = sin(alp0)</span>
-<a name="l00689"></a>00689       salp0 = salp1 * cbet1,
-<a name="l00690"></a>00690       calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
-<a name="l00691"></a>00691 
-<a name="l00692"></a>00692     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> somg1, comg1, somg2, comg2, omg12, lam12;
-<a name="l00693"></a>00693     <span class="comment">// tan(bet1) = tan(sig1) * cos(alp1)</span>
-<a name="l00694"></a>00694     <span class="comment">// tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)</span>
-<a name="l00695"></a>00695     ssig1 = sbet1; somg1 = salp0 * sbet1;
-<a name="l00696"></a>00696     csig1 = comg1 = calp1 * cbet1;
-<a name="l00697"></a>00697     SinCosNorm(ssig1, csig1);
-<a name="l00698"></a>00698     <span class="comment">// SinCosNorm(somg1, comg1); -- don't need to normalize!</span>
-<a name="l00699"></a>00699 
-<a name="l00700"></a>00700     <span class="comment">// Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful</span>
-<a name="l00701"></a>00701     <span class="comment">// about this case, since this can yield singularities in the Newton</span>
-<a name="l00702"></a>00702     <span class="comment">// iteration.</span>
-<a name="l00703"></a>00703     <span class="comment">// sin(alp2) * cos(bet2) = sin(alp0)</span>
-<a name="l00704"></a>00704     salp2 = cbet2 != cbet1 ? salp0 / cbet2 : salp1;
-<a name="l00705"></a>00705     <span class="comment">// calp2 = sqrt(1 - sq(salp2))</span>
-<a name="l00706"></a>00706     <span class="comment">//       = sqrt(sq(calp0) - sq(sbet2)) / cbet2</span>
-<a name="l00707"></a>00707     <span class="comment">// and subst for calp0 and rearrange to give (choose positive sqrt</span>
-<a name="l00708"></a>00708     <span class="comment">// to give alp2 in [0, pi/2]).</span>
-<a name="l00709"></a>00709     calp2 = cbet2 != cbet1 || abs(sbet2) != -sbet1 ?
-<a name="l00710"></a>00710       sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp1 * cbet1) +
-<a name="l00711"></a>00711            (cbet1 < -sbet1 ?
-<a name="l00712"></a>00712             (cbet2 - cbet1) * (cbet1 + cbet2) :
-<a name="l00713"></a>00713             (sbet1 - sbet2) * (sbet1 + sbet2))) / cbet2 :
-<a name="l00714"></a>00714       abs(calp1);
-<a name="l00715"></a>00715     <span class="comment">// tan(bet2) = tan(sig2) * cos(alp2)</span>
-<a name="l00716"></a>00716     <span class="comment">// tan(omg2) = sin(alp0) * tan(sig2).</span>
-<a name="l00717"></a>00717     ssig2 = sbet2; somg2 = salp0 * sbet2;
-<a name="l00718"></a>00718     csig2 = comg2 = calp2 * cbet2;
-<a name="l00719"></a>00719     SinCosNorm(ssig2, csig2);
-<a name="l00720"></a>00720     <span class="comment">// SinCosNorm(somg2, comg2); -- don't need to normalize!</span>
-<a name="l00721"></a>00721 
-<a name="l00722"></a>00722     <span class="comment">// sig12 = sig2 - sig1, limit to [0, pi]</span>
-<a name="l00723"></a>00723     sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
-<a name="l00724"></a>00724                   csig1 * csig2 + ssig1 * ssig2);
-<a name="l00725"></a>00725 
-<a name="l00726"></a>00726     <span class="comment">// omg12 = omg2 - omg1, limit to [0, pi]</span>
-<a name="l00727"></a>00727     omg12 = atan2(max(comg1 * somg2 - somg1 * comg2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
-<a name="l00728"></a>00728                   comg1 * comg2 + somg1 * somg2);
-<a name="l00729"></a>00729     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> B312, h0;
-<a name="l00730"></a>00730     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp0) * _ep2;
-<a name="l00731"></a>00731     eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
-<a name="l00732"></a>00732     C3f(eps, C3a);
-<a name="l00733"></a>00733     B312 = (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C3a, nC3_-1) -
-<a name="l00734"></a>00734             SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C3a, nC3_-1));
-<a name="l00735"></a>00735     h0 = -_f * A3f(eps);
-<a name="l00736"></a>00736     domg12 = salp0 * h0 * (sig12 + B312);
-<a name="l00737"></a>00737     lam12 = omg12 + domg12;
-<a name="l00738"></a>00738 
-<a name="l00739"></a>00739     <span class="keywordflow">if</span> (diffp) {
-<a name="l00740"></a>00740       <span class="keywordflow">if</span> (calp2 == 0)
-<a name="l00741"></a>00741         dlam12 = - 2 * sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1)) / sbet1;
-<a name="l00742"></a>00742       <span class="keywordflow">else</span> {
-<a name="l00743"></a>00743         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dummy;
-<a name="l00744"></a>00744         Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00745"></a>00745                 cbet1, cbet2, dummy, dlam12, dummy,
-<a name="l00746"></a>00746                 <span class="keyword">false</span>, dummy, dummy,  C1a, C2a);
-<a name="l00747"></a>00747         dlam12 /= calp2 * cbet2;
-<a name="l00748"></a>00748       }
-<a name="l00749"></a>00749     }
-<a name="l00750"></a>00750 
-<a name="l00751"></a>00751     <span class="keywordflow">return</span> lam12;
-<a name="l00752"></a>00752   }
+<a name="l00066"></a>00066       <span class="comment">// The sig12 threshold for "really short"</span>
+<a name="l00067"></a>00067     , _etol2(10 * tol2_ / max(real(0.1), sqrt(abs(_e2))))
+<a name="l00068"></a>00068   {
+<a name="l00069"></a>00069     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00070"></a>00070       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
+<a name="l00071"></a>00071     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_b) && _b > 0))
+<a name="l00072"></a>00072       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
+<a name="l00073"></a>00073     A3coeff();
+<a name="l00074"></a>00074     C3coeff();
+<a name="l00075"></a>00075     C4coeff();
+<a name="l00076"></a>00076   }
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>(Constants::WGS84_a<real>(),
+<a name="l00079"></a>00079                                  Constants::WGS84_f<real>());
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::SinCosSeries(<span class="keywordtype">bool</span> sinp,
+<a name="l00082"></a>00082                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx,
+<a name="l00083"></a>00083                                     <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() {
+<a name="l00084"></a>00084     <span class="comment">// Evaluate</span>
+<a name="l00085"></a>00085     <span class="comment">// y = sinp ? sum(c[i] * sin( 2*i    * x), i, 1, n) :</span>
+<a name="l00086"></a>00086     <span class="comment">//            sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :</span>
+<a name="l00087"></a>00087     <span class="comment">// using Clenshaw summation.  N.B. c[0] is unused for sin series</span>
+<a name="l00088"></a>00088     <span class="comment">// Approx operation count = (n + 5) mult and (2 * n + 2) add</span>
+<a name="l00089"></a>00089     c += (n + sinp);            <span class="comment">// Point to one beyond last element</span>
+<a name="l00090"></a>00090     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00091"></a>00091       ar = 2 * (cosx - sinx) * (cosx + sinx), <span class="comment">// 2 * cos(2 * x)</span>
+<a name="l00092"></a>00092       y0 = n & 1 ? *--c : 0, y1 = 0;          <span class="comment">// accumulators for sum</span>
+<a name="l00093"></a>00093     <span class="comment">// Now n is even</span>
+<a name="l00094"></a>00094     n /= 2;
+<a name="l00095"></a>00095     <span class="keywordflow">while</span> (n--) {
+<a name="l00096"></a>00096       <span class="comment">// Unroll loop x 2, so accumulators return to their original role</span>
+<a name="l00097"></a>00097       y1 = ar * y0 - y1 + *--c;
+<a name="l00098"></a>00098       y0 = ar * y1 - y0 + *--c;
+<a name="l00099"></a>00099     }
+<a name="l00100"></a>00100     <span class="keywordflow">return</span> sinp
+<a name="l00101"></a>00101       ? 2 * sinx * cosx * y0    <span class="comment">// sin(2 * x) * y0</span>
+<a name="l00102"></a>00102       : cosx * (y0 - y1);       <span class="comment">// cos(x) * (y0 - y1)</span>
+<a name="l00103"></a>00103   }
+<a name="l00104"></a>00104 
+<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">00105</a>   <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Geodesic::Line</a>(real lat1, real lon1, real azi1, <span class="keywordtype">unsigned</span> caps)
+<a name="l00106"></a>00106     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00107"></a>00107     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1, caps);
+<a name="l00108"></a>00108   }
+<a name="l00109"></a>00109 
+<a name="l00110"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">00110</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">Geodesic::GenDirect</a>(real lat1, real lon1, real azi1,
+<a name="l00111"></a>00111                                  <span class="keywordtype">bool</span> arcmode, real s12_a12, <span class="keywordtype">unsigned</span> outmask,
+<a name="l00112"></a>00112                                  real& lat2, real& lon2, real& azi2,
+<a name="l00113"></a>00113                                  real& s12, real& m12, real& M12, real& M21,
+<a name="l00114"></a>00114                                  real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00115"></a>00115     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1,
+<a name="l00116"></a>00116                         <span class="comment">// Automatically supply DISTANCE_IN if necessary</span>
+<a name="l00117"></a>00117                         outmask | (arcmode ? NONE : DISTANCE_IN))
+<a name="l00118"></a>00118       .                         <span class="comment">// Note the dot!</span>
+<a name="l00119"></a>00119       GenPosition(arcmode, s12_a12, outmask,
+<a name="l00120"></a>00120                   lat2, lon2, azi2, s12, m12, M12, M21, S12);
+<a name="l00121"></a>00121   }
+<a name="l00122"></a>00122 
+<a name="l00123"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">00123</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">Geodesic::GenInverse</a>(real lat1, real lon1, real lat2, real lon2,
+<a name="l00124"></a>00124                                   <span class="keywordtype">unsigned</span> outmask,
+<a name="l00125"></a>00125                                   real& s12, real& azi1, real& azi2,
+<a name="l00126"></a>00126                                   real& m12, real& M12, real& M21, real& S12)
+<a name="l00127"></a>00127     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00128"></a>00128     outmask &= OUT_ALL;
+<a name="l00129"></a>00129     lon1 = AngNormalize(lon1);
+<a name="l00130"></a>00130     real lon12 = AngNormalize(AngNormalize(lon2) - lon1);
+<a name="l00131"></a>00131     <span class="comment">// If very close to being on the same meridian, then make it so.</span>
+<a name="l00132"></a>00132     <span class="comment">// Not sure this is necessary...</span>
+<a name="l00133"></a>00133     lon12 = AngRound(lon12);
+<a name="l00134"></a>00134     <span class="comment">// Make longitude difference positive.</span>
+<a name="l00135"></a>00135     <span class="keywordtype">int</span> lonsign = lon12 >= 0 ? 1 : -1;
+<a name="l00136"></a>00136     lon12 *= lonsign;
+<a name="l00137"></a>00137     <span class="keywordflow">if</span> (lon12 == 180)
+<a name="l00138"></a>00138       lonsign = 1;
+<a name="l00139"></a>00139     <span class="comment">// If really close to the equator, treat as on equator.</span>
+<a name="l00140"></a>00140     lat1 = AngRound(lat1);
+<a name="l00141"></a>00141     lat2 = AngRound(lat2);
+<a name="l00142"></a>00142     <span class="comment">// Swap points so that point with higher (abs) latitude is point 1</span>
+<a name="l00143"></a>00143     <span class="keywordtype">int</span> swapp = abs(lat1) >= abs(lat2) ? 1 : -1;
+<a name="l00144"></a>00144     <span class="keywordflow">if</span> (swapp < 0) {
+<a name="l00145"></a>00145       lonsign *= -1;
+<a name="l00146"></a>00146       swap(lat1, lat2);
+<a name="l00147"></a>00147     }
+<a name="l00148"></a>00148     <span class="comment">// Make lat1 <= 0</span>
+<a name="l00149"></a>00149     <span class="keywordtype">int</span> latsign = lat1 < 0 ? 1 : -1;
+<a name="l00150"></a>00150     lat1 *= latsign;
+<a name="l00151"></a>00151     lat2 *= latsign;
+<a name="l00152"></a>00152     <span class="comment">// Now we have</span>
+<a name="l00153"></a>00153     <span class="comment">//</span>
+<a name="l00154"></a>00154     <span class="comment">//     0 <= lon12 <= 180</span>
+<a name="l00155"></a>00155     <span class="comment">//     -90 <= lat1 <= 0</span>
+<a name="l00156"></a>00156     <span class="comment">//     lat1 <= lat2 <= -lat1</span>
+<a name="l00157"></a>00157     <span class="comment">//</span>
+<a name="l00158"></a>00158     <span class="comment">// longsign, swapp, latsign register the transformation to bring the</span>
+<a name="l00159"></a>00159     <span class="comment">// coordinates to this canonical form.  In all cases, 1 means no change was</span>
+<a name="l00160"></a>00160     <span class="comment">// made.  We make these transformations so that there are few cases to</span>
+<a name="l00161"></a>00161     <span class="comment">// check, e.g., on verifying quadrants in atan2.  In addition, this</span>
+<a name="l00162"></a>00162     <span class="comment">// enforces some symmetries in the results returned.</span>
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164     real phi, sbet1, cbet1, sbet2, cbet2, s12x, m12x;
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166     phi = lat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00167"></a>00167     <span class="comment">// Ensure cbet1 = +epsilon at poles</span>
+<a name="l00168"></a>00168     sbet1 = _f1 * sin(phi);
+<a name="l00169"></a>00169     cbet1 = lat1 == -90 ? tiny_ : cos(phi);
+<a name="l00170"></a>00170     SinCosNorm(sbet1, cbet1);
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172     phi = lat2 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00173"></a>00173     <span class="comment">// Ensure cbet2 = +epsilon at poles</span>
+<a name="l00174"></a>00174     sbet2 = _f1 * sin(phi);
+<a name="l00175"></a>00175     cbet2 = abs(lat2) == 90 ? tiny_ : cos(phi);
+<a name="l00176"></a>00176     SinCosNorm(sbet2, cbet2);
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178     <span class="comment">// If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the</span>
+<a name="l00179"></a>00179     <span class="comment">// |bet1| - |bet2|.  Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1 is</span>
+<a name="l00180"></a>00180     <span class="comment">// a better measure.  This logic is used in assigning calp2 in Lambda12.</span>
+<a name="l00181"></a>00181     <span class="comment">// Sometimes these quantities vanish and in that case we force bet2 = +/-</span>
+<a name="l00182"></a>00182     <span class="comment">// bet1 exactly.  An example where is is necessary is the inverse problem</span>
+<a name="l00183"></a>00183     <span class="comment">// 48.522876735459 0 -48.52287673545898293 179.599720456223079643</span>
+<a name="l00184"></a>00184     <span class="comment">// which failed with Visual Studio 10 (Release and Debug)</span>
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186     <span class="keywordflow">if</span> (cbet1 < -sbet1) {
+<a name="l00187"></a>00187       <span class="keywordflow">if</span> (cbet2 == cbet1)
+<a name="l00188"></a>00188         sbet2 = sbet2 < 0 ? sbet1 : -sbet1;
+<a name="l00189"></a>00189     } <span class="keywordflow">else</span> {
+<a name="l00190"></a>00190       <span class="keywordflow">if</span> (abs(sbet2) == -sbet1)
+<a name="l00191"></a>00191         cbet2 = cbet1;
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194     real
+<a name="l00195"></a>00195       lam12 = lon12 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
+<a name="l00196"></a>00196       slam12 = lon12 == 180 ? 0 : sin(lam12),
+<a name="l00197"></a>00197       clam12 = cos(lam12);      <span class="comment">// lon12 == 90 isn't interesting</span>
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199     real a12, sig12, calp1, salp1, calp2, salp2;
+<a name="l00200"></a>00200     <span class="comment">// index zero elements of these arrays are unused</span>
+<a name="l00201"></a>00201     real C1a[nC1_ + 1], C2a[nC2_ + 1], C3a[nC3_];
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203     <span class="keywordtype">bool</span> meridian = lat1 == -90 || slam12 == 0;
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205     <span class="keywordflow">if</span> (meridian) {
+<a name="l00206"></a>00206 
+<a name="l00207"></a>00207       <span class="comment">// Endpoints are on a single full meridian, so the geodesic might lie on</span>
+<a name="l00208"></a>00208       <span class="comment">// a meridian.</span>
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210       calp1 = clam12; salp1 = slam12; <span class="comment">// Head to the target longitude</span>
+<a name="l00211"></a>00211       calp2 = 1; salp2 = 0;           <span class="comment">// At the target we're heading north</span>
+<a name="l00212"></a>00212 
+<a name="l00213"></a>00213       real
+<a name="l00214"></a>00214         <span class="comment">// tan(bet) = tan(sig) * cos(alp)</span>
+<a name="l00215"></a>00215         ssig1 = sbet1, csig1 = calp1 * cbet1,
+<a name="l00216"></a>00216         ssig2 = sbet2, csig2 = calp2 * cbet2;
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218       <span class="comment">// sig12 = sig2 - sig1</span>
+<a name="l00219"></a>00219       sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
+<a name="l00220"></a>00220                     csig1 * csig2 + ssig1 * ssig2);
+<a name="l00221"></a>00221       {
+<a name="l00222"></a>00222         real dummy;
+<a name="l00223"></a>00223         Lengths(_n, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00224"></a>00224                 cbet1, cbet2, s12x, m12x, dummy,
+<a name="l00225"></a>00225                 (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
+<a name="l00226"></a>00226       }
+<a name="l00227"></a>00227       <span class="comment">// Add the check for sig12 since zero length geodesics might yield m12 <</span>
+<a name="l00228"></a>00228       <span class="comment">// 0.  Test case was</span>
+<a name="l00229"></a>00229       <span class="comment">//</span>
+<a name="l00230"></a>00230       <span class="comment">//    echo 20.001 0 20.001 0 | Geod -i</span>
+<a name="l00231"></a>00231       <span class="comment">//</span>
+<a name="l00232"></a>00232       <span class="comment">// In fact, we will have sig12 > pi/2 for meridional geodesic which is</span>
+<a name="l00233"></a>00233       <span class="comment">// not a shortest path.</span>
+<a name="l00234"></a>00234       <span class="keywordflow">if</span> (sig12 < 1 || m12x >= 0) {
+<a name="l00235"></a>00235         m12x *= _a;
+<a name="l00236"></a>00236         s12x *= _b;
+<a name="l00237"></a>00237         a12 = sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00238"></a>00238       } <span class="keywordflow">else</span>
+<a name="l00239"></a>00239         <span class="comment">// m12 < 0, i.e., prolate and too close to anti-podal</span>
+<a name="l00240"></a>00240         meridian = <span class="keyword">false</span>;
+<a name="l00241"></a>00241     }
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243     real omg12;
+<a name="l00244"></a>00244     <span class="keywordflow">if</span> (!meridian &&
+<a name="l00245"></a>00245         sbet1 == 0 &&   <span class="comment">// and sbet2 == 0</span>
+<a name="l00246"></a>00246         <span class="comment">// Mimic the way Lambda12 works with calp1 = 0</span>
+<a name="l00247"></a>00247         (_f <= 0 || lam12 <= Math::pi<real>() - _f * Math::pi<real>())) {
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249       <span class="comment">// Geodesic runs along equator</span>
+<a name="l00250"></a>00250       calp1 = calp2 = 0; salp1 = salp2 = 1;
+<a name="l00251"></a>00251       s12x = _a * lam12;
+<a name="l00252"></a>00252       m12x = _b * sin(lam12 / _f1);
+<a name="l00253"></a>00253       <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00254"></a>00254         M12 = M21 = cos(lam12 / _f1);
+<a name="l00255"></a>00255       a12 = lon12 / _f1;
+<a name="l00256"></a>00256       sig12 = omg12 = lam12 / _f1;
+<a name="l00257"></a>00257 
+<a name="l00258"></a>00258     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!meridian) {
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260       <span class="comment">// Now point1 and point2 belong within a hemisphere bounded by a</span>
+<a name="l00261"></a>00261       <span class="comment">// meridian and geodesic is neither meridional or equatorial.</span>
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263       <span class="comment">// Figure a starting point for Newton's method</span>
+<a name="l00264"></a>00264       sig12 = InverseStart(sbet1, cbet1, sbet2, cbet2,
+<a name="l00265"></a>00265                            lam12,
+<a name="l00266"></a>00266                            salp1, calp1, salp2, calp2,
+<a name="l00267"></a>00267                            C1a, C2a);
+<a name="l00268"></a>00268 
+<a name="l00269"></a>00269       <span class="keywordflow">if</span> (sig12 >= 0) {
+<a name="l00270"></a>00270         <span class="comment">// Short lines (InverseStart sets salp2, calp2)</span>
+<a name="l00271"></a>00271         real wm = sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>((cbet1 + cbet2) / 2));
+<a name="l00272"></a>00272         s12x = sig12 * _a * wm;
+<a name="l00273"></a>00273         m12x = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(wm) * _a / _f1 * sin(sig12 * _f1 / wm);
+<a name="l00274"></a>00274         <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00275"></a>00275           M12 = M21 = cos(sig12 * _f1 / wm);
+<a name="l00276"></a>00276         a12 = sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00277"></a>00277         omg12 = lam12 / wm;
+<a name="l00278"></a>00278       } <span class="keywordflow">else</span> {
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280         <span class="comment">// Newton's method</span>
+<a name="l00281"></a>00281         real ssig1, csig1, ssig2, csig2, eps;
+<a name="l00282"></a>00282         real ov = 0;
+<a name="l00283"></a>00283         <span class="keywordtype">unsigned</span> numit = 0;
+<a name="l00284"></a>00284         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> trip = 0; numit < maxit_; ++numit) {
+<a name="l00285"></a>00285           real dv;
+<a name="l00286"></a>00286           real v = Lambda12(sbet1, cbet1, sbet2, cbet2, salp1, calp1,
+<a name="l00287"></a>00287                             salp2, calp2, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00288"></a>00288                             eps, omg12, trip < 1, dv, C1a, C2a, C3a) - lam12;
+<a name="l00289"></a>00289           <span class="keywordflow">if</span> (!(abs(v) > tiny_) || !(trip < 1)) {
+<a name="l00290"></a>00290             <span class="keywordflow">if</span> (!(abs(v) <= max(tol1_, ov)))
+<a name="l00291"></a>00291               numit = maxit_;
+<a name="l00292"></a>00292             <span class="keywordflow">break</span>;
+<a name="l00293"></a>00293           }
+<a name="l00294"></a>00294           real
+<a name="l00295"></a>00295             dalp1 = -v/dv;
+<a name="l00296"></a>00296           real
+<a name="l00297"></a>00297             sdalp1 = sin(dalp1), cdalp1 = cos(dalp1),
+<a name="l00298"></a>00298             nsalp1 = salp1 * cdalp1 + calp1 * sdalp1;
+<a name="l00299"></a>00299           calp1 = calp1 * cdalp1 - salp1 * sdalp1;
+<a name="l00300"></a>00300           salp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), nsalp1);
+<a name="l00301"></a>00301           SinCosNorm(salp1, calp1);
+<a name="l00302"></a>00302           <span class="comment">// In some regimes we don't get quadratic convergence because slope</span>
+<a name="l00303"></a>00303           <span class="comment">// -> 0.  So use convergence conditions based on epsilon instead of</span>
+<a name="l00304"></a>00304           <span class="comment">// sqrt(epsilon).  The first criterion is a test on abs(v) against</span>
+<a name="l00305"></a>00305           <span class="comment">// 100 * epsilon.  The second takes credit for an anticipated</span>
+<a name="l00306"></a>00306           <span class="comment">// reduction in abs(v) by v/ov (due to the latest update in alp1) and</span>
+<a name="l00307"></a>00307           <span class="comment">// checks this against epsilon.</span>
+<a name="l00308"></a>00308           <span class="keywordflow">if</span> (!(abs(v) >= tol1_ && <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(v) >= ov * tol0_)) ++trip;
+<a name="l00309"></a>00309           ov = abs(v);
+<a name="l00310"></a>00310         }
+<a name="l00311"></a>00311 
+<a name="l00312"></a>00312         <span class="keywordflow">if</span> (numit >= maxit_) {
+<a name="l00313"></a>00313           <span class="comment">// Signal failure.</span>
+<a name="l00314"></a>00314           <span class="keywordflow">if</span> (outmask & DISTANCE)
+<a name="l00315"></a>00315             s12 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00316"></a>00316           <span class="keywordflow">if</span> (outmask & AZIMUTH)
+<a name="l00317"></a>00317             azi1 = azi2 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00318"></a>00318           <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
+<a name="l00319"></a>00319             m12 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00320"></a>00320           <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00321"></a>00321             M12 = M21 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00322"></a>00322           <span class="keywordflow">if</span> (outmask & AREA)
+<a name="l00323"></a>00323             S12 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00324"></a>00324           <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00325"></a>00325         }
+<a name="l00326"></a>00326 
+<a name="l00327"></a>00327         {
+<a name="l00328"></a>00328           real dummy;
+<a name="l00329"></a>00329           Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00330"></a>00330                   cbet1, cbet2, s12x, m12x, dummy,
+<a name="l00331"></a>00331                   (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
+<a name="l00332"></a>00332         }
+<a name="l00333"></a>00333         m12x *= _a;
+<a name="l00334"></a>00334         s12x *= _b;
+<a name="l00335"></a>00335         a12 = sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00336"></a>00336         omg12 = lam12 - omg12;
+<a name="l00337"></a>00337       }
+<a name="l00338"></a>00338     }
+<a name="l00339"></a>00339 
+<a name="l00340"></a>00340     <span class="keywordflow">if</span> (outmask & DISTANCE)
+<a name="l00341"></a>00341       s12 = 0 + s12x;           <span class="comment">// Convert -0 to 0</span>
+<a name="l00342"></a>00342 
+<a name="l00343"></a>00343     <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
+<a name="l00344"></a>00344       m12 = 0 + m12x;           <span class="comment">// Convert -0 to 0</span>
+<a name="l00345"></a>00345 
+<a name="l00346"></a>00346     <span class="keywordflow">if</span> (outmask & AREA) {
+<a name="l00347"></a>00347       real
+<a name="l00348"></a>00348         <span class="comment">// From Lambda12: sin(alp1) * cos(bet1) = sin(alp0)</span>
+<a name="l00349"></a>00349         salp0 = salp1 * cbet1,
+<a name="l00350"></a>00350         calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
+<a name="l00351"></a>00351       real alp12;
+<a name="l00352"></a>00352       <span class="keywordflow">if</span> (calp0 != 0 && salp0 != 0) {
+<a name="l00353"></a>00353         real
+<a name="l00354"></a>00354           <span class="comment">// From Lambda12: tan(bet) = tan(sig) * cos(alp)</span>
+<a name="l00355"></a>00355           ssig1 = sbet1, csig1 = calp1 * cbet1,
+<a name="l00356"></a>00356           ssig2 = sbet2, csig2 = calp2 * cbet2,
+<a name="l00357"></a>00357           k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp0) * _ep2,
+<a name="l00358"></a>00358           <span class="comment">// Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).</span>
+<a name="l00359"></a>00359           A4 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_a) * calp0 * salp0 * _e2;
+<a name="l00360"></a>00360         SinCosNorm(ssig1, csig1);
+<a name="l00361"></a>00361         SinCosNorm(ssig2, csig2);
+<a name="l00362"></a>00362         real C4a[nC4_];
+<a name="l00363"></a>00363         C4f(k2, C4a);
+<a name="l00364"></a>00364         real
+<a name="l00365"></a>00365           B41 = SinCosSeries(<span class="keyword">false</span>, ssig1, csig1, C4a, nC4_),
+<a name="l00366"></a>00366           B42 = SinCosSeries(<span class="keyword">false</span>, ssig2, csig2, C4a, nC4_);
+<a name="l00367"></a>00367         S12 = A4 * (B42 - B41);
+<a name="l00368"></a>00368       } <span class="keywordflow">else</span>
+<a name="l00369"></a>00369         <span class="comment">// Avoid problems with indeterminate sig1, sig2 on equator</span>
+<a name="l00370"></a>00370         S12 = 0;
+<a name="l00371"></a>00371 
+<a name="l00372"></a>00372       <span class="keywordflow">if</span> (!meridian &&
+<a name="l00373"></a>00373           omg12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() && <span class="comment">// Long difference too big</span>
+<a name="l00374"></a>00374           sbet2 - sbet1 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1.75)) {            <span class="comment">// Lat difference too big</span>
+<a name="l00375"></a>00375         <span class="comment">// Use tan(Gamma/2) = tan(omg12/2)</span>
+<a name="l00376"></a>00376         <span class="comment">// * (tan(bet1/2)+tan(bet2/2))/(1+tan(bet1/2)*tan(bet2/2))</span>
+<a name="l00377"></a>00377         <span class="comment">// with tan(x/2) = sin(x)/(1+cos(x))</span>
+<a name="l00378"></a>00378         real
+<a name="l00379"></a>00379           somg12 = sin(omg12), domg12 = 1 + cos(omg12),
+<a name="l00380"></a>00380           dbet1 = 1 + cbet1, dbet2 = 1 + cbet2;
+<a name="l00381"></a>00381         alp12 = 2 * atan2( somg12 * ( sbet1 * dbet2 + sbet2 * dbet1 ),
+<a name="l00382"></a>00382                            domg12 * ( sbet1 * sbet2 + dbet1 * dbet2 ) );
+<a name="l00383"></a>00383       } <span class="keywordflow">else</span> {
+<a name="l00384"></a>00384         <span class="comment">// alp12 = alp2 - alp1, used in atan2 so no need to normalize</span>
+<a name="l00385"></a>00385         real
+<a name="l00386"></a>00386           salp12 = salp2 * calp1 - calp2 * salp1,
+<a name="l00387"></a>00387           calp12 = calp2 * calp1 + salp2 * salp1;
+<a name="l00388"></a>00388         <span class="comment">// The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz</span>
+<a name="l00389"></a>00389         <span class="comment">// salp12 = -0 and alp12 = -180.  However this depends on the sign</span>
+<a name="l00390"></a>00390         <span class="comment">// being attached to 0 correctly.  The following ensures the correct</span>
+<a name="l00391"></a>00391         <span class="comment">// behavior.</span>
+<a name="l00392"></a>00392         <span class="keywordflow">if</span> (salp12 == 0 && calp12 < 0) {
+<a name="l00393"></a>00393           salp12 = tiny_ * calp1;
+<a name="l00394"></a>00394           calp12 = -1;
+<a name="l00395"></a>00395         }
+<a name="l00396"></a>00396         alp12 = atan2(salp12, calp12);
+<a name="l00397"></a>00397       }
+<a name="l00398"></a>00398       S12 += _c2 * alp12;
+<a name="l00399"></a>00399       S12 *= swapp * lonsign * latsign;
+<a name="l00400"></a>00400       <span class="comment">// Convert -0 to 0</span>
+<a name="l00401"></a>00401       S12 += 0;
+<a name="l00402"></a>00402     }
+<a name="l00403"></a>00403 
+<a name="l00404"></a>00404     <span class="comment">// Convert calp, salp to azimuth accounting for lonsign, swapp, latsign.</span>
+<a name="l00405"></a>00405     <span class="keywordflow">if</span> (swapp < 0) {
+<a name="l00406"></a>00406       swap(salp1, salp2);
+<a name="l00407"></a>00407       swap(calp1, calp2);
+<a name="l00408"></a>00408       <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00409"></a>00409         swap(M12, M21);
+<a name="l00410"></a>00410     }
+<a name="l00411"></a>00411 
+<a name="l00412"></a>00412     salp1 *= swapp * lonsign; calp1 *= swapp * latsign;
+<a name="l00413"></a>00413     salp2 *= swapp * lonsign; calp2 *= swapp * latsign;
+<a name="l00414"></a>00414 
+<a name="l00415"></a>00415     <span class="keywordflow">if</span> (outmask & AZIMUTH) {
+<a name="l00416"></a>00416       <span class="comment">// minus signs give range [-180, 180). 0- converts -0 to +0.</span>
+<a name="l00417"></a>00417       azi1 = 0 - atan2(-salp1, calp1) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00418"></a>00418       azi2 = 0 - atan2(-salp2, calp2) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00419"></a>00419     }
+<a name="l00420"></a>00420 
+<a name="l00421"></a>00421     <span class="comment">// Returned value in [0, 180]</span>
+<a name="l00422"></a>00422     <span class="keywordflow">return</span> a12;
+<a name="l00423"></a>00423   }
+<a name="l00424"></a>00424 
+<a name="l00425"></a>00425   <span class="keywordtype">void</span> Geodesic::Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
+<a name="l00426"></a>00426                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
+<a name="l00427"></a>00427                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00428"></a>00428                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12b, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
+<a name="l00429"></a>00429                          <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00430"></a>00430                          <span class="comment">// Scratch areas of the right size</span>
+<a name="l00431"></a>00431                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00432"></a>00432     <span class="comment">// Return m12a = (reduced length)/_a; also calculate s12b = distance/_b,</span>
+<a name="l00433"></a>00433     <span class="comment">// and m0 = coefficient of secular term in expression for reduced length.</span>
+<a name="l00434"></a>00434     C1f(eps, C1a);
+<a name="l00435"></a>00435     C2f(eps, C2a);
+<a name="l00436"></a>00436     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00437"></a>00437       A1m1 = A1m1f(eps),
+<a name="l00438"></a>00438       AB1 = (1 + A1m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C1a, nC1_) -
+<a name="l00439"></a>00439                           SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C1a, nC1_)),
+<a name="l00440"></a>00440       A2m1 = A2m1f(eps),
+<a name="l00441"></a>00441       AB2 = (1 + A2m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C2a, nC2_) -
+<a name="l00442"></a>00442                           SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C2a, nC2_)),
+<a name="l00443"></a>00443       cbet1sq = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1),
+<a name="l00444"></a>00444       cbet2sq = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet2),
+<a name="l00445"></a>00445       w1 = sqrt(1 - _e2 * cbet1sq),
+<a name="l00446"></a>00446       w2 = sqrt(1 - _e2 * cbet2sq),
+<a name="l00447"></a>00447       <span class="comment">// Make sure it's OK to have repeated dummy arguments</span>
+<a name="l00448"></a>00448       m0x = A1m1 - A2m1,
+<a name="l00449"></a>00449       J12 = m0x * sig12 + (AB1 - AB2);
+<a name="l00450"></a>00450     m0 = m0x;
+<a name="l00451"></a>00451     <span class="comment">// Missing a factor of _a.</span>
+<a name="l00452"></a>00452     <span class="comment">// Add parens around (csig1 * ssig2) and (ssig1 * csig2) to ensure accurate</span>
+<a name="l00453"></a>00453     <span class="comment">// cancellation in the case of coincident points.</span>
+<a name="l00454"></a>00454     m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
+<a name="l00455"></a>00455       - _f1 * csig1 * csig2 * J12;
+<a name="l00456"></a>00456     <span class="comment">// Missing a factor of _b</span>
+<a name="l00457"></a>00457     s12b = (1 + A1m1) * sig12 + AB1;
+<a name="l00458"></a>00458     <span class="keywordflow">if</span> (scalep) {
+<a name="l00459"></a>00459       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig12 = csig1 * csig2 + ssig1 * ssig2;
+<a name="l00460"></a>00460       J12 *= _f1;
+<a name="l00461"></a>00461       M12 = csig12 + (_e2 * (cbet1sq - cbet2sq) * ssig2 / (w1 + w2)
+<a name="l00462"></a>00462                       - csig2 * J12) * ssig1 / w1;
+<a name="l00463"></a>00463       M21 = csig12 - (_e2 * (cbet1sq - cbet2sq) * ssig1 / (w1 + w2)
+<a name="l00464"></a>00464                       - csig1 * J12) * ssig2 / w2;
+<a name="l00465"></a>00465     }
+<a name="l00466"></a>00466   }
+<a name="l00467"></a>00467 
+<a name="l00468"></a>00468   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00469"></a>00469     <span class="comment">// Solve k^4+2*k^3-(x^2+y^2-1)*k^2-2*y^2*k-y^2 = 0 for positive root k.</span>
+<a name="l00470"></a>00470     <span class="comment">// This solution is adapted from Geocentric::Reverse.</span>
+<a name="l00471"></a>00471     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k;
+<a name="l00472"></a>00472     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00473"></a>00473       p = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(x),
+<a name="l00474"></a>00474       q = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(y),
+<a name="l00475"></a>00475       r = (p + q - 1) / 6;
+<a name="l00476"></a>00476     <span class="keywordflow">if</span> ( !(q == 0 && r <= 0) ) {
+<a name="l00477"></a>00477       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00478"></a>00478         <span class="comment">// Avoid possible division by zero when r = 0 by multiplying equations</span>
+<a name="l00479"></a>00479         <span class="comment">// for s and t by r^3 and r, resp.</span>
+<a name="l00480"></a>00480         S = p * q / 4,            <span class="comment">// S = r^3 * s</span>
+<a name="l00481"></a>00481         r2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(r),
+<a name="l00482"></a>00482         r3 = r * r2,
+<a name="l00483"></a>00483         <span class="comment">// The discrimant of the quadratic equation for T3.  This is zero on</span>
+<a name="l00484"></a>00484         <span class="comment">// the evolute curve p^(1/3)+q^(1/3) = 1</span>
+<a name="l00485"></a>00485         disc = S * (S + 2 * r3);
+<a name="l00486"></a>00486       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u = r;
+<a name="l00487"></a>00487       <span class="keywordflow">if</span> (disc >= 0) {
+<a name="l00488"></a>00488         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T3 = S + r3;
+<a name="l00489"></a>00489         <span class="comment">// Pick the sign on the sqrt to maximize abs(T3).  This minimizes loss</span>
+<a name="l00490"></a>00490         <span class="comment">// of precision due to cancellation.  The result is unchanged because</span>
+<a name="l00491"></a>00491         <span class="comment">// of the way the T is used in definition of u.</span>
+<a name="l00492"></a>00492         T3 += T3 < 0 ? -sqrt(disc) : sqrt(disc); <span class="comment">// T3 = (r * t)^3</span>
+<a name="l00493"></a>00493         <span class="comment">// N.B. cbrt always returns the real root.  cbrt(-8) = -2.</span>
+<a name="l00494"></a>00494         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
+<a name="l00495"></a>00495         <span class="comment">// T can be zero; but then r2 / T -> 0.</span>
+<a name="l00496"></a>00496         u += T + (T != 0 ? r2 / T : 0);
+<a name="l00497"></a>00497       } <span class="keywordflow">else</span> {
+<a name="l00498"></a>00498         <span class="comment">// T is complex, but the way u is defined the result is real.</span>
+<a name="l00499"></a>00499         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ang = atan2(sqrt(-disc), -(S + r3));
+<a name="l00500"></a>00500         <span class="comment">// There are three possible cube roots.  We choose the root which</span>
+<a name="l00501"></a>00501         <span class="comment">// avoids cancellation.  Note that disc < 0 implies that r < 0.</span>
+<a name="l00502"></a>00502         u += 2 * r * cos(ang / 3);
+<a name="l00503"></a>00503       }
+<a name="l00504"></a>00504       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00505"></a>00505         v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(u) + q),    <span class="comment">// guaranteed positive</span>
+<a name="l00506"></a>00506         <span class="comment">// Avoid loss of accuracy when u < 0.</span>
+<a name="l00507"></a>00507         uv = u < 0 ? q / (v - u) : u + v, <span class="comment">// u+v, guaranteed positive</span>
+<a name="l00508"></a>00508         w = (uv - q) / (2 * v);           <span class="comment">// positive?</span>
+<a name="l00509"></a>00509       <span class="comment">// Rearrange expression for k to avoid loss of accuracy due to</span>
+<a name="l00510"></a>00510       <span class="comment">// subtraction.  Division by 0 not possible because uv > 0, w >= 0.</span>
+<a name="l00511"></a>00511       k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(w)) + w);   <span class="comment">// guaranteed positive</span>
+<a name="l00512"></a>00512     } <span class="keywordflow">else</span> {               <span class="comment">// q == 0 && r <= 0</span>
+<a name="l00513"></a>00513       <span class="comment">// y = 0 with |x| <= 1.  Handle this case directly.</span>
+<a name="l00514"></a>00514       <span class="comment">// for y small, positive root is k = abs(y)/sqrt(1-x^2)</span>
+<a name="l00515"></a>00515       k = 0;
+<a name="l00516"></a>00516     }
+<a name="l00517"></a>00517     <span class="keywordflow">return</span> k;
+<a name="l00518"></a>00518   }
+<a name="l00519"></a>00519 
+<a name="l00520"></a>00520   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1,
+<a name="l00521"></a>00521                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00522"></a>00522                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
+<a name="l00523"></a>00523                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
+<a name="l00524"></a>00524                                     <span class="comment">// Only updated if return val >= 0</span>
+<a name="l00525"></a>00525                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
+<a name="l00526"></a>00526                                     <span class="comment">// Scratch areas of the right size</span>
+<a name="l00527"></a>00527                                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00528"></a>00528     <span class="comment">// Return a starting point for Newton's method in salp1 and calp1 (function</span>
+<a name="l00529"></a>00529     <span class="comment">// value is -1).  If Newton's method doesn't need to be used, return also</span>
+<a name="l00530"></a>00530     <span class="comment">// salp2 and calp2 and function value is sig12.</span>
+<a name="l00531"></a>00531     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00532"></a>00532       sig12 = -1,               <span class="comment">// Return value</span>
+<a name="l00533"></a>00533       <span class="comment">// bet12 = bet2 - bet1 in [0, pi); bet12a = bet2 + bet1 in (-pi, 0]</span>
+<a name="l00534"></a>00534       sbet12 = sbet2 * cbet1 - cbet2 * sbet1,
+<a name="l00535"></a>00535       cbet12 = cbet2 * cbet1 + sbet2 * sbet1;
+<a name="l00536"></a>00536 <span class="preprocessor">#if defined(__GNUC__) && __GNUC__ == 4 && \</span>
+<a name="l00537"></a>00537 <span class="preprocessor">  (__GNUC_MINOR__ < 6 || defined(__MINGW32__))</span>
+<a name="l00538"></a>00538 <span class="preprocessor"></span>    <span class="comment">// Volatile declaration needed to fix inverse cases</span>
+<a name="l00539"></a>00539     <span class="comment">// 88.202499451857 0 -88.202499451857 179.981022032992859592</span>
+<a name="l00540"></a>00540     <span class="comment">// 89.262080389218 0 -89.262080389218 179.992207982775375662</span>
+<a name="l00541"></a>00541     <span class="comment">// 89.333123580033 0 -89.333123580032997687 179.99295812360148422</span>
+<a name="l00542"></a>00542     <span class="comment">// which otherwise fail with g++ 4.4.4 x86 -O3 (Linux)</span>
+<a name="l00543"></a>00543     <span class="comment">// and g++ 4.4.0 (mingw) and g++ 4.6.1 (tdm mingw).</span>
+<a name="l00544"></a>00544     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a;
+<a name="l00545"></a>00545     {
+<a name="l00546"></a>00546       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx1 = sbet2 * cbet1;
+<a name="l00547"></a>00547       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx2 = cbet2 * sbet1;
+<a name="l00548"></a>00548       sbet12a = xx1 + xx2;
+<a name="l00549"></a>00549     }
+<a name="l00550"></a>00550 <span class="preprocessor">#else</span>
+<a name="l00551"></a>00551 <span class="preprocessor"></span>    <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a = sbet2 * cbet1 + cbet2 * sbet1;
+<a name="l00552"></a>00552 <span class="preprocessor">#endif</span>
+<a name="l00553"></a>00553 <span class="preprocessor"></span>    <span class="keywordtype">bool</span> shortline = cbet12 >= 0 && sbet12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5) &&
+<a name="l00554"></a>00554       lam12 <= Math::pi<real>() / 6;
+<a name="l00555"></a>00555     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00556"></a>00556       omg12 = (!shortline ? lam12 :
+<a name="l00557"></a>00557                lam12 / sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>((cbet1 + cbet2) / 2))),
+<a name="l00558"></a>00558       somg12 = sin(omg12), comg12 = cos(omg12);
+<a name="l00559"></a>00559 
+<a name="l00560"></a>00560     salp1 = cbet2 * somg12;
+<a name="l00561"></a>00561     calp1 = comg12 >= 0 ?
+<a name="l00562"></a>00562       sbet12 + cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 + comg12) :
+<a name="l00563"></a>00563       sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 - comg12);
+<a name="l00564"></a>00564 
+<a name="l00565"></a>00565     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00566"></a>00566       ssig12 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(salp1, calp1),
+<a name="l00567"></a>00567       csig12 = sbet1 * sbet2 + cbet1 * cbet2 * comg12;
+<a name="l00568"></a>00568 
+<a name="l00569"></a>00569     <span class="keywordflow">if</span> (shortline && ssig12 < _etol2) {
+<a name="l00570"></a>00570       <span class="comment">// really short lines</span>
+<a name="l00571"></a>00571       salp2 = cbet1 * somg12;
+<a name="l00572"></a>00572       calp2 = sbet12 - cbet1 * sbet2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 + comg12);
+<a name="l00573"></a>00573       SinCosNorm(salp2, calp2);
+<a name="l00574"></a>00574       <span class="comment">// Set return value</span>
+<a name="l00575"></a>00575       sig12 = atan2(ssig12, csig12);
+<a name="l00576"></a>00576     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (csig12 >= 0 ||
+<a name="l00577"></a>00577                ssig12 >= 3 * abs(_f) * Math::pi<real>() * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1)) {
+<a name="l00578"></a>00578       <span class="comment">// Nothing to do, zeroth order spherical approximation is OK</span>
+<a name="l00579"></a>00579     } <span class="keywordflow">else</span> {
+<a name="l00580"></a>00580       <span class="comment">// Scale lam12 and bet2 to x, y coordinate system where antipodal point</span>
+<a name="l00581"></a>00581       <span class="comment">// is at origin and singular point is at y = 0, x = -1.</span>
+<a name="l00582"></a>00582       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, lamscale, betscale;
+<a name="l00583"></a>00583       <span class="comment">// Volatile declaration needed to fix inverse case</span>
+<a name="l00584"></a>00584       <span class="comment">// 56.320923501171 0 -56.320923501171 179.664747671772880215</span>
+<a name="l00585"></a>00585       <span class="comment">// which otherwise fails with g++ 4.4.4 x86 -O3</span>
+<a name="l00586"></a>00586       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x;
+<a name="l00587"></a>00587       <span class="keywordflow">if</span> (_f >= 0) {            <span class="comment">// In fact f == 0 does not get here</span>
+<a name="l00588"></a>00588         <span class="comment">// x = dlong, y = dlat</span>
+<a name="l00589"></a>00589         {
+<a name="l00590"></a>00590           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00591"></a>00591             k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sbet1) * _ep2,
+<a name="l00592"></a>00592             eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
+<a name="l00593"></a>00593           lamscale = _f * cbet1 * A3f(eps) * Math::pi<real>();
+<a name="l00594"></a>00594         }
+<a name="l00595"></a>00595         betscale = lamscale * cbet1;
+<a name="l00596"></a>00596 
+<a name="l00597"></a>00597         x = (lam12 - Math::pi<real>()) / lamscale;
+<a name="l00598"></a>00598         y = sbet12a / betscale;
+<a name="l00599"></a>00599       } <span class="keywordflow">else</span> {                  <span class="comment">// _f < 0</span>
+<a name="l00600"></a>00600         <span class="comment">// x = dlat, y = dlong</span>
+<a name="l00601"></a>00601         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00602"></a>00602           cbet12a = cbet2 * cbet1 - sbet2 * sbet1,
+<a name="l00603"></a>00603           bet12a = atan2(sbet12a, cbet12a);
+<a name="l00604"></a>00604         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> m12a, m0, dummy;
+<a name="l00605"></a>00605         <span class="comment">// In the case of lon12 = 180, this repeats a calculation made in</span>
+<a name="l00606"></a>00606         <span class="comment">// Inverse.</span>
+<a name="l00607"></a>00607         Lengths(_n, Math::pi<real>() + bet12a, sbet1, -cbet1, sbet2, cbet2,
+<a name="l00608"></a>00608                 cbet1, cbet2, dummy, m12a, m0, <span class="keyword">false</span>,
+<a name="l00609"></a>00609                 dummy, dummy, C1a, C2a);
+<a name="l00610"></a>00610         x = -1 + m12a/(_f1 * cbet1 * cbet2 * m0 * Math::pi<real>());
+<a name="l00611"></a>00611         betscale = x < -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) ? sbet12a / x :
+<a name="l00612"></a>00612           -_f * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1) * Math::pi<real>();
+<a name="l00613"></a>00613         lamscale = betscale / cbet1;
+<a name="l00614"></a>00614         y = (lam12 - Math::pi<real>()) / lamscale;
+<a name="l00615"></a>00615       }
+<a name="l00616"></a>00616 
+<a name="l00617"></a>00617       <span class="keywordflow">if</span> (y > -tol1_ && x > -1 - xthresh_) {
+<a name="l00618"></a>00618         <span class="comment">// strip near cut</span>
+<a name="l00619"></a>00619         <span class="keywordflow">if</span> (_f >= 0) {
+<a name="l00620"></a>00620           salp1 = min(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x)); calp1 = - sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(salp1));
+<a name="l00621"></a>00621         } <span class="keywordflow">else</span> {
+<a name="l00622"></a>00622           calp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x > -tol1_ ? 0 : -1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x));
+<a name="l00623"></a>00623           salp1 = sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp1));
+<a name="l00624"></a>00624         }
+<a name="l00625"></a>00625       } <span class="keywordflow">else</span> {
+<a name="l00626"></a>00626         <span class="comment">// Estimate alp1, by solving the astroid problem.</span>
+<a name="l00627"></a>00627         <span class="comment">//</span>
+<a name="l00628"></a>00628         <span class="comment">// Could estimate alpha1 = theta + pi/2, directly, i.e.,</span>
+<a name="l00629"></a>00629         <span class="comment">//   calp1 = y/k; salp1 = -x/(1+k);  for _f >= 0</span>
+<a name="l00630"></a>00630         <span class="comment">//   calp1 = x/(1+k); salp1 = -y/k;  for _f < 0 (need to check)</span>
+<a name="l00631"></a>00631         <span class="comment">//</span>
+<a name="l00632"></a>00632         <span class="comment">// However, it's better to estimate omg12 from astroid and use</span>
+<a name="l00633"></a>00633         <span class="comment">// spherical formula to compute alp1.  This reduces the mean number of</span>
+<a name="l00634"></a>00634         <span class="comment">// Newton iterations for astroid cases from 2.24 (min 0, max 6) to 2.12</span>
+<a name="l00635"></a>00635         <span class="comment">// (min 0 max 5).  The changes in the number of iterations are as</span>
+<a name="l00636"></a>00636         <span class="comment">// follows:</span>
+<a name="l00637"></a>00637         <span class="comment">//</span>
+<a name="l00638"></a>00638         <span class="comment">// change percent</span>
+<a name="l00639"></a>00639         <span class="comment">//    1       5</span>
+<a name="l00640"></a>00640         <span class="comment">//    0      78</span>
+<a name="l00641"></a>00641         <span class="comment">//   -1      16</span>
+<a name="l00642"></a>00642         <span class="comment">//   -2       0.6</span>
+<a name="l00643"></a>00643         <span class="comment">//   -3       0.04</span>
+<a name="l00644"></a>00644         <span class="comment">//   -4       0.002</span>
+<a name="l00645"></a>00645         <span class="comment">//</span>
+<a name="l00646"></a>00646         <span class="comment">// The histogram of iterations is (m = number of iterations estimating</span>
+<a name="l00647"></a>00647         <span class="comment">// alp1 directly, n = number of iterations estimating via omg12, total</span>
+<a name="l00648"></a>00648         <span class="comment">// number of trials = 148605):</span>
+<a name="l00649"></a>00649         <span class="comment">//</span>
+<a name="l00650"></a>00650         <span class="comment">//  iter    m      n</span>
+<a name="l00651"></a>00651         <span class="comment">//    0   148    186</span>
+<a name="l00652"></a>00652         <span class="comment">//    1 13046  13845</span>
+<a name="l00653"></a>00653         <span class="comment">//    2 93315 102225</span>
+<a name="l00654"></a>00654         <span class="comment">//    3 36189  32341</span>
+<a name="l00655"></a>00655         <span class="comment">//    4  5396      7</span>
+<a name="l00656"></a>00656         <span class="comment">//    5   455      1</span>
+<a name="l00657"></a>00657         <span class="comment">//    6    56      0</span>
+<a name="l00658"></a>00658         <span class="comment">//</span>
+<a name="l00659"></a>00659         <span class="comment">// Because omg12 is near pi, estimate work with omg12a = pi - omg12</span>
+<a name="l00660"></a>00660         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = Astroid(x, y);
+<a name="l00661"></a>00661         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00662"></a>00662           omg12a = lamscale * ( _f >= 0 ? -x * k/(1 + k) : -y * (1 + k)/k ),
+<a name="l00663"></a>00663           somg12 = sin(omg12a), comg12 = -cos(omg12a);
+<a name="l00664"></a>00664         <span class="comment">// Update spherical estimate of alp1 using omg12 instead of lam12</span>
+<a name="l00665"></a>00665         salp1 = cbet2 * somg12;
+<a name="l00666"></a>00666         calp1 = sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 - comg12);
+<a name="l00667"></a>00667       }
+<a name="l00668"></a>00668     }
+<a name="l00669"></a>00669     SinCosNorm(salp1, calp1);
+<a name="l00670"></a>00670     <span class="keywordflow">return</span> sig12;
+<a name="l00671"></a>00671   }
+<a name="l00672"></a>00672 
+<a name="l00673"></a>00673   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00674"></a>00674                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
+<a name="l00675"></a>00675                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
+<a name="l00676"></a>00676                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
+<a name="l00677"></a>00677                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1,
+<a name="l00678"></a>00678                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
+<a name="l00679"></a>00679                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12,
+<a name="l00680"></a>00680                                 <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
+<a name="l00681"></a>00681                                 <span class="comment">// Scratch areas of the right size</span>
+<a name="l00682"></a>00682                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[]) <span class="keyword">const</span>
+<a name="l00683"></a>00683     <span class="keywordflow">throw</span>() {
+<a name="l00684"></a>00684 
+<a name="l00685"></a>00685     <span class="keywordflow">if</span> (sbet1 == 0 && calp1 == 0)
+<a name="l00686"></a>00686       <span class="comment">// Break degeneracy of equatorial line.  This case has already been</span>
+<a name="l00687"></a>00687       <span class="comment">// handled.</span>
+<a name="l00688"></a>00688       calp1 = -tiny_;
+<a name="l00689"></a>00689 
+<a name="l00690"></a>00690     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00691"></a>00691       <span class="comment">// sin(alp1) * cos(bet1) = sin(alp0)</span>
+<a name="l00692"></a>00692       salp0 = salp1 * cbet1,
+<a name="l00693"></a>00693       calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
+<a name="l00694"></a>00694 
+<a name="l00695"></a>00695     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> somg1, comg1, somg2, comg2, omg12, lam12;
+<a name="l00696"></a>00696     <span class="comment">// tan(bet1) = tan(sig1) * cos(alp1)</span>
+<a name="l00697"></a>00697     <span class="comment">// tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)</span>
+<a name="l00698"></a>00698     ssig1 = sbet1; somg1 = salp0 * sbet1;
+<a name="l00699"></a>00699     csig1 = comg1 = calp1 * cbet1;
+<a name="l00700"></a>00700     SinCosNorm(ssig1, csig1);
+<a name="l00701"></a>00701     <span class="comment">// SinCosNorm(somg1, comg1); -- don't need to normalize!</span>
+<a name="l00702"></a>00702 
+<a name="l00703"></a>00703     <span class="comment">// Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful</span>
+<a name="l00704"></a>00704     <span class="comment">// about this case, since this can yield singularities in the Newton</span>
+<a name="l00705"></a>00705     <span class="comment">// iteration.</span>
+<a name="l00706"></a>00706     <span class="comment">// sin(alp2) * cos(bet2) = sin(alp0)</span>
+<a name="l00707"></a>00707     salp2 = cbet2 != cbet1 ? salp0 / cbet2 : salp1;
+<a name="l00708"></a>00708     <span class="comment">// calp2 = sqrt(1 - sq(salp2))</span>
+<a name="l00709"></a>00709     <span class="comment">//       = sqrt(sq(calp0) - sq(sbet2)) / cbet2</span>
+<a name="l00710"></a>00710     <span class="comment">// and subst for calp0 and rearrange to give (choose positive sqrt</span>
+<a name="l00711"></a>00711     <span class="comment">// to give alp2 in [0, pi/2]).</span>
+<a name="l00712"></a>00712     calp2 = cbet2 != cbet1 || abs(sbet2) != -sbet1 ?
+<a name="l00713"></a>00713       sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp1 * cbet1) +
+<a name="l00714"></a>00714            (cbet1 < -sbet1 ?
+<a name="l00715"></a>00715             (cbet2 - cbet1) * (cbet1 + cbet2) :
+<a name="l00716"></a>00716             (sbet1 - sbet2) * (sbet1 + sbet2))) / cbet2 :
+<a name="l00717"></a>00717       abs(calp1);
+<a name="l00718"></a>00718     <span class="comment">// tan(bet2) = tan(sig2) * cos(alp2)</span>
+<a name="l00719"></a>00719     <span class="comment">// tan(omg2) = sin(alp0) * tan(sig2).</span>
+<a name="l00720"></a>00720     ssig2 = sbet2; somg2 = salp0 * sbet2;
+<a name="l00721"></a>00721     csig2 = comg2 = calp2 * cbet2;
+<a name="l00722"></a>00722     SinCosNorm(ssig2, csig2);
+<a name="l00723"></a>00723     <span class="comment">// SinCosNorm(somg2, comg2); -- don't need to normalize!</span>
+<a name="l00724"></a>00724 
+<a name="l00725"></a>00725     <span class="comment">// sig12 = sig2 - sig1, limit to [0, pi]</span>
+<a name="l00726"></a>00726     sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
+<a name="l00727"></a>00727                   csig1 * csig2 + ssig1 * ssig2);
+<a name="l00728"></a>00728 
+<a name="l00729"></a>00729     <span class="comment">// omg12 = omg2 - omg1, limit to [0, pi]</span>
+<a name="l00730"></a>00730     omg12 = atan2(max(comg1 * somg2 - somg1 * comg2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
+<a name="l00731"></a>00731                   comg1 * comg2 + somg1 * somg2);
+<a name="l00732"></a>00732     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> B312, h0;
+<a name="l00733"></a>00733     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp0) * _ep2;
+<a name="l00734"></a>00734     eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
+<a name="l00735"></a>00735     C3f(eps, C3a);
+<a name="l00736"></a>00736     B312 = (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C3a, nC3_-1) -
+<a name="l00737"></a>00737             SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C3a, nC3_-1));
+<a name="l00738"></a>00738     h0 = -_f * A3f(eps);
+<a name="l00739"></a>00739     domg12 = salp0 * h0 * (sig12 + B312);
+<a name="l00740"></a>00740     lam12 = omg12 + domg12;
+<a name="l00741"></a>00741 
+<a name="l00742"></a>00742     <span class="keywordflow">if</span> (diffp) {
+<a name="l00743"></a>00743       <span class="keywordflow">if</span> (calp2 == 0)
+<a name="l00744"></a>00744         dlam12 = - 2 * sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1)) / sbet1;
+<a name="l00745"></a>00745       <span class="keywordflow">else</span> {
+<a name="l00746"></a>00746         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dummy;
+<a name="l00747"></a>00747         Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00748"></a>00748                 cbet1, cbet2, dummy, dlam12, dummy,
+<a name="l00749"></a>00749                 <span class="keyword">false</span>, dummy, dummy, C1a, C2a);
+<a name="l00750"></a>00750         dlam12 /= calp2 * cbet2;
+<a name="l00751"></a>00751       }
+<a name="l00752"></a>00752     }
 <a name="l00753"></a>00753 
-<a name="l00754"></a>00754   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00755"></a>00755     <span class="comment">// Evaluation sum(_A3c[k] * eps^k, k, 0, nA3x_-1) by Horner's method</span>
-<a name="l00756"></a>00756     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v = 0;
-<a name="l00757"></a>00757     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nA3x_; i; )
-<a name="l00758"></a>00758       v = eps * v + _A3x[--i];
-<a name="l00759"></a>00759     <span class="keywordflow">return</span> v;
-<a name="l00760"></a>00760   }
-<a name="l00761"></a>00761 
-<a name="l00762"></a>00762   <span class="keywordtype">void</span> Geodesic::C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00763"></a>00763     <span class="comment">// Evaluation C3 coeffs by Horner's method</span>
-<a name="l00764"></a>00764     <span class="comment">// Elements c[1] thru c[nC3_ - 1] are set</span>
-<a name="l00765"></a>00765     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC3x_, k = nC3_ - 1; k; ) {
-<a name="l00766"></a>00766       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
-<a name="l00767"></a>00767       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC3_ - k; i; --i)
-<a name="l00768"></a>00768         t = eps * t + _C3x[--j];
-<a name="l00769"></a>00769       c[k--] = t;
-<a name="l00770"></a>00770     }
-<a name="l00771"></a>00771 
-<a name="l00772"></a>00772     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
-<a name="l00773"></a>00773     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC3_; ) {
-<a name="l00774"></a>00774       mult *= eps;
-<a name="l00775"></a>00775       c[k++] *= mult;
-<a name="l00776"></a>00776     }
-<a name="l00777"></a>00777   }
-<a name="l00778"></a>00778 
-<a name="l00779"></a>00779   <span class="keywordtype">void</span> Geodesic::C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00780"></a>00780     <span class="comment">// Evaluation C4 coeffs by Horner's method</span>
-<a name="l00781"></a>00781     <span class="comment">// Elements c[0] thru c[nC4_ - 1] are set</span>
-<a name="l00782"></a>00782     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC4x_, k = nC4_; k; ) {
-<a name="l00783"></a>00783       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
-<a name="l00784"></a>00784       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC4_ - k + 1; i; --i)
-<a name="l00785"></a>00785         t = k2 * t + _C4x[--j];
-<a name="l00786"></a>00786       c[--k] = t;
-<a name="l00787"></a>00787     }
-<a name="l00788"></a>00788 
-<a name="l00789"></a>00789     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
-<a name="l00790"></a>00790     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC4_; ) {
-<a name="l00791"></a>00791       mult *= k2;
-<a name="l00792"></a>00792       c[k++] *= mult;
-<a name="l00793"></a>00793     }
-<a name="l00794"></a>00794   }
-<a name="l00795"></a>00795 
-<a name="l00796"></a>00796   <span class="comment">// Generated by Maxima on 2010-09-04 10:26:17-04:00</span>
-<a name="l00797"></a>00797 
-<a name="l00798"></a>00798   <span class="comment">// The scale factor A1-1 = mean value of I1-1</span>
-<a name="l00799"></a>00799   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
-<a name="l00800"></a>00800     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00801"></a>00801       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l00802"></a>00802       t;
-<a name="l00803"></a>00803     <span class="keywordflow">switch</span> (nA1_/2) {
-<a name="l00804"></a>00804     <span class="keywordflow">case</span> 0:
-<a name="l00805"></a>00805       t = 0;
-<a name="l00806"></a>00806       <span class="keywordflow">break</span>;
-<a name="l00807"></a>00807     <span class="keywordflow">case</span> 1:
-<a name="l00808"></a>00808       t = eps2/4;
+<a name="l00754"></a>00754     <span class="keywordflow">return</span> lam12;
+<a name="l00755"></a>00755   }
+<a name="l00756"></a>00756 
+<a name="l00757"></a>00757   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00758"></a>00758     <span class="comment">// Evaluation sum(_A3c[k] * eps^k, k, 0, nA3x_-1) by Horner's method</span>
+<a name="l00759"></a>00759     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v = 0;
+<a name="l00760"></a>00760     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nA3x_; i; )
+<a name="l00761"></a>00761       v = eps * v + _A3x[--i];
+<a name="l00762"></a>00762     <span class="keywordflow">return</span> v;
+<a name="l00763"></a>00763   }
+<a name="l00764"></a>00764 
+<a name="l00765"></a>00765   <span class="keywordtype">void</span> Geodesic::C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00766"></a>00766     <span class="comment">// Evaluation C3 coeffs by Horner's method</span>
+<a name="l00767"></a>00767     <span class="comment">// Elements c[1] thru c[nC3_ - 1] are set</span>
+<a name="l00768"></a>00768     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC3x_, k = nC3_ - 1; k; ) {
+<a name="l00769"></a>00769       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
+<a name="l00770"></a>00770       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC3_ - k; i; --i)
+<a name="l00771"></a>00771         t = eps * t + _C3x[--j];
+<a name="l00772"></a>00772       c[k--] = t;
+<a name="l00773"></a>00773     }
+<a name="l00774"></a>00774 
+<a name="l00775"></a>00775     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
+<a name="l00776"></a>00776     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC3_; ) {
+<a name="l00777"></a>00777       mult *= eps;
+<a name="l00778"></a>00778       c[k++] *= mult;
+<a name="l00779"></a>00779     }
+<a name="l00780"></a>00780   }
+<a name="l00781"></a>00781 
+<a name="l00782"></a>00782   <span class="keywordtype">void</span> Geodesic::C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00783"></a>00783     <span class="comment">// Evaluation C4 coeffs by Horner's method</span>
+<a name="l00784"></a>00784     <span class="comment">// Elements c[0] thru c[nC4_ - 1] are set</span>
+<a name="l00785"></a>00785     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC4x_, k = nC4_; k; ) {
+<a name="l00786"></a>00786       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
+<a name="l00787"></a>00787       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC4_ - k + 1; i; --i)
+<a name="l00788"></a>00788         t = k2 * t + _C4x[--j];
+<a name="l00789"></a>00789       c[--k] = t;
+<a name="l00790"></a>00790     }
+<a name="l00791"></a>00791 
+<a name="l00792"></a>00792     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
+<a name="l00793"></a>00793     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC4_; ) {
+<a name="l00794"></a>00794       mult *= k2;
+<a name="l00795"></a>00795       c[k++] *= mult;
+<a name="l00796"></a>00796     }
+<a name="l00797"></a>00797   }
+<a name="l00798"></a>00798 
+<a name="l00799"></a>00799   <span class="comment">// Generated by Maxima on 2010-09-04 10:26:17-04:00</span>
+<a name="l00800"></a>00800 
+<a name="l00801"></a>00801   <span class="comment">// The scale factor A1-1 = mean value of I1-1</span>
+<a name="l00802"></a>00802   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
+<a name="l00803"></a>00803     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00804"></a>00804       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l00805"></a>00805       t;
+<a name="l00806"></a>00806     <span class="keywordflow">switch</span> (nA1_/2) {
+<a name="l00807"></a>00807     <span class="keywordflow">case</span> 0:
+<a name="l00808"></a>00808       t = 0;
 <a name="l00809"></a>00809       <span class="keywordflow">break</span>;
-<a name="l00810"></a>00810     <span class="keywordflow">case</span> 2:
-<a name="l00811"></a>00811       t = eps2*(eps2+16)/64;
+<a name="l00810"></a>00810     <span class="keywordflow">case</span> 1:
+<a name="l00811"></a>00811       t = eps2/4;
 <a name="l00812"></a>00812       <span class="keywordflow">break</span>;
-<a name="l00813"></a>00813     <span class="keywordflow">case</span> 3:
-<a name="l00814"></a>00814       t = eps2*(eps2*(eps2+4)+64)/256;
+<a name="l00813"></a>00813     <span class="keywordflow">case</span> 2:
+<a name="l00814"></a>00814       t = eps2*(eps2+16)/64;
 <a name="l00815"></a>00815       <span class="keywordflow">break</span>;
-<a name="l00816"></a>00816     <span class="keywordflow">case</span> 4:
-<a name="l00817"></a>00817       t = eps2*(eps2*(eps2*(25*eps2+64)+256)+4096)/16384;
+<a name="l00816"></a>00816     <span class="keywordflow">case</span> 3:
+<a name="l00817"></a>00817       t = eps2*(eps2*(eps2+4)+64)/256;
 <a name="l00818"></a>00818       <span class="keywordflow">break</span>;
-<a name="l00819"></a>00819     <span class="keywordflow">default</span>:
-<a name="l00820"></a>00820       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA1_ >= 0 && nA1_ <= 8, <span class="stringliteral">"Bad value of nA1_"</span>);
-<a name="l00821"></a>00821       t = 0;
-<a name="l00822"></a>00822     }
-<a name="l00823"></a>00823     <span class="keywordflow">return</span> (t + eps) / (1 - eps);
-<a name="l00824"></a>00824   }
-<a name="l00825"></a>00825 
-<a name="l00826"></a>00826   <span class="comment">// The coefficients C1[l] in the Fourier expansion of B1</span>
-<a name="l00827"></a>00827   <span class="keywordtype">void</span> Geodesic::C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
-<a name="l00828"></a>00828     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00829"></a>00829       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l00830"></a>00830       d = eps;
-<a name="l00831"></a>00831     <span class="keywordflow">switch</span> (nC1_) {
-<a name="l00832"></a>00832     <span class="keywordflow">case</span> 0:
-<a name="l00833"></a>00833       <span class="keywordflow">break</span>;
-<a name="l00834"></a>00834     <span class="keywordflow">case</span> 1:
-<a name="l00835"></a>00835       c[1] = -d/2;
+<a name="l00819"></a>00819     <span class="keywordflow">case</span> 4:
+<a name="l00820"></a>00820       t = eps2*(eps2*(eps2*(25*eps2+64)+256)+4096)/16384;
+<a name="l00821"></a>00821       <span class="keywordflow">break</span>;
+<a name="l00822"></a>00822     <span class="keywordflow">default</span>:
+<a name="l00823"></a>00823       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA1_ >= 0 && nA1_ <= 8, <span class="stringliteral">"Bad value of nA1_"</span>);
+<a name="l00824"></a>00824       t = 0;
+<a name="l00825"></a>00825     }
+<a name="l00826"></a>00826     <span class="keywordflow">return</span> (t + eps) / (1 - eps);
+<a name="l00827"></a>00827   }
+<a name="l00828"></a>00828 
+<a name="l00829"></a>00829   <span class="comment">// The coefficients C1[l] in the Fourier expansion of B1</span>
+<a name="l00830"></a>00830   <span class="keywordtype">void</span> Geodesic::C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
+<a name="l00831"></a>00831     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00832"></a>00832       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l00833"></a>00833       d = eps;
+<a name="l00834"></a>00834     <span class="keywordflow">switch</span> (nC1_) {
+<a name="l00835"></a>00835     <span class="keywordflow">case</span> 0:
 <a name="l00836"></a>00836       <span class="keywordflow">break</span>;
-<a name="l00837"></a>00837     <span class="keywordflow">case</span> 2:
+<a name="l00837"></a>00837     <span class="keywordflow">case</span> 1:
 <a name="l00838"></a>00838       c[1] = -d/2;
-<a name="l00839"></a>00839       d *= eps;
-<a name="l00840"></a>00840       c[2] = -d/16;
-<a name="l00841"></a>00841       <span class="keywordflow">break</span>;
-<a name="l00842"></a>00842     <span class="keywordflow">case</span> 3:
-<a name="l00843"></a>00843       c[1] = d*(3*eps2-8)/16;
-<a name="l00844"></a>00844       d *= eps;
-<a name="l00845"></a>00845       c[2] = -d/16;
-<a name="l00846"></a>00846       d *= eps;
-<a name="l00847"></a>00847       c[3] = -d/48;
-<a name="l00848"></a>00848       <span class="keywordflow">break</span>;
-<a name="l00849"></a>00849     <span class="keywordflow">case</span> 4:
-<a name="l00850"></a>00850       c[1] = d*(3*eps2-8)/16;
-<a name="l00851"></a>00851       d *= eps;
-<a name="l00852"></a>00852       c[2] = d*(eps2-2)/32;
-<a name="l00853"></a>00853       d *= eps;
-<a name="l00854"></a>00854       c[3] = -d/48;
-<a name="l00855"></a>00855       d *= eps;
-<a name="l00856"></a>00856       c[4] = -5*d/512;
-<a name="l00857"></a>00857       <span class="keywordflow">break</span>;
-<a name="l00858"></a>00858     <span class="keywordflow">case</span> 5:
-<a name="l00859"></a>00859       c[1] = d*((6-eps2)*eps2-16)/32;
-<a name="l00860"></a>00860       d *= eps;
-<a name="l00861"></a>00861       c[2] = d*(eps2-2)/32;
-<a name="l00862"></a>00862       d *= eps;
-<a name="l00863"></a>00863       c[3] = d*(9*eps2-16)/768;
-<a name="l00864"></a>00864       d *= eps;
-<a name="l00865"></a>00865       c[4] = -5*d/512;
-<a name="l00866"></a>00866       d *= eps;
-<a name="l00867"></a>00867       c[5] = -7*d/1280;
-<a name="l00868"></a>00868       <span class="keywordflow">break</span>;
-<a name="l00869"></a>00869     <span class="keywordflow">case</span> 6:
-<a name="l00870"></a>00870       c[1] = d*((6-eps2)*eps2-16)/32;
-<a name="l00871"></a>00871       d *= eps;
-<a name="l00872"></a>00872       c[2] = d*((64-9*eps2)*eps2-128)/2048;
-<a name="l00873"></a>00873       d *= eps;
-<a name="l00874"></a>00874       c[3] = d*(9*eps2-16)/768;
-<a name="l00875"></a>00875       d *= eps;
-<a name="l00876"></a>00876       c[4] = d*(3*eps2-5)/512;
-<a name="l00877"></a>00877       d *= eps;
-<a name="l00878"></a>00878       c[5] = -7*d/1280;
-<a name="l00879"></a>00879       d *= eps;
-<a name="l00880"></a>00880       c[6] = -7*d/2048;
-<a name="l00881"></a>00881       <span class="keywordflow">break</span>;
-<a name="l00882"></a>00882     <span class="keywordflow">case</span> 7:
-<a name="l00883"></a>00883       c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
-<a name="l00884"></a>00884       d *= eps;
-<a name="l00885"></a>00885       c[2] = d*((64-9*eps2)*eps2-128)/2048;
-<a name="l00886"></a>00886       d *= eps;
-<a name="l00887"></a>00887       c[3] = d*((72-9*eps2)*eps2-128)/6144;
-<a name="l00888"></a>00888       d *= eps;
-<a name="l00889"></a>00889       c[4] = d*(3*eps2-5)/512;
-<a name="l00890"></a>00890       d *= eps;
-<a name="l00891"></a>00891       c[5] = d*(35*eps2-56)/10240;
-<a name="l00892"></a>00892       d *= eps;
-<a name="l00893"></a>00893       c[6] = -7*d/2048;
-<a name="l00894"></a>00894       d *= eps;
-<a name="l00895"></a>00895       c[7] = -33*d/14336;
-<a name="l00896"></a>00896       <span class="keywordflow">break</span>;
-<a name="l00897"></a>00897     <span class="keywordflow">case</span> 8:
-<a name="l00898"></a>00898       c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
-<a name="l00899"></a>00899       d *= eps;
-<a name="l00900"></a>00900       c[2] = d*(eps2*(eps2*(7*eps2-18)+128)-256)/4096;
-<a name="l00901"></a>00901       d *= eps;
-<a name="l00902"></a>00902       c[3] = d*((72-9*eps2)*eps2-128)/6144;
-<a name="l00903"></a>00903       d *= eps;
-<a name="l00904"></a>00904       c[4] = d*((96-11*eps2)*eps2-160)/16384;
-<a name="l00905"></a>00905       d *= eps;
-<a name="l00906"></a>00906       c[5] = d*(35*eps2-56)/10240;
-<a name="l00907"></a>00907       d *= eps;
-<a name="l00908"></a>00908       c[6] = d*(9*eps2-14)/4096;
-<a name="l00909"></a>00909       d *= eps;
-<a name="l00910"></a>00910       c[7] = -33*d/14336;
-<a name="l00911"></a>00911       d *= eps;
-<a name="l00912"></a>00912       c[8] = -429*d/262144;
-<a name="l00913"></a>00913       <span class="keywordflow">break</span>;
-<a name="l00914"></a>00914     <span class="keywordflow">default</span>:
-<a name="l00915"></a>00915       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1_ >= 0 && nC1_ <= 8, <span class="stringliteral">"Bad value of nC1_"</span>);
-<a name="l00916"></a>00916     }
-<a name="l00917"></a>00917   }
-<a name="l00918"></a>00918 
-<a name="l00919"></a>00919   <span class="comment">// The coefficients C1p[l] in the Fourier expansion of B1p</span>
-<a name="l00920"></a>00920   <span class="keywordtype">void</span> Geodesic::C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
-<a name="l00921"></a>00921     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00922"></a>00922       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l00923"></a>00923       d = eps;
-<a name="l00924"></a>00924     <span class="keywordflow">switch</span> (nC1p_) {
-<a name="l00925"></a>00925     <span class="keywordflow">case</span> 0:
-<a name="l00926"></a>00926       <span class="keywordflow">break</span>;
-<a name="l00927"></a>00927     <span class="keywordflow">case</span> 1:
-<a name="l00928"></a>00928       c[1] = d/2;
+<a name="l00839"></a>00839       <span class="keywordflow">break</span>;
+<a name="l00840"></a>00840     <span class="keywordflow">case</span> 2:
+<a name="l00841"></a>00841       c[1] = -d/2;
+<a name="l00842"></a>00842       d *= eps;
+<a name="l00843"></a>00843       c[2] = -d/16;
+<a name="l00844"></a>00844       <span class="keywordflow">break</span>;
+<a name="l00845"></a>00845     <span class="keywordflow">case</span> 3:
+<a name="l00846"></a>00846       c[1] = d*(3*eps2-8)/16;
+<a name="l00847"></a>00847       d *= eps;
+<a name="l00848"></a>00848       c[2] = -d/16;
+<a name="l00849"></a>00849       d *= eps;
+<a name="l00850"></a>00850       c[3] = -d/48;
+<a name="l00851"></a>00851       <span class="keywordflow">break</span>;
+<a name="l00852"></a>00852     <span class="keywordflow">case</span> 4:
+<a name="l00853"></a>00853       c[1] = d*(3*eps2-8)/16;
+<a name="l00854"></a>00854       d *= eps;
+<a name="l00855"></a>00855       c[2] = d*(eps2-2)/32;
+<a name="l00856"></a>00856       d *= eps;
+<a name="l00857"></a>00857       c[3] = -d/48;
+<a name="l00858"></a>00858       d *= eps;
+<a name="l00859"></a>00859       c[4] = -5*d/512;
+<a name="l00860"></a>00860       <span class="keywordflow">break</span>;
+<a name="l00861"></a>00861     <span class="keywordflow">case</span> 5:
+<a name="l00862"></a>00862       c[1] = d*((6-eps2)*eps2-16)/32;
+<a name="l00863"></a>00863       d *= eps;
+<a name="l00864"></a>00864       c[2] = d*(eps2-2)/32;
+<a name="l00865"></a>00865       d *= eps;
+<a name="l00866"></a>00866       c[3] = d*(9*eps2-16)/768;
+<a name="l00867"></a>00867       d *= eps;
+<a name="l00868"></a>00868       c[4] = -5*d/512;
+<a name="l00869"></a>00869       d *= eps;
+<a name="l00870"></a>00870       c[5] = -7*d/1280;
+<a name="l00871"></a>00871       <span class="keywordflow">break</span>;
+<a name="l00872"></a>00872     <span class="keywordflow">case</span> 6:
+<a name="l00873"></a>00873       c[1] = d*((6-eps2)*eps2-16)/32;
+<a name="l00874"></a>00874       d *= eps;
+<a name="l00875"></a>00875       c[2] = d*((64-9*eps2)*eps2-128)/2048;
+<a name="l00876"></a>00876       d *= eps;
+<a name="l00877"></a>00877       c[3] = d*(9*eps2-16)/768;
+<a name="l00878"></a>00878       d *= eps;
+<a name="l00879"></a>00879       c[4] = d*(3*eps2-5)/512;
+<a name="l00880"></a>00880       d *= eps;
+<a name="l00881"></a>00881       c[5] = -7*d/1280;
+<a name="l00882"></a>00882       d *= eps;
+<a name="l00883"></a>00883       c[6] = -7*d/2048;
+<a name="l00884"></a>00884       <span class="keywordflow">break</span>;
+<a name="l00885"></a>00885     <span class="keywordflow">case</span> 7:
+<a name="l00886"></a>00886       c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
+<a name="l00887"></a>00887       d *= eps;
+<a name="l00888"></a>00888       c[2] = d*((64-9*eps2)*eps2-128)/2048;
+<a name="l00889"></a>00889       d *= eps;
+<a name="l00890"></a>00890       c[3] = d*((72-9*eps2)*eps2-128)/6144;
+<a name="l00891"></a>00891       d *= eps;
+<a name="l00892"></a>00892       c[4] = d*(3*eps2-5)/512;
+<a name="l00893"></a>00893       d *= eps;
+<a name="l00894"></a>00894       c[5] = d*(35*eps2-56)/10240;
+<a name="l00895"></a>00895       d *= eps;
+<a name="l00896"></a>00896       c[6] = -7*d/2048;
+<a name="l00897"></a>00897       d *= eps;
+<a name="l00898"></a>00898       c[7] = -33*d/14336;
+<a name="l00899"></a>00899       <span class="keywordflow">break</span>;
+<a name="l00900"></a>00900     <span class="keywordflow">case</span> 8:
+<a name="l00901"></a>00901       c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
+<a name="l00902"></a>00902       d *= eps;
+<a name="l00903"></a>00903       c[2] = d*(eps2*(eps2*(7*eps2-18)+128)-256)/4096;
+<a name="l00904"></a>00904       d *= eps;
+<a name="l00905"></a>00905       c[3] = d*((72-9*eps2)*eps2-128)/6144;
+<a name="l00906"></a>00906       d *= eps;
+<a name="l00907"></a>00907       c[4] = d*((96-11*eps2)*eps2-160)/16384;
+<a name="l00908"></a>00908       d *= eps;
+<a name="l00909"></a>00909       c[5] = d*(35*eps2-56)/10240;
+<a name="l00910"></a>00910       d *= eps;
+<a name="l00911"></a>00911       c[6] = d*(9*eps2-14)/4096;
+<a name="l00912"></a>00912       d *= eps;
+<a name="l00913"></a>00913       c[7] = -33*d/14336;
+<a name="l00914"></a>00914       d *= eps;
+<a name="l00915"></a>00915       c[8] = -429*d/262144;
+<a name="l00916"></a>00916       <span class="keywordflow">break</span>;
+<a name="l00917"></a>00917     <span class="keywordflow">default</span>:
+<a name="l00918"></a>00918       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1_ >= 0 && nC1_ <= 8, <span class="stringliteral">"Bad value of nC1_"</span>);
+<a name="l00919"></a>00919     }
+<a name="l00920"></a>00920   }
+<a name="l00921"></a>00921 
+<a name="l00922"></a>00922   <span class="comment">// The coefficients C1p[l] in the Fourier expansion of B1p</span>
+<a name="l00923"></a>00923   <span class="keywordtype">void</span> Geodesic::C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
+<a name="l00924"></a>00924     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00925"></a>00925       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l00926"></a>00926       d = eps;
+<a name="l00927"></a>00927     <span class="keywordflow">switch</span> (nC1p_) {
+<a name="l00928"></a>00928     <span class="keywordflow">case</span> 0:
 <a name="l00929"></a>00929       <span class="keywordflow">break</span>;
-<a name="l00930"></a>00930     <span class="keywordflow">case</span> 2:
+<a name="l00930"></a>00930     <span class="keywordflow">case</span> 1:
 <a name="l00931"></a>00931       c[1] = d/2;
-<a name="l00932"></a>00932       d *= eps;
-<a name="l00933"></a>00933       c[2] = 5*d/16;
-<a name="l00934"></a>00934       <span class="keywordflow">break</span>;
-<a name="l00935"></a>00935     <span class="keywordflow">case</span> 3:
-<a name="l00936"></a>00936       c[1] = d*(16-9*eps2)/32;
-<a name="l00937"></a>00937       d *= eps;
-<a name="l00938"></a>00938       c[2] = 5*d/16;
-<a name="l00939"></a>00939       d *= eps;
-<a name="l00940"></a>00940       c[3] = 29*d/96;
-<a name="l00941"></a>00941       <span class="keywordflow">break</span>;
-<a name="l00942"></a>00942     <span class="keywordflow">case</span> 4:
-<a name="l00943"></a>00943       c[1] = d*(16-9*eps2)/32;
-<a name="l00944"></a>00944       d *= eps;
-<a name="l00945"></a>00945       c[2] = d*(30-37*eps2)/96;
-<a name="l00946"></a>00946       d *= eps;
-<a name="l00947"></a>00947       c[3] = 29*d/96;
-<a name="l00948"></a>00948       d *= eps;
-<a name="l00949"></a>00949       c[4] = 539*d/1536;
-<a name="l00950"></a>00950       <span class="keywordflow">break</span>;
-<a name="l00951"></a>00951     <span class="keywordflow">case</span> 5:
-<a name="l00952"></a>00952       c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-<a name="l00953"></a>00953       d *= eps;
-<a name="l00954"></a>00954       c[2] = d*(30-37*eps2)/96;
-<a name="l00955"></a>00955       d *= eps;
-<a name="l00956"></a>00956       c[3] = d*(116-225*eps2)/384;
-<a name="l00957"></a>00957       d *= eps;
-<a name="l00958"></a>00958       c[4] = 539*d/1536;
-<a name="l00959"></a>00959       d *= eps;
-<a name="l00960"></a>00960       c[5] = 3467*d/7680;
-<a name="l00961"></a>00961       <span class="keywordflow">break</span>;
-<a name="l00962"></a>00962     <span class="keywordflow">case</span> 6:
-<a name="l00963"></a>00963       c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-<a name="l00964"></a>00964       d *= eps;
-<a name="l00965"></a>00965       c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-<a name="l00966"></a>00966       d *= eps;
-<a name="l00967"></a>00967       c[3] = d*(116-225*eps2)/384;
-<a name="l00968"></a>00968       d *= eps;
-<a name="l00969"></a>00969       c[4] = d*(2695-7173*eps2)/7680;
-<a name="l00970"></a>00970       d *= eps;
-<a name="l00971"></a>00971       c[5] = 3467*d/7680;
-<a name="l00972"></a>00972       d *= eps;
-<a name="l00973"></a>00973       c[6] = 38081*d/61440;
-<a name="l00974"></a>00974       <span class="keywordflow">break</span>;
-<a name="l00975"></a>00975     <span class="keywordflow">case</span> 7:
-<a name="l00976"></a>00976       c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
-<a name="l00977"></a>00977       d *= eps;
-<a name="l00978"></a>00978       c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-<a name="l00979"></a>00979       d *= eps;
-<a name="l00980"></a>00980       c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
-<a name="l00981"></a>00981       d *= eps;
-<a name="l00982"></a>00982       c[4] = d*(2695-7173*eps2)/7680;
-<a name="l00983"></a>00983       d *= eps;
-<a name="l00984"></a>00984       c[5] = d*(41604-141115*eps2)/92160;
-<a name="l00985"></a>00985       d *= eps;
-<a name="l00986"></a>00986       c[6] = 38081*d/61440;
-<a name="l00987"></a>00987       d *= eps;
-<a name="l00988"></a>00988       c[7] = 459485*d/516096;
-<a name="l00989"></a>00989       <span class="keywordflow">break</span>;
-<a name="l00990"></a>00990     <span class="keywordflow">case</span> 8:
-<a name="l00991"></a>00991       c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
-<a name="l00992"></a>00992       d *= eps;
-<a name="l00993"></a>00993       c[2] = d*(eps2*((120150-86171*eps2)*eps2-142080)+115200)/368640;
-<a name="l00994"></a>00994       d *= eps;
-<a name="l00995"></a>00995       c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
-<a name="l00996"></a>00996       d *= eps;
-<a name="l00997"></a>00997       c[4] = d*(eps2*(1082857*eps2-688608)+258720)/737280;
-<a name="l00998"></a>00998       d *= eps;
-<a name="l00999"></a>00999       c[5] = d*(41604-141115*eps2)/92160;
-<a name="l01000"></a>01000       d *= eps;
-<a name="l01001"></a>01001       c[6] = d*(533134-2200311*eps2)/860160;
-<a name="l01002"></a>01002       d *= eps;
-<a name="l01003"></a>01003       c[7] = 459485*d/516096;
-<a name="l01004"></a>01004       d *= eps;
-<a name="l01005"></a>01005       c[8] = 109167851*d/82575360;
-<a name="l01006"></a>01006       <span class="keywordflow">break</span>;
-<a name="l01007"></a>01007     <span class="keywordflow">default</span>:
-<a name="l01008"></a>01008       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1p_ >= 0 && nC1p_ <= 8, <span class="stringliteral">"Bad value of nC1p_"</span>);
-<a name="l01009"></a>01009     }
-<a name="l01010"></a>01010   }
-<a name="l01011"></a>01011 
-<a name="l01012"></a>01012   <span class="comment">// The scale factor A2-1 = mean value of I2-1</span>
-<a name="l01013"></a>01013   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
-<a name="l01014"></a>01014     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l01015"></a>01015       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l01016"></a>01016       t;
-<a name="l01017"></a>01017     <span class="keywordflow">switch</span> (nA2_/2) {
-<a name="l01018"></a>01018     <span class="keywordflow">case</span> 0:
-<a name="l01019"></a>01019       t = 0;
-<a name="l01020"></a>01020       <span class="keywordflow">break</span>;
-<a name="l01021"></a>01021     <span class="keywordflow">case</span> 1:
-<a name="l01022"></a>01022       t = eps2/4;
+<a name="l00932"></a>00932       <span class="keywordflow">break</span>;
+<a name="l00933"></a>00933     <span class="keywordflow">case</span> 2:
+<a name="l00934"></a>00934       c[1] = d/2;
+<a name="l00935"></a>00935       d *= eps;
+<a name="l00936"></a>00936       c[2] = 5*d/16;
+<a name="l00937"></a>00937       <span class="keywordflow">break</span>;
+<a name="l00938"></a>00938     <span class="keywordflow">case</span> 3:
+<a name="l00939"></a>00939       c[1] = d*(16-9*eps2)/32;
+<a name="l00940"></a>00940       d *= eps;
+<a name="l00941"></a>00941       c[2] = 5*d/16;
+<a name="l00942"></a>00942       d *= eps;
+<a name="l00943"></a>00943       c[3] = 29*d/96;
+<a name="l00944"></a>00944       <span class="keywordflow">break</span>;
+<a name="l00945"></a>00945     <span class="keywordflow">case</span> 4:
+<a name="l00946"></a>00946       c[1] = d*(16-9*eps2)/32;
+<a name="l00947"></a>00947       d *= eps;
+<a name="l00948"></a>00948       c[2] = d*(30-37*eps2)/96;
+<a name="l00949"></a>00949       d *= eps;
+<a name="l00950"></a>00950       c[3] = 29*d/96;
+<a name="l00951"></a>00951       d *= eps;
+<a name="l00952"></a>00952       c[4] = 539*d/1536;
+<a name="l00953"></a>00953       <span class="keywordflow">break</span>;
+<a name="l00954"></a>00954     <span class="keywordflow">case</span> 5:
+<a name="l00955"></a>00955       c[1] = d*(eps2*(205*eps2-432)+768)/1536;
+<a name="l00956"></a>00956       d *= eps;
+<a name="l00957"></a>00957       c[2] = d*(30-37*eps2)/96;
+<a name="l00958"></a>00958       d *= eps;
+<a name="l00959"></a>00959       c[3] = d*(116-225*eps2)/384;
+<a name="l00960"></a>00960       d *= eps;
+<a name="l00961"></a>00961       c[4] = 539*d/1536;
+<a name="l00962"></a>00962       d *= eps;
+<a name="l00963"></a>00963       c[5] = 3467*d/7680;
+<a name="l00964"></a>00964       <span class="keywordflow">break</span>;
+<a name="l00965"></a>00965     <span class="keywordflow">case</span> 6:
+<a name="l00966"></a>00966       c[1] = d*(eps2*(205*eps2-432)+768)/1536;
+<a name="l00967"></a>00967       d *= eps;
+<a name="l00968"></a>00968       c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
+<a name="l00969"></a>00969       d *= eps;
+<a name="l00970"></a>00970       c[3] = d*(116-225*eps2)/384;
+<a name="l00971"></a>00971       d *= eps;
+<a name="l00972"></a>00972       c[4] = d*(2695-7173*eps2)/7680;
+<a name="l00973"></a>00973       d *= eps;
+<a name="l00974"></a>00974       c[5] = 3467*d/7680;
+<a name="l00975"></a>00975       d *= eps;
+<a name="l00976"></a>00976       c[6] = 38081*d/61440;
+<a name="l00977"></a>00977       <span class="keywordflow">break</span>;
+<a name="l00978"></a>00978     <span class="keywordflow">case</span> 7:
+<a name="l00979"></a>00979       c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
+<a name="l00980"></a>00980       d *= eps;
+<a name="l00981"></a>00981       c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
+<a name="l00982"></a>00982       d *= eps;
+<a name="l00983"></a>00983       c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
+<a name="l00984"></a>00984       d *= eps;
+<a name="l00985"></a>00985       c[4] = d*(2695-7173*eps2)/7680;
+<a name="l00986"></a>00986       d *= eps;
+<a name="l00987"></a>00987       c[5] = d*(41604-141115*eps2)/92160;
+<a name="l00988"></a>00988       d *= eps;
+<a name="l00989"></a>00989       c[6] = 38081*d/61440;
+<a name="l00990"></a>00990       d *= eps;
+<a name="l00991"></a>00991       c[7] = 459485*d/516096;
+<a name="l00992"></a>00992       <span class="keywordflow">break</span>;
+<a name="l00993"></a>00993     <span class="keywordflow">case</span> 8:
+<a name="l00994"></a>00994       c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
+<a name="l00995"></a>00995       d *= eps;
+<a name="l00996"></a>00996       c[2] = d*(eps2*((120150-86171*eps2)*eps2-142080)+115200)/368640;
+<a name="l00997"></a>00997       d *= eps;
+<a name="l00998"></a>00998       c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
+<a name="l00999"></a>00999       d *= eps;
+<a name="l01000"></a>01000       c[4] = d*(eps2*(1082857*eps2-688608)+258720)/737280;
+<a name="l01001"></a>01001       d *= eps;
+<a name="l01002"></a>01002       c[5] = d*(41604-141115*eps2)/92160;
+<a name="l01003"></a>01003       d *= eps;
+<a name="l01004"></a>01004       c[6] = d*(533134-2200311*eps2)/860160;
+<a name="l01005"></a>01005       d *= eps;
+<a name="l01006"></a>01006       c[7] = 459485*d/516096;
+<a name="l01007"></a>01007       d *= eps;
+<a name="l01008"></a>01008       c[8] = 109167851*d/82575360;
+<a name="l01009"></a>01009       <span class="keywordflow">break</span>;
+<a name="l01010"></a>01010     <span class="keywordflow">default</span>:
+<a name="l01011"></a>01011       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1p_ >= 0 && nC1p_ <= 8, <span class="stringliteral">"Bad value of nC1p_"</span>);
+<a name="l01012"></a>01012     }
+<a name="l01013"></a>01013   }
+<a name="l01014"></a>01014 
+<a name="l01015"></a>01015   <span class="comment">// The scale factor A2-1 = mean value of I2-1</span>
+<a name="l01016"></a>01016   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
+<a name="l01017"></a>01017     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l01018"></a>01018       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l01019"></a>01019       t;
+<a name="l01020"></a>01020     <span class="keywordflow">switch</span> (nA2_/2) {
+<a name="l01021"></a>01021     <span class="keywordflow">case</span> 0:
+<a name="l01022"></a>01022       t = 0;
 <a name="l01023"></a>01023       <span class="keywordflow">break</span>;
-<a name="l01024"></a>01024     <span class="keywordflow">case</span> 2:
-<a name="l01025"></a>01025       t = eps2*(9*eps2+16)/64;
+<a name="l01024"></a>01024     <span class="keywordflow">case</span> 1:
+<a name="l01025"></a>01025       t = eps2/4;
 <a name="l01026"></a>01026       <span class="keywordflow">break</span>;
-<a name="l01027"></a>01027     <span class="keywordflow">case</span> 3:
-<a name="l01028"></a>01028       t = eps2*(eps2*(25*eps2+36)+64)/256;
+<a name="l01027"></a>01027     <span class="keywordflow">case</span> 2:
+<a name="l01028"></a>01028       t = eps2*(9*eps2+16)/64;
 <a name="l01029"></a>01029       <span class="keywordflow">break</span>;
-<a name="l01030"></a>01030     <span class="keywordflow">case</span> 4:
-<a name="l01031"></a>01031       t = eps2*(eps2*(eps2*(1225*eps2+1600)+2304)+4096)/16384;
+<a name="l01030"></a>01030     <span class="keywordflow">case</span> 3:
+<a name="l01031"></a>01031       t = eps2*(eps2*(25*eps2+36)+64)/256;
 <a name="l01032"></a>01032       <span class="keywordflow">break</span>;
-<a name="l01033"></a>01033     <span class="keywordflow">default</span>:
-<a name="l01034"></a>01034       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA2_ >= 0 && nA2_ <= 8, <span class="stringliteral">"Bad value of nA2_"</span>);
-<a name="l01035"></a>01035       t = 0;
-<a name="l01036"></a>01036     }
-<a name="l01037"></a>01037     <span class="keywordflow">return</span> t * (1 - eps) - eps;
-<a name="l01038"></a>01038   }
-<a name="l01039"></a>01039 
-<a name="l01040"></a>01040   <span class="comment">// The coefficients C2[l] in the Fourier expansion of B2</span>
-<a name="l01041"></a>01041   <span class="keywordtype">void</span> Geodesic::C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
-<a name="l01042"></a>01042     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l01043"></a>01043       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l01044"></a>01044       d = eps;
-<a name="l01045"></a>01045     <span class="keywordflow">switch</span> (nC2_) {
-<a name="l01046"></a>01046     <span class="keywordflow">case</span> 0:
-<a name="l01047"></a>01047       <span class="keywordflow">break</span>;
-<a name="l01048"></a>01048     <span class="keywordflow">case</span> 1:
-<a name="l01049"></a>01049       c[1] = d/2;
+<a name="l01033"></a>01033     <span class="keywordflow">case</span> 4:
+<a name="l01034"></a>01034       t = eps2*(eps2*(eps2*(1225*eps2+1600)+2304)+4096)/16384;
+<a name="l01035"></a>01035       <span class="keywordflow">break</span>;
+<a name="l01036"></a>01036     <span class="keywordflow">default</span>:
+<a name="l01037"></a>01037       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA2_ >= 0 && nA2_ <= 8, <span class="stringliteral">"Bad value of nA2_"</span>);
+<a name="l01038"></a>01038       t = 0;
+<a name="l01039"></a>01039     }
+<a name="l01040"></a>01040     <span class="keywordflow">return</span> t * (1 - eps) - eps;
+<a name="l01041"></a>01041   }
+<a name="l01042"></a>01042 
+<a name="l01043"></a>01043   <span class="comment">// The coefficients C2[l] in the Fourier expansion of B2</span>
+<a name="l01044"></a>01044   <span class="keywordtype">void</span> Geodesic::C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
+<a name="l01045"></a>01045     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l01046"></a>01046       eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l01047"></a>01047       d = eps;
+<a name="l01048"></a>01048     <span class="keywordflow">switch</span> (nC2_) {
+<a name="l01049"></a>01049     <span class="keywordflow">case</span> 0:
 <a name="l01050"></a>01050       <span class="keywordflow">break</span>;
-<a name="l01051"></a>01051     <span class="keywordflow">case</span> 2:
+<a name="l01051"></a>01051     <span class="keywordflow">case</span> 1:
 <a name="l01052"></a>01052       c[1] = d/2;
-<a name="l01053"></a>01053       d *= eps;
-<a name="l01054"></a>01054       c[2] = 3*d/16;
-<a name="l01055"></a>01055       <span class="keywordflow">break</span>;
-<a name="l01056"></a>01056     <span class="keywordflow">case</span> 3:
-<a name="l01057"></a>01057       c[1] = d*(eps2+8)/16;
-<a name="l01058"></a>01058       d *= eps;
-<a name="l01059"></a>01059       c[2] = 3*d/16;
-<a name="l01060"></a>01060       d *= eps;
-<a name="l01061"></a>01061       c[3] = 5*d/48;
-<a name="l01062"></a>01062       <span class="keywordflow">break</span>;
-<a name="l01063"></a>01063     <span class="keywordflow">case</span> 4:
-<a name="l01064"></a>01064       c[1] = d*(eps2+8)/16;
-<a name="l01065"></a>01065       d *= eps;
-<a name="l01066"></a>01066       c[2] = d*(eps2+6)/32;
-<a name="l01067"></a>01067       d *= eps;
-<a name="l01068"></a>01068       c[3] = 5*d/48;
-<a name="l01069"></a>01069       d *= eps;
-<a name="l01070"></a>01070       c[4] = 35*d/512;
-<a name="l01071"></a>01071       <span class="keywordflow">break</span>;
-<a name="l01072"></a>01072     <span class="keywordflow">case</span> 5:
-<a name="l01073"></a>01073       c[1] = d*(eps2*(eps2+2)+16)/32;
-<a name="l01074"></a>01074       d *= eps;
-<a name="l01075"></a>01075       c[2] = d*(eps2+6)/32;
-<a name="l01076"></a>01076       d *= eps;
-<a name="l01077"></a>01077       c[3] = d*(15*eps2+80)/768;
-<a name="l01078"></a>01078       d *= eps;
-<a name="l01079"></a>01079       c[4] = 35*d/512;
-<a name="l01080"></a>01080       d *= eps;
-<a name="l01081"></a>01081       c[5] = 63*d/1280;
-<a name="l01082"></a>01082       <span class="keywordflow">break</span>;
-<a name="l01083"></a>01083     <span class="keywordflow">case</span> 6:
-<a name="l01084"></a>01084       c[1] = d*(eps2*(eps2+2)+16)/32;
-<a name="l01085"></a>01085       d *= eps;
-<a name="l01086"></a>01086       c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-<a name="l01087"></a>01087       d *= eps;
-<a name="l01088"></a>01088       c[3] = d*(15*eps2+80)/768;
-<a name="l01089"></a>01089       d *= eps;
-<a name="l01090"></a>01090       c[4] = d*(7*eps2+35)/512;
-<a name="l01091"></a>01091       d *= eps;
-<a name="l01092"></a>01092       c[5] = 63*d/1280;
-<a name="l01093"></a>01093       d *= eps;
-<a name="l01094"></a>01094       c[6] = 77*d/2048;
-<a name="l01095"></a>01095       <span class="keywordflow">break</span>;
-<a name="l01096"></a>01096     <span class="keywordflow">case</span> 7:
-<a name="l01097"></a>01097       c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
-<a name="l01098"></a>01098       d *= eps;
-<a name="l01099"></a>01099       c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-<a name="l01100"></a>01100       d *= eps;
-<a name="l01101"></a>01101       c[3] = d*(eps2*(69*eps2+120)+640)/6144;
-<a name="l01102"></a>01102       d *= eps;
-<a name="l01103"></a>01103       c[4] = d*(7*eps2+35)/512;
-<a name="l01104"></a>01104       d *= eps;
-<a name="l01105"></a>01105       c[5] = d*(105*eps2+504)/10240;
-<a name="l01106"></a>01106       d *= eps;
-<a name="l01107"></a>01107       c[6] = 77*d/2048;
-<a name="l01108"></a>01108       d *= eps;
-<a name="l01109"></a>01109       c[7] = 429*d/14336;
-<a name="l01110"></a>01110       <span class="keywordflow">break</span>;
-<a name="l01111"></a>01111     <span class="keywordflow">case</span> 8:
-<a name="l01112"></a>01112       c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
-<a name="l01113"></a>01113       d *= eps;
-<a name="l01114"></a>01114       c[2] = d*(eps2*(eps2*(47*eps2+70)+128)+768)/4096;
-<a name="l01115"></a>01115       d *= eps;
-<a name="l01116"></a>01116       c[3] = d*(eps2*(69*eps2+120)+640)/6144;
-<a name="l01117"></a>01117       d *= eps;
-<a name="l01118"></a>01118       c[4] = d*(eps2*(133*eps2+224)+1120)/16384;
-<a name="l01119"></a>01119       d *= eps;
-<a name="l01120"></a>01120       c[5] = d*(105*eps2+504)/10240;
-<a name="l01121"></a>01121       d *= eps;
-<a name="l01122"></a>01122       c[6] = d*(33*eps2+154)/4096;
-<a name="l01123"></a>01123       d *= eps;
-<a name="l01124"></a>01124       c[7] = 429*d/14336;
-<a name="l01125"></a>01125       d *= eps;
-<a name="l01126"></a>01126       c[8] = 6435*d/262144;
-<a name="l01127"></a>01127       <span class="keywordflow">break</span>;
-<a name="l01128"></a>01128     <span class="keywordflow">default</span>:
-<a name="l01129"></a>01129       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC2_ >= 0 && nC2_ <= 8, <span class="stringliteral">"Bad value of nC2_"</span>);
-<a name="l01130"></a>01130     }
-<a name="l01131"></a>01131   }
-<a name="l01132"></a>01132 
-<a name="l01133"></a>01133   <span class="comment">// The scale factor A3 = mean value of I3</span>
-<a name="l01134"></a>01134   <span class="keywordtype">void</span> Geodesic::A3coeff() throw() {
-<a name="l01135"></a>01135     <span class="keywordflow">switch</span> (nA3_) {
-<a name="l01136"></a>01136     <span class="keywordflow">case</span> 0:
-<a name="l01137"></a>01137       <span class="keywordflow">break</span>;
-<a name="l01138"></a>01138     <span class="keywordflow">case</span> 1:
-<a name="l01139"></a>01139       _A3x[0] = 1;
+<a name="l01053"></a>01053       <span class="keywordflow">break</span>;
+<a name="l01054"></a>01054     <span class="keywordflow">case</span> 2:
+<a name="l01055"></a>01055       c[1] = d/2;
+<a name="l01056"></a>01056       d *= eps;
+<a name="l01057"></a>01057       c[2] = 3*d/16;
+<a name="l01058"></a>01058       <span class="keywordflow">break</span>;
+<a name="l01059"></a>01059     <span class="keywordflow">case</span> 3:
+<a name="l01060"></a>01060       c[1] = d*(eps2+8)/16;
+<a name="l01061"></a>01061       d *= eps;
+<a name="l01062"></a>01062       c[2] = 3*d/16;
+<a name="l01063"></a>01063       d *= eps;
+<a name="l01064"></a>01064       c[3] = 5*d/48;
+<a name="l01065"></a>01065       <span class="keywordflow">break</span>;
+<a name="l01066"></a>01066     <span class="keywordflow">case</span> 4:
+<a name="l01067"></a>01067       c[1] = d*(eps2+8)/16;
+<a name="l01068"></a>01068       d *= eps;
+<a name="l01069"></a>01069       c[2] = d*(eps2+6)/32;
+<a name="l01070"></a>01070       d *= eps;
+<a name="l01071"></a>01071       c[3] = 5*d/48;
+<a name="l01072"></a>01072       d *= eps;
+<a name="l01073"></a>01073       c[4] = 35*d/512;
+<a name="l01074"></a>01074       <span class="keywordflow">break</span>;
+<a name="l01075"></a>01075     <span class="keywordflow">case</span> 5:
+<a name="l01076"></a>01076       c[1] = d*(eps2*(eps2+2)+16)/32;
+<a name="l01077"></a>01077       d *= eps;
+<a name="l01078"></a>01078       c[2] = d*(eps2+6)/32;
+<a name="l01079"></a>01079       d *= eps;
+<a name="l01080"></a>01080       c[3] = d*(15*eps2+80)/768;
+<a name="l01081"></a>01081       d *= eps;
+<a name="l01082"></a>01082       c[4] = 35*d/512;
+<a name="l01083"></a>01083       d *= eps;
+<a name="l01084"></a>01084       c[5] = 63*d/1280;
+<a name="l01085"></a>01085       <span class="keywordflow">break</span>;
+<a name="l01086"></a>01086     <span class="keywordflow">case</span> 6:
+<a name="l01087"></a>01087       c[1] = d*(eps2*(eps2+2)+16)/32;
+<a name="l01088"></a>01088       d *= eps;
+<a name="l01089"></a>01089       c[2] = d*(eps2*(35*eps2+64)+384)/2048;
+<a name="l01090"></a>01090       d *= eps;
+<a name="l01091"></a>01091       c[3] = d*(15*eps2+80)/768;
+<a name="l01092"></a>01092       d *= eps;
+<a name="l01093"></a>01093       c[4] = d*(7*eps2+35)/512;
+<a name="l01094"></a>01094       d *= eps;
+<a name="l01095"></a>01095       c[5] = 63*d/1280;
+<a name="l01096"></a>01096       d *= eps;
+<a name="l01097"></a>01097       c[6] = 77*d/2048;
+<a name="l01098"></a>01098       <span class="keywordflow">break</span>;
+<a name="l01099"></a>01099     <span class="keywordflow">case</span> 7:
+<a name="l01100"></a>01100       c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
+<a name="l01101"></a>01101       d *= eps;
+<a name="l01102"></a>01102       c[2] = d*(eps2*(35*eps2+64)+384)/2048;
+<a name="l01103"></a>01103       d *= eps;
+<a name="l01104"></a>01104       c[3] = d*(eps2*(69*eps2+120)+640)/6144;
+<a name="l01105"></a>01105       d *= eps;
+<a name="l01106"></a>01106       c[4] = d*(7*eps2+35)/512;
+<a name="l01107"></a>01107       d *= eps;
+<a name="l01108"></a>01108       c[5] = d*(105*eps2+504)/10240;
+<a name="l01109"></a>01109       d *= eps;
+<a name="l01110"></a>01110       c[6] = 77*d/2048;
+<a name="l01111"></a>01111       d *= eps;
+<a name="l01112"></a>01112       c[7] = 429*d/14336;
+<a name="l01113"></a>01113       <span class="keywordflow">break</span>;
+<a name="l01114"></a>01114     <span class="keywordflow">case</span> 8:
+<a name="l01115"></a>01115       c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
+<a name="l01116"></a>01116       d *= eps;
+<a name="l01117"></a>01117       c[2] = d*(eps2*(eps2*(47*eps2+70)+128)+768)/4096;
+<a name="l01118"></a>01118       d *= eps;
+<a name="l01119"></a>01119       c[3] = d*(eps2*(69*eps2+120)+640)/6144;
+<a name="l01120"></a>01120       d *= eps;
+<a name="l01121"></a>01121       c[4] = d*(eps2*(133*eps2+224)+1120)/16384;
+<a name="l01122"></a>01122       d *= eps;
+<a name="l01123"></a>01123       c[5] = d*(105*eps2+504)/10240;
+<a name="l01124"></a>01124       d *= eps;
+<a name="l01125"></a>01125       c[6] = d*(33*eps2+154)/4096;
+<a name="l01126"></a>01126       d *= eps;
+<a name="l01127"></a>01127       c[7] = 429*d/14336;
+<a name="l01128"></a>01128       d *= eps;
+<a name="l01129"></a>01129       c[8] = 6435*d/262144;
+<a name="l01130"></a>01130       <span class="keywordflow">break</span>;
+<a name="l01131"></a>01131     <span class="keywordflow">default</span>:
+<a name="l01132"></a>01132       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC2_ >= 0 && nC2_ <= 8, <span class="stringliteral">"Bad value of nC2_"</span>);
+<a name="l01133"></a>01133     }
+<a name="l01134"></a>01134   }
+<a name="l01135"></a>01135 
+<a name="l01136"></a>01136   <span class="comment">// The scale factor A3 = mean value of I3</span>
+<a name="l01137"></a>01137   <span class="keywordtype">void</span> Geodesic::A3coeff() throw() {
+<a name="l01138"></a>01138     <span class="keywordflow">switch</span> (nA3_) {
+<a name="l01139"></a>01139     <span class="keywordflow">case</span> 0:
 <a name="l01140"></a>01140       <span class="keywordflow">break</span>;
-<a name="l01141"></a>01141     <span class="keywordflow">case</span> 2:
+<a name="l01141"></a>01141     <span class="keywordflow">case</span> 1:
 <a name="l01142"></a>01142       _A3x[0] = 1;
-<a name="l01143"></a>01143       _A3x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2);
-<a name="l01144"></a>01144       <span class="keywordflow">break</span>;
-<a name="l01145"></a>01145     <span class="keywordflow">case</span> 3:
-<a name="l01146"></a>01146       _A3x[0] = 1;
-<a name="l01147"></a>01147       _A3x[1] = (_n-1)/2;
-<a name="l01148"></a>01148       _A3x[2] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
-<a name="l01149"></a>01149       <span class="keywordflow">break</span>;
-<a name="l01150"></a>01150     <span class="keywordflow">case</span> 4:
-<a name="l01151"></a>01151       _A3x[0] = 1;
-<a name="l01152"></a>01152       _A3x[1] = (_n-1)/2;
-<a name="l01153"></a>01153       _A3x[2] = (-_n-2)/8;
-<a name="l01154"></a>01154       _A3x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
-<a name="l01155"></a>01155       <span class="keywordflow">break</span>;
-<a name="l01156"></a>01156     <span class="keywordflow">case</span> 5:
-<a name="l01157"></a>01157       _A3x[0] = 1;
-<a name="l01158"></a>01158       _A3x[1] = (_n-1)/2;
-<a name="l01159"></a>01159       _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01160"></a>01160       _A3x[3] = (-3*_n-1)/16;
-<a name="l01161"></a>01161       _A3x[4] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
-<a name="l01162"></a>01162       <span class="keywordflow">break</span>;
-<a name="l01163"></a>01163     <span class="keywordflow">case</span> 6:
-<a name="l01164"></a>01164       _A3x[0] = 1;
-<a name="l01165"></a>01165       _A3x[1] = (_n-1)/2;
-<a name="l01166"></a>01166       _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01167"></a>01167       _A3x[3] = ((-_n-3)*_n-1)/16;
-<a name="l01168"></a>01168       _A3x[4] = (-2*_n-3)/64;
-<a name="l01169"></a>01169       _A3x[5] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01170"></a>01170       <span class="keywordflow">break</span>;
-<a name="l01171"></a>01171     <span class="keywordflow">case</span> 7:
-<a name="l01172"></a>01172       _A3x[0] = 1;
-<a name="l01173"></a>01173       _A3x[1] = (_n-1)/2;
-<a name="l01174"></a>01174       _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01175"></a>01175       _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
-<a name="l01176"></a>01176       _A3x[4] = ((-10*_n-2)*_n-3)/64;
-<a name="l01177"></a>01177       _A3x[5] = (-5*_n-3)/128;
-<a name="l01178"></a>01178       _A3x[6] = -5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
-<a name="l01179"></a>01179       <span class="keywordflow">break</span>;
-<a name="l01180"></a>01180     <span class="keywordflow">case</span> 8:
-<a name="l01181"></a>01181       _A3x[0] = 1;
-<a name="l01182"></a>01182       _A3x[1] = (_n-1)/2;
-<a name="l01183"></a>01183       _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01184"></a>01184       _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
-<a name="l01185"></a>01185       _A3x[4] = (_n*((-5*_n-20)*_n-4)-6)/128;
-<a name="l01186"></a>01186       _A3x[5] = ((-5*_n-10)*_n-6)/256;
-<a name="l01187"></a>01187       _A3x[6] = (-15*_n-20)/1024;
-<a name="l01188"></a>01188       _A3x[7] = -25/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
-<a name="l01189"></a>01189       <span class="keywordflow">break</span>;
-<a name="l01190"></a>01190     <span class="keywordflow">default</span>:
-<a name="l01191"></a>01191       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA3_ >= 0 && nA3_ <= 8, <span class="stringliteral">"Bad value of nA3_"</span>);
-<a name="l01192"></a>01192     }
-<a name="l01193"></a>01193   }
-<a name="l01194"></a>01194 
-<a name="l01195"></a>01195   <span class="comment">// The coefficients C3[l] in the Fourier expansion of B3</span>
-<a name="l01196"></a>01196   <span class="keywordtype">void</span> Geodesic::C3coeff() throw() {
-<a name="l01197"></a>01197     <span class="keywordflow">switch</span> (nC3_) {
-<a name="l01198"></a>01198     <span class="keywordflow">case</span> 0:
-<a name="l01199"></a>01199       <span class="keywordflow">break</span>;
-<a name="l01200"></a>01200     <span class="keywordflow">case</span> 1:
-<a name="l01201"></a>01201       <span class="keywordflow">break</span>;
-<a name="l01202"></a>01202     <span class="keywordflow">case</span> 2:
-<a name="l01203"></a>01203       _C3x[0] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
+<a name="l01143"></a>01143       <span class="keywordflow">break</span>;
+<a name="l01144"></a>01144     <span class="keywordflow">case</span> 2:
+<a name="l01145"></a>01145       _A3x[0] = 1;
+<a name="l01146"></a>01146       _A3x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2);
+<a name="l01147"></a>01147       <span class="keywordflow">break</span>;
+<a name="l01148"></a>01148     <span class="keywordflow">case</span> 3:
+<a name="l01149"></a>01149       _A3x[0] = 1;
+<a name="l01150"></a>01150       _A3x[1] = (_n-1)/2;
+<a name="l01151"></a>01151       _A3x[2] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
+<a name="l01152"></a>01152       <span class="keywordflow">break</span>;
+<a name="l01153"></a>01153     <span class="keywordflow">case</span> 4:
+<a name="l01154"></a>01154       _A3x[0] = 1;
+<a name="l01155"></a>01155       _A3x[1] = (_n-1)/2;
+<a name="l01156"></a>01156       _A3x[2] = (-_n-2)/8;
+<a name="l01157"></a>01157       _A3x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
+<a name="l01158"></a>01158       <span class="keywordflow">break</span>;
+<a name="l01159"></a>01159     <span class="keywordflow">case</span> 5:
+<a name="l01160"></a>01160       _A3x[0] = 1;
+<a name="l01161"></a>01161       _A3x[1] = (_n-1)/2;
+<a name="l01162"></a>01162       _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01163"></a>01163       _A3x[3] = (-3*_n-1)/16;
+<a name="l01164"></a>01164       _A3x[4] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
+<a name="l01165"></a>01165       <span class="keywordflow">break</span>;
+<a name="l01166"></a>01166     <span class="keywordflow">case</span> 6:
+<a name="l01167"></a>01167       _A3x[0] = 1;
+<a name="l01168"></a>01168       _A3x[1] = (_n-1)/2;
+<a name="l01169"></a>01169       _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01170"></a>01170       _A3x[3] = ((-_n-3)*_n-1)/16;
+<a name="l01171"></a>01171       _A3x[4] = (-2*_n-3)/64;
+<a name="l01172"></a>01172       _A3x[5] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01173"></a>01173       <span class="keywordflow">break</span>;
+<a name="l01174"></a>01174     <span class="keywordflow">case</span> 7:
+<a name="l01175"></a>01175       _A3x[0] = 1;
+<a name="l01176"></a>01176       _A3x[1] = (_n-1)/2;
+<a name="l01177"></a>01177       _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01178"></a>01178       _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
+<a name="l01179"></a>01179       _A3x[4] = ((-10*_n-2)*_n-3)/64;
+<a name="l01180"></a>01180       _A3x[5] = (-5*_n-3)/128;
+<a name="l01181"></a>01181       _A3x[6] = -5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
+<a name="l01182"></a>01182       <span class="keywordflow">break</span>;
+<a name="l01183"></a>01183     <span class="keywordflow">case</span> 8:
+<a name="l01184"></a>01184       _A3x[0] = 1;
+<a name="l01185"></a>01185       _A3x[1] = (_n-1)/2;
+<a name="l01186"></a>01186       _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01187"></a>01187       _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
+<a name="l01188"></a>01188       _A3x[4] = (_n*((-5*_n-20)*_n-4)-6)/128;
+<a name="l01189"></a>01189       _A3x[5] = ((-5*_n-10)*_n-6)/256;
+<a name="l01190"></a>01190       _A3x[6] = (-15*_n-20)/1024;
+<a name="l01191"></a>01191       _A3x[7] = -25/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
+<a name="l01192"></a>01192       <span class="keywordflow">break</span>;
+<a name="l01193"></a>01193     <span class="keywordflow">default</span>:
+<a name="l01194"></a>01194       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA3_ >= 0 && nA3_ <= 8, <span class="stringliteral">"Bad value of nA3_"</span>);
+<a name="l01195"></a>01195     }
+<a name="l01196"></a>01196   }
+<a name="l01197"></a>01197 
+<a name="l01198"></a>01198   <span class="comment">// The coefficients C3[l] in the Fourier expansion of B3</span>
+<a name="l01199"></a>01199   <span class="keywordtype">void</span> Geodesic::C3coeff() throw() {
+<a name="l01200"></a>01200     <span class="keywordflow">switch</span> (nC3_) {
+<a name="l01201"></a>01201     <span class="keywordflow">case</span> 0:
+<a name="l01202"></a>01202       <span class="keywordflow">break</span>;
+<a name="l01203"></a>01203     <span class="keywordflow">case</span> 1:
 <a name="l01204"></a>01204       <span class="keywordflow">break</span>;
-<a name="l01205"></a>01205     <span class="keywordflow">case</span> 3:
-<a name="l01206"></a>01206       _C3x[0] = (1-_n)/4;
-<a name="l01207"></a>01207       _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
-<a name="l01208"></a>01208       _C3x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
-<a name="l01209"></a>01209       <span class="keywordflow">break</span>;
-<a name="l01210"></a>01210     <span class="keywordflow">case</span> 4:
-<a name="l01211"></a>01211       _C3x[0] = (1-_n)/4;
-<a name="l01212"></a>01212       _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
-<a name="l01213"></a>01213       _C3x[2] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
-<a name="l01214"></a>01214       _C3x[3] = (2-3*_n)/32;
-<a name="l01215"></a>01215       _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
-<a name="l01216"></a>01216       _C3x[5] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(192);
-<a name="l01217"></a>01217       <span class="keywordflow">break</span>;
-<a name="l01218"></a>01218     <span class="keywordflow">case</span> 5:
-<a name="l01219"></a>01219       _C3x[0] = (1-_n)/4;
-<a name="l01220"></a>01220       _C3x[1] = (1-_n*_n)/8;
-<a name="l01221"></a>01221       _C3x[2] = (3*_n+3)/64;
-<a name="l01222"></a>01222       _C3x[3] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01223"></a>01223       _C3x[4] = ((_n-3)*_n+2)/32;
-<a name="l01224"></a>01224       _C3x[5] = (3-2*_n)/64;
-<a name="l01225"></a>01225       _C3x[6] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01226"></a>01226       _C3x[7] = (5-9*_n)/192;
-<a name="l01227"></a>01227       _C3x[8] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01228"></a>01228       _C3x[9] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
-<a name="l01229"></a>01229       <span class="keywordflow">break</span>;
-<a name="l01230"></a>01230     <span class="keywordflow">case</span> 6:
-<a name="l01231"></a>01231       _C3x[0] = (1-_n)/4;
-<a name="l01232"></a>01232       _C3x[1] = (1-_n*_n)/8;
-<a name="l01233"></a>01233       _C3x[2] = ((3-_n)*_n+3)/64;
-<a name="l01234"></a>01234       _C3x[3] = (2*_n+5)/128;
-<a name="l01235"></a>01235       _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01236"></a>01236       _C3x[5] = ((_n-3)*_n+2)/32;
-<a name="l01237"></a>01237       _C3x[6] = ((-3*_n-2)*_n+3)/64;
-<a name="l01238"></a>01238       _C3x[7] = (_n+3)/128;
-<a name="l01239"></a>01239       _C3x[8] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
-<a name="l01240"></a>01240       _C3x[9] = (_n*(5*_n-9)+5)/192;
-<a name="l01241"></a>01241       _C3x[10] = (9-10*_n)/384;
-<a name="l01242"></a>01242       _C3x[11] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
-<a name="l01243"></a>01243       _C3x[12] = (7-14*_n)/512;
-<a name="l01244"></a>01244       _C3x[13] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
-<a name="l01245"></a>01245       _C3x[14] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2560);
-<a name="l01246"></a>01246       <span class="keywordflow">break</span>;
-<a name="l01247"></a>01247     <span class="keywordflow">case</span> 7:
-<a name="l01248"></a>01248       _C3x[0] = (1-_n)/4;
-<a name="l01249"></a>01249       _C3x[1] = (1-_n*_n)/8;
-<a name="l01250"></a>01250       _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
-<a name="l01251"></a>01251       _C3x[3] = (_n*(2*_n+2)+5)/128;
-<a name="l01252"></a>01252       _C3x[4] = (11*_n+12)/512;
-<a name="l01253"></a>01253       _C3x[5] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
-<a name="l01254"></a>01254       _C3x[6] = ((_n-3)*_n+2)/32;
-<a name="l01255"></a>01255       _C3x[7] = (_n*(_n*(2*_n-3)-2)+3)/64;
-<a name="l01256"></a>01256       _C3x[8] = ((2-9*_n)*_n+6)/256;
-<a name="l01257"></a>01257       _C3x[9] = (_n+5)/256;
-<a name="l01258"></a>01258       _C3x[10] = 27/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
-<a name="l01259"></a>01259       _C3x[11] = (_n*((5-_n)*_n-9)+5)/192;
-<a name="l01260"></a>01260       _C3x[12] = ((-6*_n-10)*_n+9)/384;
-<a name="l01261"></a>01261       _C3x[13] = (21-4*_n)/1536;
-<a name="l01262"></a>01262       _C3x[14] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
-<a name="l01263"></a>01263       _C3x[15] = (_n*(10*_n-14)+7)/512;
-<a name="l01264"></a>01264       _C3x[16] = (7-10*_n)/512;
-<a name="l01265"></a>01265       _C3x[17] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
-<a name="l01266"></a>01266       _C3x[18] = (21-45*_n)/2560;
-<a name="l01267"></a>01267       _C3x[19] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
-<a name="l01268"></a>01268       _C3x[20] = 11/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
-<a name="l01269"></a>01269       <span class="keywordflow">break</span>;
-<a name="l01270"></a>01270     <span class="keywordflow">case</span> 8:
-<a name="l01271"></a>01271       _C3x[0] = (1-_n)/4;
-<a name="l01272"></a>01272       _C3x[1] = (1-_n*_n)/8;
-<a name="l01273"></a>01273       _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
-<a name="l01274"></a>01274       _C3x[3] = (_n*((2-2*_n)*_n+2)+5)/128;
-<a name="l01275"></a>01275       _C3x[4] = (_n*(3*_n+11)+12)/512;
-<a name="l01276"></a>01276       _C3x[5] = (10*_n+21)/1024;
-<a name="l01277"></a>01277       _C3x[6] = 243/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01278"></a>01278       _C3x[7] = ((_n-3)*_n+2)/32;
-<a name="l01279"></a>01279       _C3x[8] = (_n*(_n*(2*_n-3)-2)+3)/64;
-<a name="l01280"></a>01280       _C3x[9] = (_n*((-6*_n-9)*_n+2)+6)/256;
-<a name="l01281"></a>01281       _C3x[10] = ((1-2*_n)*_n+5)/256;
-<a name="l01282"></a>01282       _C3x[11] = (69*_n+108)/8192;
-<a name="l01283"></a>01283       _C3x[12] = 187/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01284"></a>01284       _C3x[13] = (_n*((5-_n)*_n-9)+5)/192;
-<a name="l01285"></a>01285       _C3x[14] = (_n*(_n*(10*_n-6)-10)+9)/384;
-<a name="l01286"></a>01286       _C3x[15] = ((-77*_n-8)*_n+42)/3072;
-<a name="l01287"></a>01287       _C3x[16] = (12-_n)/1024;
-<a name="l01288"></a>01288       _C3x[17] = 139/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01289"></a>01289       _C3x[18] = (_n*((20-7*_n)*_n-28)+14)/1024;
-<a name="l01290"></a>01290       _C3x[19] = ((-7*_n-40)*_n+28)/2048;
-<a name="l01291"></a>01291       _C3x[20] = (72-43*_n)/8192;
-<a name="l01292"></a>01292       _C3x[21] = 127/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01293"></a>01293       _C3x[22] = (_n*(75*_n-90)+42)/5120;
-<a name="l01294"></a>01294       _C3x[23] = (9-15*_n)/1024;
-<a name="l01295"></a>01295       _C3x[24] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01296"></a>01296       _C3x[25] = (44-99*_n)/8192;
-<a name="l01297"></a>01297       _C3x[26] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01298"></a>01298       _C3x[27] = 429/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(114688);
-<a name="l01299"></a>01299       <span class="keywordflow">break</span>;
-<a name="l01300"></a>01300     <span class="keywordflow">default</span>:
-<a name="l01301"></a>01301       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC3_ <= 8, <span class="stringliteral">"Bad value of nC3_"</span>);
-<a name="l01302"></a>01302     }
-<a name="l01303"></a>01303   }
-<a name="l01304"></a>01304 
-<a name="l01305"></a>01305   <span class="comment">// The coefficients C4[l] in the Fourier expansion of I4</span>
-<a name="l01306"></a>01306   <span class="keywordtype">void</span> Geodesic::C4coeff() throw() {
-<a name="l01307"></a>01307     <span class="keywordflow">switch</span> (nC4_) {
-<a name="l01308"></a>01308     <span class="keywordflow">case</span> 0:
-<a name="l01309"></a>01309       <span class="keywordflow">break</span>;
-<a name="l01310"></a>01310     <span class="keywordflow">case</span> 1:
-<a name="l01311"></a>01311       _C4x[0] = 2/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3);
+<a name="l01205"></a>01205     <span class="keywordflow">case</span> 2:
+<a name="l01206"></a>01206       _C3x[0] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
+<a name="l01207"></a>01207       <span class="keywordflow">break</span>;
+<a name="l01208"></a>01208     <span class="keywordflow">case</span> 3:
+<a name="l01209"></a>01209       _C3x[0] = (1-_n)/4;
+<a name="l01210"></a>01210       _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
+<a name="l01211"></a>01211       _C3x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
+<a name="l01212"></a>01212       <span class="keywordflow">break</span>;
+<a name="l01213"></a>01213     <span class="keywordflow">case</span> 4:
+<a name="l01214"></a>01214       _C3x[0] = (1-_n)/4;
+<a name="l01215"></a>01215       _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
+<a name="l01216"></a>01216       _C3x[2] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
+<a name="l01217"></a>01217       _C3x[3] = (2-3*_n)/32;
+<a name="l01218"></a>01218       _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
+<a name="l01219"></a>01219       _C3x[5] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(192);
+<a name="l01220"></a>01220       <span class="keywordflow">break</span>;
+<a name="l01221"></a>01221     <span class="keywordflow">case</span> 5:
+<a name="l01222"></a>01222       _C3x[0] = (1-_n)/4;
+<a name="l01223"></a>01223       _C3x[1] = (1-_n*_n)/8;
+<a name="l01224"></a>01224       _C3x[2] = (3*_n+3)/64;
+<a name="l01225"></a>01225       _C3x[3] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01226"></a>01226       _C3x[4] = ((_n-3)*_n+2)/32;
+<a name="l01227"></a>01227       _C3x[5] = (3-2*_n)/64;
+<a name="l01228"></a>01228       _C3x[6] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01229"></a>01229       _C3x[7] = (5-9*_n)/192;
+<a name="l01230"></a>01230       _C3x[8] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01231"></a>01231       _C3x[9] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
+<a name="l01232"></a>01232       <span class="keywordflow">break</span>;
+<a name="l01233"></a>01233     <span class="keywordflow">case</span> 6:
+<a name="l01234"></a>01234       _C3x[0] = (1-_n)/4;
+<a name="l01235"></a>01235       _C3x[1] = (1-_n*_n)/8;
+<a name="l01236"></a>01236       _C3x[2] = ((3-_n)*_n+3)/64;
+<a name="l01237"></a>01237       _C3x[3] = (2*_n+5)/128;
+<a name="l01238"></a>01238       _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01239"></a>01239       _C3x[5] = ((_n-3)*_n+2)/32;
+<a name="l01240"></a>01240       _C3x[6] = ((-3*_n-2)*_n+3)/64;
+<a name="l01241"></a>01241       _C3x[7] = (_n+3)/128;
+<a name="l01242"></a>01242       _C3x[8] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
+<a name="l01243"></a>01243       _C3x[9] = (_n*(5*_n-9)+5)/192;
+<a name="l01244"></a>01244       _C3x[10] = (9-10*_n)/384;
+<a name="l01245"></a>01245       _C3x[11] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
+<a name="l01246"></a>01246       _C3x[12] = (7-14*_n)/512;
+<a name="l01247"></a>01247       _C3x[13] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
+<a name="l01248"></a>01248       _C3x[14] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2560);
+<a name="l01249"></a>01249       <span class="keywordflow">break</span>;
+<a name="l01250"></a>01250     <span class="keywordflow">case</span> 7:
+<a name="l01251"></a>01251       _C3x[0] = (1-_n)/4;
+<a name="l01252"></a>01252       _C3x[1] = (1-_n*_n)/8;
+<a name="l01253"></a>01253       _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
+<a name="l01254"></a>01254       _C3x[3] = (_n*(2*_n+2)+5)/128;
+<a name="l01255"></a>01255       _C3x[4] = (11*_n+12)/512;
+<a name="l01256"></a>01256       _C3x[5] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
+<a name="l01257"></a>01257       _C3x[6] = ((_n-3)*_n+2)/32;
+<a name="l01258"></a>01258       _C3x[7] = (_n*(_n*(2*_n-3)-2)+3)/64;
+<a name="l01259"></a>01259       _C3x[8] = ((2-9*_n)*_n+6)/256;
+<a name="l01260"></a>01260       _C3x[9] = (_n+5)/256;
+<a name="l01261"></a>01261       _C3x[10] = 27/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
+<a name="l01262"></a>01262       _C3x[11] = (_n*((5-_n)*_n-9)+5)/192;
+<a name="l01263"></a>01263       _C3x[12] = ((-6*_n-10)*_n+9)/384;
+<a name="l01264"></a>01264       _C3x[13] = (21-4*_n)/1536;
+<a name="l01265"></a>01265       _C3x[14] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
+<a name="l01266"></a>01266       _C3x[15] = (_n*(10*_n-14)+7)/512;
+<a name="l01267"></a>01267       _C3x[16] = (7-10*_n)/512;
+<a name="l01268"></a>01268       _C3x[17] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
+<a name="l01269"></a>01269       _C3x[18] = (21-45*_n)/2560;
+<a name="l01270"></a>01270       _C3x[19] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
+<a name="l01271"></a>01271       _C3x[20] = 11/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
+<a name="l01272"></a>01272       <span class="keywordflow">break</span>;
+<a name="l01273"></a>01273     <span class="keywordflow">case</span> 8:
+<a name="l01274"></a>01274       _C3x[0] = (1-_n)/4;
+<a name="l01275"></a>01275       _C3x[1] = (1-_n*_n)/8;
+<a name="l01276"></a>01276       _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
+<a name="l01277"></a>01277       _C3x[3] = (_n*((2-2*_n)*_n+2)+5)/128;
+<a name="l01278"></a>01278       _C3x[4] = (_n*(3*_n+11)+12)/512;
+<a name="l01279"></a>01279       _C3x[5] = (10*_n+21)/1024;
+<a name="l01280"></a>01280       _C3x[6] = 243/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01281"></a>01281       _C3x[7] = ((_n-3)*_n+2)/32;
+<a name="l01282"></a>01282       _C3x[8] = (_n*(_n*(2*_n-3)-2)+3)/64;
+<a name="l01283"></a>01283       _C3x[9] = (_n*((-6*_n-9)*_n+2)+6)/256;
+<a name="l01284"></a>01284       _C3x[10] = ((1-2*_n)*_n+5)/256;
+<a name="l01285"></a>01285       _C3x[11] = (69*_n+108)/8192;
+<a name="l01286"></a>01286       _C3x[12] = 187/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01287"></a>01287       _C3x[13] = (_n*((5-_n)*_n-9)+5)/192;
+<a name="l01288"></a>01288       _C3x[14] = (_n*(_n*(10*_n-6)-10)+9)/384;
+<a name="l01289"></a>01289       _C3x[15] = ((-77*_n-8)*_n+42)/3072;
+<a name="l01290"></a>01290       _C3x[16] = (12-_n)/1024;
+<a name="l01291"></a>01291       _C3x[17] = 139/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01292"></a>01292       _C3x[18] = (_n*((20-7*_n)*_n-28)+14)/1024;
+<a name="l01293"></a>01293       _C3x[19] = ((-7*_n-40)*_n+28)/2048;
+<a name="l01294"></a>01294       _C3x[20] = (72-43*_n)/8192;
+<a name="l01295"></a>01295       _C3x[21] = 127/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01296"></a>01296       _C3x[22] = (_n*(75*_n-90)+42)/5120;
+<a name="l01297"></a>01297       _C3x[23] = (9-15*_n)/1024;
+<a name="l01298"></a>01298       _C3x[24] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01299"></a>01299       _C3x[25] = (44-99*_n)/8192;
+<a name="l01300"></a>01300       _C3x[26] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01301"></a>01301       _C3x[27] = 429/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(114688);
+<a name="l01302"></a>01302       <span class="keywordflow">break</span>;
+<a name="l01303"></a>01303     <span class="keywordflow">default</span>:
+<a name="l01304"></a>01304       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC3_ <= 8, <span class="stringliteral">"Bad value of nC3_"</span>);
+<a name="l01305"></a>01305     }
+<a name="l01306"></a>01306   }
+<a name="l01307"></a>01307 
+<a name="l01308"></a>01308   <span class="comment">// The coefficients C4[l] in the Fourier expansion of I4</span>
+<a name="l01309"></a>01309   <span class="keywordtype">void</span> Geodesic::C4coeff() throw() {
+<a name="l01310"></a>01310     <span class="keywordflow">switch</span> (nC4_) {
+<a name="l01311"></a>01311     <span class="keywordflow">case</span> 0:
 <a name="l01312"></a>01312       <span class="keywordflow">break</span>;
-<a name="l01313"></a>01313     <span class="keywordflow">case</span> 2:
-<a name="l01314"></a>01314       _C4x[0] = (10-_ep2)/15;
-<a name="l01315"></a>01315       _C4x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20);
-<a name="l01316"></a>01316       _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(180);
-<a name="l01317"></a>01317       <span class="keywordflow">break</span>;
-<a name="l01318"></a>01318     <span class="keywordflow">case</span> 3:
-<a name="l01319"></a>01319       _C4x[0] = (_ep2*(4*_ep2-7)+70)/105;
-<a name="l01320"></a>01320       _C4x[1] = (4*_ep2-7)/140;
-<a name="l01321"></a>01321       _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(42);
-<a name="l01322"></a>01322       _C4x[3] = (7-4*_ep2)/1260;
-<a name="l01323"></a>01323       _C4x[4] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(252);
-<a name="l01324"></a>01324       _C4x[5] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2100);
-<a name="l01325"></a>01325       <span class="keywordflow">break</span>;
-<a name="l01326"></a>01326     <span class="keywordflow">case</span> 4:
-<a name="l01327"></a>01327       _C4x[0] = (_ep2*((12-8*_ep2)*_ep2-21)+210)/315;
-<a name="l01328"></a>01328       _C4x[1] = ((12-8*_ep2)*_ep2-21)/420;
-<a name="l01329"></a>01329       _C4x[2] = (3-2*_ep2)/126;
-<a name="l01330"></a>01330       _C4x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(72);
-<a name="l01331"></a>01331       _C4x[4] = (_ep2*(8*_ep2-12)+21)/3780;
-<a name="l01332"></a>01332       _C4x[5] = (2*_ep2-3)/756;
-<a name="l01333"></a>01333       _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360);
-<a name="l01334"></a>01334       _C4x[7] = (3-2*_ep2)/6300;
-<a name="l01335"></a>01335       _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1800);
-<a name="l01336"></a>01336       _C4x[9] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(17640);
-<a name="l01337"></a>01337       <span class="keywordflow">break</span>;
-<a name="l01338"></a>01338     <span class="keywordflow">case</span> 5:
-<a name="l01339"></a>01339       _C4x[0] = (_ep2*(_ep2*(_ep2*(64*_ep2-88)+132)-231)+2310)/3465;
-<a name="l01340"></a>01340       _C4x[1] = (_ep2*(_ep2*(64*_ep2-88)+132)-231)/4620;
-<a name="l01341"></a>01341       _C4x[2] = (_ep2*(16*_ep2-22)+33)/1386;
-<a name="l01342"></a>01342       _C4x[3] = (8*_ep2-11)/792;
-<a name="l01343"></a>01343       _C4x[4] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(110);
-<a name="l01344"></a>01344       _C4x[5] = (_ep2*((88-64*_ep2)*_ep2-132)+231)/41580;
-<a name="l01345"></a>01345       _C4x[6] = ((22-16*_ep2)*_ep2-33)/8316;
-<a name="l01346"></a>01346       _C4x[7] = (11-8*_ep2)/3960;
-<a name="l01347"></a>01347       _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(495);
-<a name="l01348"></a>01348       _C4x[9] = (_ep2*(16*_ep2-22)+33)/69300;
-<a name="l01349"></a>01349       _C4x[10] = (8*_ep2-11)/19800;
-<a name="l01350"></a>01350       _C4x[11] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1925);
-<a name="l01351"></a>01351       _C4x[12] = (11-8*_ep2)/194040;
-<a name="l01352"></a>01352       _C4x[13] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10780);
-<a name="l01353"></a>01353       _C4x[14] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(124740);
-<a name="l01354"></a>01354       <span class="keywordflow">break</span>;
-<a name="l01355"></a>01355     <span class="keywordflow">case</span> 6:
-<a name="l01356"></a>01356       _C4x[0] = (_ep2*(_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)+
-<a name="l01357"></a>01357                 30030)/45045;
-<a name="l01358"></a>01358       _C4x[1] = (_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)/60060;
-<a name="l01359"></a>01359       _C4x[2] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/18018;
-<a name="l01360"></a>01360       _C4x[3] = ((104-80*_ep2)*_ep2-143)/10296;
-<a name="l01361"></a>01361       _C4x[4] = (13-10*_ep2)/1430;
-<a name="l01362"></a>01362       _C4x[5] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(156);
-<a name="l01363"></a>01363       _C4x[6] = (_ep2*(_ep2*(_ep2*(640*_ep2-832)+1144)-1716)+3003)/540540;
-<a name="l01364"></a>01364       _C4x[7] = (_ep2*(_ep2*(160*_ep2-208)+286)-429)/108108;
-<a name="l01365"></a>01365       _C4x[8] = (_ep2*(80*_ep2-104)+143)/51480;
-<a name="l01366"></a>01366       _C4x[9] = (10*_ep2-13)/6435;
-<a name="l01367"></a>01367       _C4x[10] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3276);
-<a name="l01368"></a>01368       _C4x[11] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/900900;
-<a name="l01369"></a>01369       _C4x[12] = ((104-80*_ep2)*_ep2-143)/257400;
-<a name="l01370"></a>01370       _C4x[13] = (13-10*_ep2)/25025;
-<a name="l01371"></a>01371       _C4x[14] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2184);
-<a name="l01372"></a>01372       _C4x[15] = (_ep2*(80*_ep2-104)+143)/2522520;
-<a name="l01373"></a>01373       _C4x[16] = (10*_ep2-13)/140140;
-<a name="l01374"></a>01374       _C4x[17] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(45864);
-<a name="l01375"></a>01375       _C4x[18] = (13-10*_ep2)/1621620;
-<a name="l01376"></a>01376       _C4x[19] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(58968);
-<a name="l01377"></a>01377       _C4x[20] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(792792);
-<a name="l01378"></a>01378       <span class="keywordflow">break</span>;
-<a name="l01379"></a>01379     <span class="keywordflow">case</span> 7:
-<a name="l01380"></a>01380       _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
-<a name="l01381"></a>01381                 3003)+30030)/45045;
-<a name="l01382"></a>01382       _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
-<a name="l01383"></a>01383                 3003)/60060;
-<a name="l01384"></a>01384       _C4x[2] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/18018;
-<a name="l01385"></a>01385       _C4x[3] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/10296;
-<a name="l01386"></a>01386       _C4x[4] = (_ep2*(8*_ep2-10)+13)/1430;
-<a name="l01387"></a>01387       _C4x[5] = (4*_ep2-5)/780;
-<a name="l01388"></a>01388       _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(210);
-<a name="l01389"></a>01389       _C4x[7] = (_ep2*(_ep2*(_ep2*((640-512*_ep2)*_ep2-832)+1144)-1716)+
-<a name="l01390"></a>01390                 3003)/540540;
-<a name="l01391"></a>01391       _C4x[8] = (_ep2*(_ep2*((160-128*_ep2)*_ep2-208)+286)-429)/108108;
-<a name="l01392"></a>01392       _C4x[9] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/51480;
-<a name="l01393"></a>01393       _C4x[10] = ((10-8*_ep2)*_ep2-13)/6435;
-<a name="l01394"></a>01394       _C4x[11] = (5-4*_ep2)/3276;
-<a name="l01395"></a>01395       _C4x[12] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(840);
-<a name="l01396"></a>01396       _C4x[13] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/900900;
-<a name="l01397"></a>01397       _C4x[14] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/257400;
-<a name="l01398"></a>01398       _C4x[15] = (_ep2*(8*_ep2-10)+13)/25025;
-<a name="l01399"></a>01399       _C4x[16] = (4*_ep2-5)/10920;
-<a name="l01400"></a>01400       _C4x[17] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2520);
-<a name="l01401"></a>01401       _C4x[18] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/2522520;
-<a name="l01402"></a>01402       _C4x[19] = ((10-8*_ep2)*_ep2-13)/140140;
-<a name="l01403"></a>01403       _C4x[20] = (5-4*_ep2)/45864;
-<a name="l01404"></a>01404       _C4x[21] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8820);
-<a name="l01405"></a>01405       _C4x[22] = (_ep2*(8*_ep2-10)+13)/1621620;
-<a name="l01406"></a>01406       _C4x[23] = (4*_ep2-5)/294840;
-<a name="l01407"></a>01407       _C4x[24] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(41580);
-<a name="l01408"></a>01408       _C4x[25] = (5-4*_ep2)/3963960;
-<a name="l01409"></a>01409       _C4x[26] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(304920);
-<a name="l01410"></a>01410       _C4x[27] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4684680);
-<a name="l01411"></a>01411       <span class="keywordflow">break</span>;
-<a name="l01412"></a>01412     <span class="keywordflow">case</span> 8:
-<a name="l01413"></a>01413       _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+
-<a name="l01414"></a>01414                 14144)-19448)+29172)-51051)+510510)/765765;
-<a name="l01415"></a>01415       _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+14144)-
-<a name="l01416"></a>01416                 19448)+29172)-51051)/1021020;
-<a name="l01417"></a>01417       _C4x[2] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
-<a name="l01418"></a>01418                 7293)/306306;
-<a name="l01419"></a>01419       _C4x[3] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/175032;
-<a name="l01420"></a>01420       _C4x[4] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/24310;
-<a name="l01421"></a>01421       _C4x[5] = ((68-56*_ep2)*_ep2-85)/13260;
-<a name="l01422"></a>01422       _C4x[6] = (17-14*_ep2)/3570;
-<a name="l01423"></a>01423       _C4x[7] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(272);
-<a name="l01424"></a>01424       _C4x[8] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(7168*_ep2-8704)+10880)-14144)+
-<a name="l01425"></a>01425                 19448)-29172)+51051)/9189180;
-<a name="l01426"></a>01426       _C4x[9] = (_ep2*(_ep2*(_ep2*(_ep2*(1792*_ep2-2176)+2720)-3536)+4862)-
-<a name="l01427"></a>01427                 7293)/1837836;
-<a name="l01428"></a>01428       _C4x[10] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/875160;
-<a name="l01429"></a>01429       _C4x[11] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/109395;
-<a name="l01430"></a>01430       _C4x[12] = (_ep2*(56*_ep2-68)+85)/55692;
-<a name="l01431"></a>01431       _C4x[13] = (14*_ep2-17)/14280;
-<a name="l01432"></a>01432       _C4x[14] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(7344);
-<a name="l01433"></a>01433       _C4x[15] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
-<a name="l01434"></a>01434                 7293)/15315300;
-<a name="l01435"></a>01435       _C4x[16] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/4375800;
-<a name="l01436"></a>01436       _C4x[17] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/425425;
-<a name="l01437"></a>01437       _C4x[18] = ((68-56*_ep2)*_ep2-85)/185640;
-<a name="l01438"></a>01438       _C4x[19] = (17-14*_ep2)/42840;
-<a name="l01439"></a>01439       _C4x[20] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20400);
-<a name="l01440"></a>01440       _C4x[21] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/42882840;
-<a name="l01441"></a>01441       _C4x[22] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/2382380;
-<a name="l01442"></a>01442       _C4x[23] = (_ep2*(56*_ep2-68)+85)/779688;
-<a name="l01443"></a>01443       _C4x[24] = (14*_ep2-17)/149940;
-<a name="l01444"></a>01444       _C4x[25] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8976);
-<a name="l01445"></a>01445       _C4x[26] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/27567540;
-<a name="l01446"></a>01446       _C4x[27] = ((68-56*_ep2)*_ep2-85)/5012280;
-<a name="l01447"></a>01447       _C4x[28] = (17-14*_ep2)/706860;
-<a name="l01448"></a>01448       _C4x[29] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(242352);
-<a name="l01449"></a>01449       _C4x[30] = (_ep2*(56*_ep2-68)+85)/67387320;
-<a name="l01450"></a>01450       _C4x[31] = (14*_ep2-17)/5183640;
-<a name="l01451"></a>01451       _C4x[32] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1283568);
-<a name="l01452"></a>01452       _C4x[33] = (17-14*_ep2)/79639560;
-<a name="l01453"></a>01453       _C4x[34] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1516944);
-<a name="l01454"></a>01454       _C4x[35] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(26254800);
-<a name="l01455"></a>01455       <span class="keywordflow">break</span>;
-<a name="l01456"></a>01456     <span class="keywordflow">default</span>:
-<a name="l01457"></a>01457       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC4_ <= 8, <span class="stringliteral">"Bad value of nC4_"</span>);
-<a name="l01458"></a>01458     }
-<a name="l01459"></a>01459   }
-<a name="l01460"></a>01460 
-<a name="l01461"></a>01461 } <span class="comment">// namespace GeographicLib</span>
+<a name="l01313"></a>01313     <span class="keywordflow">case</span> 1:
+<a name="l01314"></a>01314       _C4x[0] = 2/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3);
+<a name="l01315"></a>01315       <span class="keywordflow">break</span>;
+<a name="l01316"></a>01316     <span class="keywordflow">case</span> 2:
+<a name="l01317"></a>01317       _C4x[0] = (10-_ep2)/15;
+<a name="l01318"></a>01318       _C4x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20);
+<a name="l01319"></a>01319       _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(180);
+<a name="l01320"></a>01320       <span class="keywordflow">break</span>;
+<a name="l01321"></a>01321     <span class="keywordflow">case</span> 3:
+<a name="l01322"></a>01322       _C4x[0] = (_ep2*(4*_ep2-7)+70)/105;
+<a name="l01323"></a>01323       _C4x[1] = (4*_ep2-7)/140;
+<a name="l01324"></a>01324       _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(42);
+<a name="l01325"></a>01325       _C4x[3] = (7-4*_ep2)/1260;
+<a name="l01326"></a>01326       _C4x[4] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(252);
+<a name="l01327"></a>01327       _C4x[5] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2100);
+<a name="l01328"></a>01328       <span class="keywordflow">break</span>;
+<a name="l01329"></a>01329     <span class="keywordflow">case</span> 4:
+<a name="l01330"></a>01330       _C4x[0] = (_ep2*((12-8*_ep2)*_ep2-21)+210)/315;
+<a name="l01331"></a>01331       _C4x[1] = ((12-8*_ep2)*_ep2-21)/420;
+<a name="l01332"></a>01332       _C4x[2] = (3-2*_ep2)/126;
+<a name="l01333"></a>01333       _C4x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(72);
+<a name="l01334"></a>01334       _C4x[4] = (_ep2*(8*_ep2-12)+21)/3780;
+<a name="l01335"></a>01335       _C4x[5] = (2*_ep2-3)/756;
+<a name="l01336"></a>01336       _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360);
+<a name="l01337"></a>01337       _C4x[7] = (3-2*_ep2)/6300;
+<a name="l01338"></a>01338       _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1800);
+<a name="l01339"></a>01339       _C4x[9] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(17640);
+<a name="l01340"></a>01340       <span class="keywordflow">break</span>;
+<a name="l01341"></a>01341     <span class="keywordflow">case</span> 5:
+<a name="l01342"></a>01342       _C4x[0] = (_ep2*(_ep2*(_ep2*(64*_ep2-88)+132)-231)+2310)/3465;
+<a name="l01343"></a>01343       _C4x[1] = (_ep2*(_ep2*(64*_ep2-88)+132)-231)/4620;
+<a name="l01344"></a>01344       _C4x[2] = (_ep2*(16*_ep2-22)+33)/1386;
+<a name="l01345"></a>01345       _C4x[3] = (8*_ep2-11)/792;
+<a name="l01346"></a>01346       _C4x[4] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(110);
+<a name="l01347"></a>01347       _C4x[5] = (_ep2*((88-64*_ep2)*_ep2-132)+231)/41580;
+<a name="l01348"></a>01348       _C4x[6] = ((22-16*_ep2)*_ep2-33)/8316;
+<a name="l01349"></a>01349       _C4x[7] = (11-8*_ep2)/3960;
+<a name="l01350"></a>01350       _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(495);
+<a name="l01351"></a>01351       _C4x[9] = (_ep2*(16*_ep2-22)+33)/69300;
+<a name="l01352"></a>01352       _C4x[10] = (8*_ep2-11)/19800;
+<a name="l01353"></a>01353       _C4x[11] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1925);
+<a name="l01354"></a>01354       _C4x[12] = (11-8*_ep2)/194040;
+<a name="l01355"></a>01355       _C4x[13] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10780);
+<a name="l01356"></a>01356       _C4x[14] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(124740);
+<a name="l01357"></a>01357       <span class="keywordflow">break</span>;
+<a name="l01358"></a>01358     <span class="keywordflow">case</span> 6:
+<a name="l01359"></a>01359       _C4x[0] = (_ep2*(_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)+
+<a name="l01360"></a>01360                 30030)/45045;
+<a name="l01361"></a>01361       _C4x[1] = (_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)/60060;
+<a name="l01362"></a>01362       _C4x[2] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/18018;
+<a name="l01363"></a>01363       _C4x[3] = ((104-80*_ep2)*_ep2-143)/10296;
+<a name="l01364"></a>01364       _C4x[4] = (13-10*_ep2)/1430;
+<a name="l01365"></a>01365       _C4x[5] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(156);
+<a name="l01366"></a>01366       _C4x[6] = (_ep2*(_ep2*(_ep2*(640*_ep2-832)+1144)-1716)+3003)/540540;
+<a name="l01367"></a>01367       _C4x[7] = (_ep2*(_ep2*(160*_ep2-208)+286)-429)/108108;
+<a name="l01368"></a>01368       _C4x[8] = (_ep2*(80*_ep2-104)+143)/51480;
+<a name="l01369"></a>01369       _C4x[9] = (10*_ep2-13)/6435;
+<a name="l01370"></a>01370       _C4x[10] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3276);
+<a name="l01371"></a>01371       _C4x[11] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/900900;
+<a name="l01372"></a>01372       _C4x[12] = ((104-80*_ep2)*_ep2-143)/257400;
+<a name="l01373"></a>01373       _C4x[13] = (13-10*_ep2)/25025;
+<a name="l01374"></a>01374       _C4x[14] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2184);
+<a name="l01375"></a>01375       _C4x[15] = (_ep2*(80*_ep2-104)+143)/2522520;
+<a name="l01376"></a>01376       _C4x[16] = (10*_ep2-13)/140140;
+<a name="l01377"></a>01377       _C4x[17] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(45864);
+<a name="l01378"></a>01378       _C4x[18] = (13-10*_ep2)/1621620;
+<a name="l01379"></a>01379       _C4x[19] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(58968);
+<a name="l01380"></a>01380       _C4x[20] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(792792);
+<a name="l01381"></a>01381       <span class="keywordflow">break</span>;
+<a name="l01382"></a>01382     <span class="keywordflow">case</span> 7:
+<a name="l01383"></a>01383       _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
+<a name="l01384"></a>01384                 3003)+30030)/45045;
+<a name="l01385"></a>01385       _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
+<a name="l01386"></a>01386                 3003)/60060;
+<a name="l01387"></a>01387       _C4x[2] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/18018;
+<a name="l01388"></a>01388       _C4x[3] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/10296;
+<a name="l01389"></a>01389       _C4x[4] = (_ep2*(8*_ep2-10)+13)/1430;
+<a name="l01390"></a>01390       _C4x[5] = (4*_ep2-5)/780;
+<a name="l01391"></a>01391       _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(210);
+<a name="l01392"></a>01392       _C4x[7] = (_ep2*(_ep2*(_ep2*((640-512*_ep2)*_ep2-832)+1144)-1716)+
+<a name="l01393"></a>01393                 3003)/540540;
+<a name="l01394"></a>01394       _C4x[8] = (_ep2*(_ep2*((160-128*_ep2)*_ep2-208)+286)-429)/108108;
+<a name="l01395"></a>01395       _C4x[9] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/51480;
+<a name="l01396"></a>01396       _C4x[10] = ((10-8*_ep2)*_ep2-13)/6435;
+<a name="l01397"></a>01397       _C4x[11] = (5-4*_ep2)/3276;
+<a name="l01398"></a>01398       _C4x[12] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(840);
+<a name="l01399"></a>01399       _C4x[13] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/900900;
+<a name="l01400"></a>01400       _C4x[14] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/257400;
+<a name="l01401"></a>01401       _C4x[15] = (_ep2*(8*_ep2-10)+13)/25025;
+<a name="l01402"></a>01402       _C4x[16] = (4*_ep2-5)/10920;
+<a name="l01403"></a>01403       _C4x[17] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2520);
+<a name="l01404"></a>01404       _C4x[18] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/2522520;
+<a name="l01405"></a>01405       _C4x[19] = ((10-8*_ep2)*_ep2-13)/140140;
+<a name="l01406"></a>01406       _C4x[20] = (5-4*_ep2)/45864;
+<a name="l01407"></a>01407       _C4x[21] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8820);
+<a name="l01408"></a>01408       _C4x[22] = (_ep2*(8*_ep2-10)+13)/1621620;
+<a name="l01409"></a>01409       _C4x[23] = (4*_ep2-5)/294840;
+<a name="l01410"></a>01410       _C4x[24] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(41580);
+<a name="l01411"></a>01411       _C4x[25] = (5-4*_ep2)/3963960;
+<a name="l01412"></a>01412       _C4x[26] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(304920);
+<a name="l01413"></a>01413       _C4x[27] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4684680);
+<a name="l01414"></a>01414       <span class="keywordflow">break</span>;
+<a name="l01415"></a>01415     <span class="keywordflow">case</span> 8:
+<a name="l01416"></a>01416       _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+
+<a name="l01417"></a>01417                 14144)-19448)+29172)-51051)+510510)/765765;
+<a name="l01418"></a>01418       _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+14144)-
+<a name="l01419"></a>01419                 19448)+29172)-51051)/1021020;
+<a name="l01420"></a>01420       _C4x[2] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
+<a name="l01421"></a>01421                 7293)/306306;
+<a name="l01422"></a>01422       _C4x[3] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/175032;
+<a name="l01423"></a>01423       _C4x[4] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/24310;
+<a name="l01424"></a>01424       _C4x[5] = ((68-56*_ep2)*_ep2-85)/13260;
+<a name="l01425"></a>01425       _C4x[6] = (17-14*_ep2)/3570;
+<a name="l01426"></a>01426       _C4x[7] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(272);
+<a name="l01427"></a>01427       _C4x[8] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(7168*_ep2-8704)+10880)-14144)+
+<a name="l01428"></a>01428                 19448)-29172)+51051)/9189180;
+<a name="l01429"></a>01429       _C4x[9] = (_ep2*(_ep2*(_ep2*(_ep2*(1792*_ep2-2176)+2720)-3536)+4862)-
+<a name="l01430"></a>01430                 7293)/1837836;
+<a name="l01431"></a>01431       _C4x[10] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/875160;
+<a name="l01432"></a>01432       _C4x[11] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/109395;
+<a name="l01433"></a>01433       _C4x[12] = (_ep2*(56*_ep2-68)+85)/55692;
+<a name="l01434"></a>01434       _C4x[13] = (14*_ep2-17)/14280;
+<a name="l01435"></a>01435       _C4x[14] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(7344);
+<a name="l01436"></a>01436       _C4x[15] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
+<a name="l01437"></a>01437                 7293)/15315300;
+<a name="l01438"></a>01438       _C4x[16] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/4375800;
+<a name="l01439"></a>01439       _C4x[17] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/425425;
+<a name="l01440"></a>01440       _C4x[18] = ((68-56*_ep2)*_ep2-85)/185640;
+<a name="l01441"></a>01441       _C4x[19] = (17-14*_ep2)/42840;
+<a name="l01442"></a>01442       _C4x[20] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20400);
+<a name="l01443"></a>01443       _C4x[21] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/42882840;
+<a name="l01444"></a>01444       _C4x[22] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/2382380;
+<a name="l01445"></a>01445       _C4x[23] = (_ep2*(56*_ep2-68)+85)/779688;
+<a name="l01446"></a>01446       _C4x[24] = (14*_ep2-17)/149940;
+<a name="l01447"></a>01447       _C4x[25] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8976);
+<a name="l01448"></a>01448       _C4x[26] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/27567540;
+<a name="l01449"></a>01449       _C4x[27] = ((68-56*_ep2)*_ep2-85)/5012280;
+<a name="l01450"></a>01450       _C4x[28] = (17-14*_ep2)/706860;
+<a name="l01451"></a>01451       _C4x[29] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(242352);
+<a name="l01452"></a>01452       _C4x[30] = (_ep2*(56*_ep2-68)+85)/67387320;
+<a name="l01453"></a>01453       _C4x[31] = (14*_ep2-17)/5183640;
+<a name="l01454"></a>01454       _C4x[32] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1283568);
+<a name="l01455"></a>01455       _C4x[33] = (17-14*_ep2)/79639560;
+<a name="l01456"></a>01456       _C4x[34] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1516944);
+<a name="l01457"></a>01457       _C4x[35] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(26254800);
+<a name="l01458"></a>01458       <span class="keywordflow">break</span>;
+<a name="l01459"></a>01459     <span class="keywordflow">default</span>:
+<a name="l01460"></a>01460       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC4_ <= 8, <span class="stringliteral">"Bad value of nC4_"</span>);
+<a name="l01461"></a>01461     }
+<a name="l01462"></a>01462   }
+<a name="l01463"></a>01463 
+<a name="l01464"></a>01464 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geodesic_8hpp.html b/doc/html/Geodesic_8hpp.html
index 6d81054..812b9f7 100644
--- a/doc/html/Geodesic_8hpp.html
+++ b/doc/html/Geodesic_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geodesic.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,18 +81,16 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">GEOGRAPHICLIB_GEODESIC_HPP</a>   "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">GEOGRAPHICLIB_GEODESIC_HPP</a>   "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>   (GEOGRAPHICLIB_PREC == 1 ? 6 : (GEOGRAPHICLIB_PREC == 0 ? 3 : 7))</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEODESIC_HPP   "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEODESIC_HPP   "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"</td>
         </tr>
       </table>
 </div>
@@ -113,8 +126,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geodesic_8hpp_source.html b/doc/html/Geodesic_8hpp_source.html
index 8da6a88..641cc7a 100644
--- a/doc/html/Geodesic_8hpp_source.html
+++ b/doc/html/Geodesic_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geodesic.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geodesic.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Geodesic class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEODESIC_HPP)</span>
 <a name="l00011"></a><a class="code" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEODESIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 
@@ -171,729 +186,739 @@
 <a name="l00121"></a>00121 <span class="comment">   *</span>
 <a name="l00122"></a>00122 <span class="comment">   * Example of use:</span>
 <a name="l00123"></a>00123 <span class="comment">   * \include example-Geodesic.cpp</span>
-<a name="l00124"></a>00124 <span class="comment">   **********************************************************************/</span>
-<a name="l00125"></a>00125 
-<a name="l00126"></a><a class="code" href="classGeographicLib_1_1Geodesic.html">00126</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> {
-<a name="l00127"></a>00127   <span class="keyword">private</span>:
-<a name="l00128"></a>00128     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00129"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac4a8bd684285e00b12427c052697a106">00129</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>;
-<a name="l00130"></a>00130     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00131"></a>00131     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00132"></a>00132     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00133"></a>00133     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00134"></a>00134     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00135"></a>00135     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00136"></a>00136     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3x_ = nA3_;
-<a name="l00137"></a>00137     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00138"></a>00138     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3x_ = (nC3_ * (nC3_ - 1)) / 2;
-<a name="l00139"></a>00139     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00140"></a>00140     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
-<a name="l00141"></a>00141     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 50;
-<a name="l00142"></a>00142 
-<a name="l00143"></a>00143     <span class="keyword">static</span> <span class="keyword">const</span> real tiny_;
-<a name="l00144"></a>00144     <span class="keyword">static</span> <span class="keyword">const</span> real tol0_;
-<a name="l00145"></a>00145     <span class="keyword">static</span> <span class="keyword">const</span> real tol1_;
-<a name="l00146"></a>00146     <span class="keyword">static</span> <span class="keyword">const</span> real tol2_;
-<a name="l00147"></a>00147     <span class="keyword">static</span> <span class="keyword">const</span> real xthresh_;
-<a name="l00148"></a>00148 
-<a name="l00149"></a>00149     <span class="keyword">enum</span> captype {
-<a name="l00150"></a>00150       CAP_NONE = 0U,
-<a name="l00151"></a>00151       CAP_C1   = 1U<<0,
-<a name="l00152"></a>00152       CAP_C1p  = 1U<<1,
-<a name="l00153"></a>00153       CAP_C2   = 1U<<2,
-<a name="l00154"></a>00154       CAP_C3   = 1U<<3,
-<a name="l00155"></a>00155       CAP_C4   = 1U<<4,
-<a name="l00156"></a>00156       CAP_ALL  = 0x1FU,
-<a name="l00157"></a>00157       OUT_ALL  = 0x7F80U,
-<a name="l00158"></a>00158     };
-<a name="l00159"></a>00159 
-<a name="l00160"></a>00160     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> SinCosSeries(<span class="keywordtype">bool</span> sinp,
-<a name="l00161"></a>00161                              <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx, <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n)
-<a name="l00162"></a>00162       <span class="keywordflow">throw</span>();
-<a name="l00163"></a>00163     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
-<a name="l00164"></a>00164       <span class="comment">// Place angle in [-180, 180).  Assumes x is in [-540, 540).</span>
-<a name="l00165"></a>00165       <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
-<a name="l00166"></a>00166     }
-<a name="l00167"></a>00167     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngRound(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
-<a name="l00168"></a>00168       <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
-<a name="l00169"></a>00169       <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees.  (This</span>
-<a name="l00170"></a>00170       <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
-<a name="l00171"></a>00171       <span class="comment">// degrees.)  We use this to avoid having to deal with near singular</span>
-<a name="l00172"></a>00172       <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
-<a name="l00173"></a>00173       <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
-<a name="l00174"></a>00174       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = std::abs(x);
-<a name="l00175"></a>00175       <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
-<a name="l00176"></a>00176       y = y < z ? z - (z - y) : y;
-<a name="l00177"></a>00177       <span class="keywordflow">return</span> x < 0 ? -y : y;
-<a name="l00178"></a>00178     }
-<a name="l00179"></a>00179     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx) <span class="keywordflow">throw</span>() {
-<a name="l00180"></a>00180       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sinx, cosx);
-<a name="l00181"></a>00181       sinx /= r;
-<a name="l00182"></a>00182       cosx /= r;
-<a name="l00183"></a>00183     }
-<a name="l00184"></a>00184     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>();
-<a name="l00185"></a>00185 
-<a name="l00186"></a>00186     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
-<a name="l00187"></a>00187     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _A3x[nA3x_], _C3x[nC3x_], _C4x[nC4x_];
+<a name="l00124"></a>00124 <span class="comment">   *</span>
+<a name="l00125"></a>00125 <span class="comment">   * <a href="Geod.1.html">Geod</a> is a command-line utility providing access</span>
+<a name="l00126"></a>00126 <span class="comment">   * to the functionality of Geodesic and GeodesicLine.</span>
+<a name="l00127"></a>00127 <span class="comment">   **********************************************************************/</span>
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Geodesic {
+<a name="l00130"></a>00130   <span class="keyword">private</span>:
+<a name="l00131"></a>00131     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00132"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac4a8bd684285e00b12427c052697a106">00132</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>;
+<a name="l00133"></a>00133     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00134"></a>00134     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00135"></a>00135     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00136"></a>00136     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00137"></a>00137     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00138"></a>00138     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00139"></a>00139     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3x_ = nA3_;
+<a name="l00140"></a>00140     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00141"></a>00141     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3x_ = (nC3_ * (nC3_ - 1)) / 2;
+<a name="l00142"></a>00142     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00143"></a>00143     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
+<a name="l00144"></a>00144     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 50;
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146     <span class="keyword">static</span> <span class="keyword">const</span> real tiny_;
+<a name="l00147"></a>00147     <span class="keyword">static</span> <span class="keyword">const</span> real tol0_;
+<a name="l00148"></a>00148     <span class="keyword">static</span> <span class="keyword">const</span> real tol1_;
+<a name="l00149"></a>00149     <span class="keyword">static</span> <span class="keyword">const</span> real tol2_;
+<a name="l00150"></a>00150     <span class="keyword">static</span> <span class="keyword">const</span> real xthresh_;
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152     <span class="keyword">enum</span> captype {
+<a name="l00153"></a>00153       CAP_NONE = 0U,
+<a name="l00154"></a>00154       CAP_C1   = 1U<<0,
+<a name="l00155"></a>00155       CAP_C1p  = 1U<<1,
+<a name="l00156"></a>00156       CAP_C2   = 1U<<2,
+<a name="l00157"></a>00157       CAP_C3   = 1U<<3,
+<a name="l00158"></a>00158       CAP_C4   = 1U<<4,
+<a name="l00159"></a>00159       CAP_ALL  = 0x1FU,
+<a name="l00160"></a>00160       OUT_ALL  = 0x7F80U,
+<a name="l00161"></a>00161     };
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> SinCosSeries(<span class="keywordtype">bool</span> sinp,
+<a name="l00164"></a>00164                              <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx, <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n)
+<a name="l00165"></a>00165       <span class="keywordflow">throw</span>();
+<a name="l00166"></a>00166     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00167"></a>00167       <span class="comment">// Place angle in [-180, 180).  Assumes x is in [-540, 540).</span>
+<a name="l00168"></a>00168       <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
+<a name="l00169"></a>00169     }
+<a name="l00170"></a>00170     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngRound(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00171"></a>00171       <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
+<a name="l00172"></a>00172       <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees.  (This</span>
+<a name="l00173"></a>00173       <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
+<a name="l00174"></a>00174       <span class="comment">// degrees.)  We use this to avoid having to deal with near singular</span>
+<a name="l00175"></a>00175       <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
+<a name="l00176"></a>00176       <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
+<a name="l00177"></a>00177       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = std::abs(x);
+<a name="l00178"></a>00178       <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
+<a name="l00179"></a>00179       y = y < z ? z - (z - y) : y;
+<a name="l00180"></a>00180       <span class="keywordflow">return</span> x < 0 ? -y : y;
+<a name="l00181"></a>00181     }
+<a name="l00182"></a>00182     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx) <span class="keywordflow">throw</span>() {
+<a name="l00183"></a>00183       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sinx, cosx);
+<a name="l00184"></a>00184       sinx /= r;
+<a name="l00185"></a>00185       cosx /= r;
+<a name="l00186"></a>00186     }
+<a name="l00187"></a>00187     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>();
 <a name="l00188"></a>00188 
-<a name="l00189"></a>00189     <span class="keywordtype">void</span> Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
-<a name="l00190"></a>00190                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
-<a name="l00191"></a>00191                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00192"></a>00192                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12s, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
-<a name="l00193"></a>00193                  <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00194"></a>00194                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00195"></a>00195     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00196"></a>00196                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
-<a name="l00197"></a>00197                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
-<a name="l00198"></a>00198                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
-<a name="l00199"></a>00199                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00200"></a>00200     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00201"></a>00201                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
-<a name="l00202"></a>00202                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
-<a name="l00203"></a>00203                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
-<a name="l00204"></a>00204                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12, <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
-<a name="l00205"></a>00205                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[])
-<a name="l00206"></a>00206       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00207"></a>00207 
-<a name="l00208"></a>00208     <span class="comment">// These are Maxima generated functions to provide series approximations to</span>
-<a name="l00209"></a>00209     <span class="comment">// the integrals for the ellipsoidal geodesic.</span>
-<a name="l00210"></a>00210     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
-<a name="l00211"></a>00211     <span class="keyword">static</span> <span class="keywordtype">void</span> C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
-<a name="l00212"></a>00212     <span class="keyword">static</span> <span class="keywordtype">void</span> C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
-<a name="l00213"></a>00213     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
-<a name="l00214"></a>00214     <span class="keyword">static</span> <span class="keywordtype">void</span> C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
-<a name="l00215"></a>00215 
-<a name="l00216"></a>00216     <span class="keywordtype">void</span> A3coeff() throw();
-<a name="l00217"></a>00217     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) const throw();
-<a name="l00218"></a>00218     <span class="keywordtype">void</span> C3coeff() throw();
-<a name="l00219"></a>00219     <span class="keywordtype">void</span> C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
-<a name="l00220"></a>00220     <span class="keywordtype">void</span> C4coeff() throw();
-<a name="l00221"></a>00221     <span class="keywordtype">void</span> C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
-<a name="l00222"></a>00222 
-<a name="l00223"></a>00223   public:
-<a name="l00224"></a>00224 <span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment">    /**</span>
-<a name="l00226"></a>00226 <span class="comment">     * Bit masks for what calculations to do.  These masks do double duty.</span>
-<a name="l00227"></a>00227 <span class="comment">     * They signify to the GeodesicLine::GeodesicLine constructor and to</span>
-<a name="l00228"></a>00228 <span class="comment">     * Geodesic::Line what capabilities should be included in the GeodesicLine</span>
-<a name="l00229"></a>00229 <span class="comment">     * object.  They also specify which results to return in the general</span>
-<a name="l00230"></a>00230 <span class="comment">     * routines Geodesic::GenDirect and Geodesic::GenInverse routines.</span>
-<a name="l00231"></a>00231 <span class="comment">     * GeodesicLine::mask is a duplication of this enum.</span>
-<a name="l00232"></a>00232 <span class="comment">     **********************************************************************/</span>
-<a name="l00233"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">00233</a>     enum <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">mask</a> {<span class="comment"></span>
-<a name="l00234"></a>00234 <span class="comment">      /**</span>
-<a name="l00235"></a>00235 <span class="comment">       * No capabilities, no output.</span>
-<a name="l00236"></a>00236 <span class="comment">       * @hideinitializer</span>
-<a name="l00237"></a>00237 <span class="comment">       **********************************************************************/</span>
-<a name="l00238"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ab10adfebcb73de5356c4787246f056af">00238</a>       NONE          = 0U,<span class="comment"></span>
-<a name="l00239"></a>00239 <span class="comment">      /**</span>
-<a name="l00240"></a>00240 <span class="comment">       * Calculate latitude \e lat2.  (It's not necessary to include this as a</span>
-<a name="l00241"></a>00241 <span class="comment">       * capability to GeodesicLine because this is included by default.)</span>
-<a name="l00242"></a>00242 <span class="comment">       * @hideinitializer</span>
-<a name="l00243"></a>00243 <span class="comment">       **********************************************************************/</span>
-<a name="l00244"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">00244</a>       LATITUDE      = 1U<<7  | CAP_NONE,<span class="comment"></span>
-<a name="l00245"></a>00245 <span class="comment">      /**</span>
-<a name="l00246"></a>00246 <span class="comment">       * Calculate longitude \e lon2.</span>
-<a name="l00247"></a>00247 <span class="comment">       * @hideinitializer</span>
-<a name="l00248"></a>00248 <span class="comment">       **********************************************************************/</span>
-<a name="l00249"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">00249</a>       LONGITUDE     = 1U<<8  | CAP_C3,<span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment">      /**</span>
-<a name="l00251"></a>00251 <span class="comment">       * Calculate azimuths \e azi1 and \e azi2.  (It's not necessary to</span>
-<a name="l00252"></a>00252 <span class="comment">       * include this as a capability to GeodesicLine because this is included</span>
-<a name="l00253"></a>00253 <span class="comment">       * by default.)</span>
-<a name="l00254"></a>00254 <span class="comment">       * @hideinitializer</span>
-<a name="l00255"></a>00255 <span class="comment">       **********************************************************************/</span>
-<a name="l00256"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa413d0b81ccb4b5302285b1a01f16c08">00256</a>       AZIMUTH       = 1U<<9  | CAP_NONE,<span class="comment"></span>
-<a name="l00257"></a>00257 <span class="comment">      /**</span>
-<a name="l00258"></a>00258 <span class="comment">       * Calculate distance \e s12.</span>
-<a name="l00259"></a>00259 <span class="comment">       * @hideinitializer</span>
-<a name="l00260"></a>00260 <span class="comment">       **********************************************************************/</span>
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">00261</a>       DISTANCE      = 1U<<10 | CAP_C1,<span class="comment"></span>
-<a name="l00262"></a>00262 <span class="comment">      /**</span>
-<a name="l00263"></a>00263 <span class="comment">       * Allow distance \e s12 to be used as input in the direct geodesic</span>
-<a name="l00264"></a>00264 <span class="comment">       * problem.</span>
-<a name="l00265"></a>00265 <span class="comment">       * @hideinitializer</span>
-<a name="l00266"></a>00266 <span class="comment">       **********************************************************************/</span>
-<a name="l00267"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ae20140cdf788fa0497df59630d3211ef">00267</a>       DISTANCE_IN   = 1U<<11 | CAP_C1 | CAP_C1p,<span class="comment"></span>
-<a name="l00268"></a>00268 <span class="comment">      /**</span>
-<a name="l00269"></a>00269 <span class="comment">       * Calculate reduced length \e m12.</span>
-<a name="l00270"></a>00270 <span class="comment">       * @hideinitializer</span>
-<a name="l00271"></a>00271 <span class="comment">       **********************************************************************/</span>
-<a name="l00272"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">00272</a>       REDUCEDLENGTH = 1U<<12 | CAP_C1 | CAP_C2,<span class="comment"></span>
-<a name="l00273"></a>00273 <span class="comment">      /**</span>
-<a name="l00274"></a>00274 <span class="comment">       * Calculate geodesic scales \e M12 and \e M21.</span>
-<a name="l00275"></a>00275 <span class="comment">       * @hideinitializer</span>
-<a name="l00276"></a>00276 <span class="comment">       **********************************************************************/</span>
-<a name="l00277"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828afb114302395314a68dfef3c14693ea2e">00277</a>       GEODESICSCALE = 1U<<13 | CAP_C1 | CAP_C2,<span class="comment"></span>
-<a name="l00278"></a>00278 <span class="comment">      /**</span>
-<a name="l00279"></a>00279 <span class="comment">       * Calculate area \e S12.</span>
-<a name="l00280"></a>00280 <span class="comment">       * @hideinitializer</span>
-<a name="l00281"></a>00281 <span class="comment">       **********************************************************************/</span>
-<a name="l00282"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">00282</a>       AREA          = 1U<<14 | CAP_C4,<span class="comment"></span>
-<a name="l00283"></a>00283 <span class="comment">      /**</span>
-<a name="l00284"></a>00284 <span class="comment">       * All capabilities.  Calculate everything.</span>
-<a name="l00285"></a>00285 <span class="comment">       * @hideinitializer</span>
-<a name="l00286"></a>00286 <span class="comment">       **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">00287</a>       ALL           = OUT_ALL| CAP_ALL,
-<a name="l00288"></a>00288     };
-<a name="l00289"></a>00289 <span class="comment"></span>
-<a name="l00290"></a>00290 <span class="comment">    /** \name Constructor</span>
-<a name="l00291"></a>00291 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00292"></a>00292 <span class="comment">    ///@{</span>
-<a name="l00293"></a>00293 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00294"></a>00294 <span class="comment">     * Constructor for a ellipsoid with</span>
-<a name="l00295"></a>00295 <span class="comment">     *</span>
-<a name="l00296"></a>00296 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
-<a name="l00297"></a>00297 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00298"></a>00298 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00299"></a>00299 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00300"></a>00300 <span class="comment">     *</span>
-<a name="l00301"></a>00301 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid is</span>
-<a name="l00302"></a>00302 <span class="comment">     * non-positive.</span>
-<a name="l00303"></a>00303 <span class="comment">     **********************************************************************/</span>
-<a name="l00304"></a>00304     <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);<span class="comment"></span>
-<a name="l00305"></a>00305 <span class="comment">    ///@}</span>
-<a name="l00306"></a>00306 <span class="comment"></span><span class="comment"></span>
-<a name="l00307"></a>00307 <span class="comment">    /** \name Direct geodesic problem specified in terms of distance.</span>
-<a name="l00308"></a>00308 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00309"></a>00309 <span class="comment">    ///@{</span>
-<a name="l00310"></a>00310 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00311"></a>00311 <span class="comment">     * Perform the direct geodesic calculation where the length of the geodesic</span>
-<a name="l00312"></a>00312 <span class="comment">     * is specify in terms of distance.</span>
-<a name="l00313"></a>00313 <span class="comment">     *</span>
-<a name="l00314"></a>00314 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00315"></a>00315 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00316"></a>00316 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00317"></a>00317 <span class="comment">     * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
-<a name="l00318"></a>00318 <span class="comment">     *   signed.</span>
-<a name="l00319"></a>00319 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00320"></a>00320 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees).</span>
-<a name="l00321"></a>00321 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00322"></a>00322 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00323"></a>00323 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00324"></a>00324 <span class="comment">     *   (dimensionless).</span>
-<a name="l00325"></a>00325 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00326"></a>00326 <span class="comment">     *   (dimensionless).</span>
-<a name="l00327"></a>00327 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00328"></a>00328 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00329"></a>00329 <span class="comment">     *</span>
-<a name="l00330"></a>00330 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00331"></a>00331 <span class="comment">     * in the range [-180, 360].  The values of \e lon2 and \e azi2 returned</span>
-<a name="l00332"></a>00332 <span class="comment">     * are in the range [-180, 180).</span>
-<a name="l00333"></a>00333 <span class="comment">     *</span>
-<a name="l00334"></a>00334 <span class="comment">     * If either point is at a pole, the azimuth is defined by keeping the</span>
-<a name="l00335"></a>00335 <span class="comment">     * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
-<a name="l00336"></a>00336 <span class="comment">     * taking the limit \e eps -> 0 from above.  An arc length greater that 180</span>
-<a name="l00337"></a>00337 <span class="comment">     * degrees signifies a geodesic which is not a shortest path.  (For a</span>
-<a name="l00338"></a>00338 <span class="comment">     * prolate ellipsoid, an additional condition is necessary for a shortest</span>
-<a name="l00339"></a>00339 <span class="comment">     * path: the longitudinal extent must not exceed of 180 degrees.)</span>
-<a name="l00340"></a>00340 <span class="comment">     *</span>
-<a name="l00341"></a>00341 <span class="comment">     * The following functions are overloaded versions of Geodesic::Direct</span>
-<a name="l00342"></a>00342 <span class="comment">     * which omit some of the output parameters.  Note, however, that the arc</span>
-<a name="l00343"></a>00343 <span class="comment">     * length is always computed and returned as the function value.</span>
-<a name="l00344"></a>00344 <span class="comment">     **********************************************************************/</span>
-<a name="l00345"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">00345</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00346"></a>00346                       real& lat2, real& lon2, real& azi2,
-<a name="l00347"></a>00347                       real& m12, real& M12, real& M21, real& S12)
-<a name="l00348"></a>00348       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00349"></a>00349       real t;
-<a name="l00350"></a>00350       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00351"></a>00351                        LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00352"></a>00352                        REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00353"></a>00353                        lat2, lon2, azi2, t, m12, M12, M21, S12);
-<a name="l00354"></a>00354     }
-<a name="l00355"></a>00355 <span class="comment"></span>
-<a name="l00356"></a>00356 <span class="comment">    /**</span>
-<a name="l00357"></a>00357 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
-<a name="l00358"></a>00358 <span class="comment">     **********************************************************************/</span>
-<a name="l00359"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8b9e451fc4093253cfe3f8051d72a14">00359</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00360"></a>00360                       real& lat2, real& lon2)
-<a name="l00361"></a>00361       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00362"></a>00362       real t;
-<a name="l00363"></a>00363       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00364"></a>00364                        LATITUDE | LONGITUDE,
-<a name="l00365"></a>00365                        lat2, lon2, t, t, t, t, t, t);
-<a name="l00366"></a>00366     }
-<a name="l00367"></a>00367 <span class="comment"></span>
-<a name="l00368"></a>00368 <span class="comment">    /**</span>
-<a name="l00369"></a>00369 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
-<a name="l00370"></a>00370 <span class="comment">     **********************************************************************/</span>
-<a name="l00371"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8f0b5f4db73c5d8d11797698f937402">00371</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00372"></a>00372                       real& lat2, real& lon2, real& azi2)
-<a name="l00373"></a>00373       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00374"></a>00374       real t;
-<a name="l00375"></a>00375       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00376"></a>00376                        LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00377"></a>00377                        lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00378"></a>00378     }
-<a name="l00379"></a>00379 <span class="comment"></span>
-<a name="l00380"></a>00380 <span class="comment">    /**</span>
-<a name="l00381"></a>00381 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
-<a name="l00382"></a>00382 <span class="comment">     **********************************************************************/</span>
-<a name="l00383"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">00383</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00384"></a>00384                       real& lat2, real& lon2, real& azi2, real& m12)
-<a name="l00385"></a>00385       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00386"></a>00386       real t;
-<a name="l00387"></a>00387       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00388"></a>00388                        LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
-<a name="l00389"></a>00389                        lat2, lon2, azi2, t, m12, t, t, t);
-<a name="l00390"></a>00390     }
-<a name="l00391"></a>00391 <span class="comment"></span>
-<a name="l00392"></a>00392 <span class="comment">    /**</span>
-<a name="l00393"></a>00393 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
-<a name="l00394"></a>00394 <span class="comment">     **********************************************************************/</span>
-<a name="l00395"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7fb2003b8f1d68976fac43d158b4b8b4">00395</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00396"></a>00396                       real& lat2, real& lon2, real& azi2,
-<a name="l00397"></a>00397                       real& M12, real& M21)
-<a name="l00398"></a>00398       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00399"></a>00399       real t;
-<a name="l00400"></a>00400       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00401"></a>00401                        LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
-<a name="l00402"></a>00402                        lat2, lon2, azi2, t, t, M12, M21, t);
-<a name="l00403"></a>00403     }
-<a name="l00404"></a>00404 <span class="comment"></span>
-<a name="l00405"></a>00405 <span class="comment">    /**</span>
-<a name="l00406"></a>00406 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
-<a name="l00407"></a>00407 <span class="comment">     **********************************************************************/</span>
-<a name="l00408"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a65cf95dc7f5c0bfd427e963281e044f0">00408</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00409"></a>00409                       real& lat2, real& lon2, real& azi2,
-<a name="l00410"></a>00410                       real& m12, real& M12, real& M21)
-<a name="l00411"></a>00411       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00412"></a>00412       real t;
-<a name="l00413"></a>00413       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00414"></a>00414                        LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00415"></a>00415                        REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00416"></a>00416                        lat2, lon2, azi2, t, m12, M12, M21, t);
-<a name="l00417"></a>00417     }<span class="comment"></span>
-<a name="l00418"></a>00418 <span class="comment">    ///@}</span>
-<a name="l00419"></a>00419 <span class="comment"></span><span class="comment"></span>
-<a name="l00420"></a>00420 <span class="comment">    /** \name Direct geodesic problem specified in terms of arc length.</span>
-<a name="l00421"></a>00421 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00422"></a>00422 <span class="comment">    ///@{</span>
-<a name="l00423"></a>00423 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00424"></a>00424 <span class="comment">     * Perform the direct geodesic calculation where the length of the geodesic</span>
-<a name="l00425"></a>00425 <span class="comment">     * is specify in terms of arc length.</span>
-<a name="l00426"></a>00426 <span class="comment">     *</span>
-<a name="l00427"></a>00427 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00428"></a>00428 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00429"></a>00429 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00430"></a>00430 <span class="comment">     * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
-<a name="l00431"></a>00431 <span class="comment">     *   be signed.</span>
-<a name="l00432"></a>00432 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00433"></a>00433 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees).</span>
-<a name="l00434"></a>00434 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00435"></a>00435 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00436"></a>00436 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00437"></a>00437 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00438"></a>00438 <span class="comment">     *   (dimensionless).</span>
-<a name="l00439"></a>00439 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00440"></a>00440 <span class="comment">     *   (dimensionless).</span>
-<a name="l00441"></a>00441 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00442"></a>00442 <span class="comment">     *</span>
-<a name="l00443"></a>00443 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00444"></a>00444 <span class="comment">     * in the range [-180, 360].  The values of \e lon2 and \e azi2 returned</span>
-<a name="l00445"></a>00445 <span class="comment">     * are in the range [-180, 180).</span>
-<a name="l00446"></a>00446 <span class="comment">     *</span>
-<a name="l00447"></a>00447 <span class="comment">     * If either point is at a pole, the azimuth is defined by keeping the</span>
-<a name="l00448"></a>00448 <span class="comment">     * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
-<a name="l00449"></a>00449 <span class="comment">     * taking the limit \e eps -> 0 from above.  An arc length greater that 180</span>
-<a name="l00450"></a>00450 <span class="comment">     * degrees signifies a geodesic which is not a shortest path.  (For a</span>
-<a name="l00451"></a>00451 <span class="comment">     * prolate ellipsoid, an additional condition is necessary for a shortest</span>
-<a name="l00452"></a>00452 <span class="comment">     * path: the longitudinal extent must not exceed of 180 degrees.)</span>
-<a name="l00453"></a>00453 <span class="comment">     *</span>
-<a name="l00454"></a>00454 <span class="comment">     * The following functions are overloaded versions of Geodesic::Direct</span>
-<a name="l00455"></a>00455 <span class="comment">     * which omit some of the output parameters.</span>
-<a name="l00456"></a>00456 <span class="comment">     **********************************************************************/</span>
-<a name="l00457"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">00457</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00458"></a>00458                    real& lat2, real& lon2, real& azi2, real& s12,
-<a name="l00459"></a>00459                    real& m12, real& M12, real& M21, real& S12)
-<a name="l00460"></a>00460       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00461"></a>00461       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00462"></a>00462                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00463"></a>00463                 REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00464"></a>00464                 lat2, lon2, azi2, s12, m12, M12, M21, S12);
-<a name="l00465"></a>00465     }
-<a name="l00466"></a>00466 <span class="comment"></span>
-<a name="l00467"></a>00467 <span class="comment">    /**</span>
-<a name="l00468"></a>00468 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00469"></a>00469 <span class="comment">     **********************************************************************/</span>
-<a name="l00470"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa1bed6c11200c0323cffd0e7027e4df2">00470</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00471"></a>00471                    real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00472"></a>00472       real t;
-<a name="l00473"></a>00473       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00474"></a>00474                 LATITUDE | LONGITUDE,
-<a name="l00475"></a>00475                 lat2, lon2, t, t, t, t, t, t);
-<a name="l00476"></a>00476     }
-<a name="l00477"></a>00477 <span class="comment"></span>
-<a name="l00478"></a>00478 <span class="comment">    /**</span>
-<a name="l00479"></a>00479 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00480"></a>00480 <span class="comment">     **********************************************************************/</span>
-<a name="l00481"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6f8eabd951b2fe23ffacb6209b2d43bc">00481</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00482"></a>00482                    real& lat2, real& lon2, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00483"></a>00483       real t;
-<a name="l00484"></a>00484       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00485"></a>00485                 LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00486"></a>00486                 lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00487"></a>00487     }
-<a name="l00488"></a>00488 <span class="comment"></span>
-<a name="l00489"></a>00489 <span class="comment">    /**</span>
-<a name="l00490"></a>00490 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00491"></a>00491 <span class="comment">     **********************************************************************/</span>
-<a name="l00492"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a223802b76bae1665f360b2e343d7afd7">00492</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00493"></a>00493                    real& lat2, real& lon2, real& azi2, real& s12)
-<a name="l00494"></a>00494       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00495"></a>00495       real t;
-<a name="l00496"></a>00496       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00497"></a>00497                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
-<a name="l00498"></a>00498                 lat2, lon2, azi2, s12, t, t, t, t);
-<a name="l00499"></a>00499     }
-<a name="l00500"></a>00500 <span class="comment"></span>
-<a name="l00501"></a>00501 <span class="comment">    /**</span>
-<a name="l00502"></a>00502 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00503"></a>00503 <span class="comment">     **********************************************************************/</span>
-<a name="l00504"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63ffe80d449adad813dc98805adcca81">00504</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00505"></a>00505                    real& lat2, real& lon2, real& azi2,
-<a name="l00506"></a>00506                    real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00507"></a>00507       real t;
-<a name="l00508"></a>00508       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00509"></a>00509                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00510"></a>00510                 REDUCEDLENGTH,
-<a name="l00511"></a>00511                 lat2, lon2, azi2, s12, m12, t, t, t);
-<a name="l00512"></a>00512     }
-<a name="l00513"></a>00513 <span class="comment"></span>
-<a name="l00514"></a>00514 <span class="comment">    /**</span>
-<a name="l00515"></a>00515 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00516"></a>00516 <span class="comment">     **********************************************************************/</span>
-<a name="l00517"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a55c17605d76f6c46ac5b11f36e8e8641">00517</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00518"></a>00518                    real& lat2, real& lon2, real& azi2, real& s12,
-<a name="l00519"></a>00519                    real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00520"></a>00520       real t;
-<a name="l00521"></a>00521       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00522"></a>00522                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00523"></a>00523                 GEODESICSCALE,
-<a name="l00524"></a>00524                 lat2, lon2, azi2, s12, t, M12, M21, t);
-<a name="l00525"></a>00525     }
-<a name="l00526"></a>00526 <span class="comment"></span>
-<a name="l00527"></a>00527 <span class="comment">    /**</span>
-<a name="l00528"></a>00528 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00529"></a>00529 <span class="comment">     **********************************************************************/</span>
-<a name="l00530"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#adc8a4d02e631e8966d5842056a49be9c">00530</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00531"></a>00531                    real& lat2, real& lon2, real& azi2, real& s12,
-<a name="l00532"></a>00532                    real& m12, real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00533"></a>00533       real t;
-<a name="l00534"></a>00534       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00535"></a>00535                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00536"></a>00536                 REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00537"></a>00537                 lat2, lon2, azi2, s12, m12, M12, M21, t);
-<a name="l00538"></a>00538     }<span class="comment"></span>
-<a name="l00539"></a>00539 <span class="comment">    ///@}</span>
-<a name="l00540"></a>00540 <span class="comment"></span><span class="comment"></span>
-<a name="l00541"></a>00541 <span class="comment">    /** \name General version of the direct geodesic solution.</span>
-<a name="l00542"></a>00542 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00543"></a>00543 <span class="comment">    ///@{</span>
-<a name="l00544"></a>00544 <span class="comment"></span><span class="comment"></span>
-<a name="l00545"></a>00545 <span class="comment">    /**</span>
-<a name="l00546"></a>00546 <span class="comment">     * The general direct geodesic calculation.  Geodesic::Direct and</span>
-<a name="l00547"></a>00547 <span class="comment">     * Geodesic::ArcDirect are defined in terms of this function.</span>
-<a name="l00548"></a>00548 <span class="comment">     *</span>
-<a name="l00549"></a>00549 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00550"></a>00550 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00551"></a>00551 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00552"></a>00552 <span class="comment">     * @param[in] arcmode boolean flag determining the meaning of the second</span>
-<a name="l00553"></a>00553 <span class="comment">     *   parameter.</span>
-<a name="l00554"></a>00554 <span class="comment">     * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
-<a name="l00555"></a>00555 <span class="comment">     *   point 1 and point 2 (meters); otherwise it is the arc length between</span>
-<a name="l00556"></a>00556 <span class="comment">     *   point 1 and point 2 (degrees); it can be signed.</span>
-<a name="l00557"></a>00557 <span class="comment">     * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
-<a name="l00558"></a>00558 <span class="comment">     *   specifying which of the following parameters should be set.</span>
-<a name="l00559"></a>00559 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00560"></a>00560 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees).</span>
-<a name="l00561"></a>00561 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00562"></a>00562 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00563"></a>00563 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00564"></a>00564 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00565"></a>00565 <span class="comment">     *   (dimensionless).</span>
-<a name="l00566"></a>00566 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00567"></a>00567 <span class="comment">     *   (dimensionless).</span>
-<a name="l00568"></a>00568 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00569"></a>00569 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00570"></a>00570 <span class="comment">     *</span>
-<a name="l00571"></a>00571 <span class="comment">     * The Geodesic::mask values possible for \e outmask are</span>
-<a name="l00572"></a>00572 <span class="comment">     * - \e outmask |= Geodesic::LATITUDE for the latitude \e lat2.</span>
-<a name="l00573"></a>00573 <span class="comment">     * - \e outmask |= Geodesic::LONGITUDE for the latitude \e lon2.</span>
-<a name="l00574"></a>00574 <span class="comment">     * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
-<a name="l00575"></a>00575 <span class="comment">     * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
-<a name="l00576"></a>00576 <span class="comment">     * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
-<a name="l00577"></a>00577 <span class="comment">     *   m12.</span>
-<a name="l00578"></a>00578 <span class="comment">     * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
-<a name="l00579"></a>00579 <span class="comment">     *   M12 and \e M21.</span>
-<a name="l00580"></a>00580 <span class="comment">     * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
-<a name="l00581"></a>00581 <span class="comment">     * .</span>
-<a name="l00582"></a>00582 <span class="comment">     * The function value \e a12 is always computed and returned and this</span>
-<a name="l00583"></a>00583 <span class="comment">     * equals \e s12_a12 is \e arcmode is true.  If \e outmask includes</span>
-<a name="l00584"></a>00584 <span class="comment">     * Geodesic::DISTANCE and \e arcmode is false, then \e s12 = \e s12_a12.</span>
-<a name="l00585"></a>00585 <span class="comment">     * It is not necessary to include Geodesic::DISTANCE_IN in \e outmask; this</span>
-<a name="l00586"></a>00586 <span class="comment">     * is automatically included is \e arcmode is false.</span>
-<a name="l00587"></a>00587 <span class="comment">     **********************************************************************/</span>
-<a name="l00588"></a>00588     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GenDirect(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1,
-<a name="l00589"></a>00589                          <span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
-<a name="l00590"></a>00590                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
-<a name="l00591"></a>00591                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00592"></a>00592                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00593"></a>00593 <span class="comment">    ///@}</span>
-<a name="l00594"></a>00594 <span class="comment"></span><span class="comment"></span>
-<a name="l00595"></a>00595 <span class="comment">    /** \name Inverse geodesic problem.</span>
-<a name="l00596"></a>00596 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00597"></a>00597 <span class="comment">    ///@{</span>
-<a name="l00598"></a>00598 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00599"></a>00599 <span class="comment">     * Perform the inverse geodesic calculation.</span>
-<a name="l00600"></a>00600 <span class="comment">     *</span>
-<a name="l00601"></a>00601 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00602"></a>00602 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00603"></a>00603 <span class="comment">     * @param[in] lat2 latitude of point 2 (degrees).</span>
-<a name="l00604"></a>00604 <span class="comment">     * @param[in] lon2 longitude of point 2 (degrees).</span>
-<a name="l00605"></a>00605 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00606"></a>00606 <span class="comment">     * @param[out] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00607"></a>00607 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00608"></a>00608 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00609"></a>00609 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00610"></a>00610 <span class="comment">     *   (dimensionless).</span>
-<a name="l00611"></a>00611 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00612"></a>00612 <span class="comment">     *   (dimensionless).</span>
-<a name="l00613"></a>00613 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00614"></a>00614 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00615"></a>00615 <span class="comment">     *</span>
-<a name="l00616"></a>00616 <span class="comment">     * \e lat1 and \e lat2 should be in the range [-90, 90]; \e lon1 and \e</span>
-<a name="l00617"></a>00617 <span class="comment">     * lon2 should be in the range [-180, 360].  The values of \e azi1 and \e</span>
-<a name="l00618"></a>00618 <span class="comment">     * azi2 returned are in the range [-180, 180).</span>
-<a name="l00619"></a>00619 <span class="comment">     *</span>
-<a name="l00620"></a>00620 <span class="comment">     * If either point is at a pole, the azimuth is defined by keeping the</span>
-<a name="l00621"></a>00621 <span class="comment">     * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
-<a name="l00622"></a>00622 <span class="comment">     * taking the limit \e eps -> 0 from above.  If the routine fails to</span>
-<a name="l00623"></a>00623 <span class="comment">     * converge, then all the requested outputs are set to Math::NaN().  (Test</span>
-<a name="l00624"></a>00624 <span class="comment">     * for such results with Math::isnan.)  This is not expected to happen with</span>
-<a name="l00625"></a>00625 <span class="comment">     * ellipsoidal models of the earth; please report all cases where this</span>
-<a name="l00626"></a>00626 <span class="comment">     * occurs.</span>
-<a name="l00627"></a>00627 <span class="comment">     *</span>
-<a name="l00628"></a>00628 <span class="comment">     * The following functions are overloaded versions of Geodesic::Inverse</span>
-<a name="l00629"></a>00629 <span class="comment">     * which omit some of the output parameters.  Note, however, that the arc</span>
-<a name="l00630"></a>00630 <span class="comment">     * length is always computed and returned as the function value.</span>
-<a name="l00631"></a>00631 <span class="comment">     **********************************************************************/</span>
-<a name="l00632"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">00632</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00633"></a>00633                        real& s12, real& azi1, real& azi2, real& m12,
-<a name="l00634"></a>00634                        real& M12, real& M21, real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00635"></a>00635       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00636"></a>00636                         DISTANCE | AZIMUTH |
-<a name="l00637"></a>00637                         REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00638"></a>00638                         s12, azi1, azi2, m12, M12, M21, S12);
-<a name="l00639"></a>00639     }
-<a name="l00640"></a>00640 <span class="comment"></span>
-<a name="l00641"></a>00641 <span class="comment">    /**</span>
-<a name="l00642"></a>00642 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
-<a name="l00643"></a>00643 <span class="comment">     **********************************************************************/</span>
-<a name="l00644"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7c35218473b1784b1a80b8631f2d345d">00644</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00645"></a>00645                        real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00646"></a>00646       real t;
-<a name="l00647"></a>00647       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00648"></a>00648                         DISTANCE,
-<a name="l00649"></a>00649                         s12, t, t, t, t, t, t);
-<a name="l00650"></a>00650     }
-<a name="l00651"></a>00651 <span class="comment"></span>
-<a name="l00652"></a>00652 <span class="comment">    /**</span>
-<a name="l00653"></a>00653 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
-<a name="l00654"></a>00654 <span class="comment">     **********************************************************************/</span>
-<a name="l00655"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a599e587407713f7019906881d6116873">00655</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00656"></a>00656                        real& azi1, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00657"></a>00657       real t;
-<a name="l00658"></a>00658       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00659"></a>00659                         AZIMUTH,
-<a name="l00660"></a>00660                         t, azi1, azi2, t, t, t, t);
-<a name="l00661"></a>00661     }
-<a name="l00662"></a>00662 <span class="comment"></span>
-<a name="l00663"></a>00663 <span class="comment">    /**</span>
-<a name="l00664"></a>00664 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
-<a name="l00665"></a>00665 <span class="comment">     **********************************************************************/</span>
-<a name="l00666"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3e07eef498c82ac25b482cadf129d8ae">00666</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00667"></a>00667                        real& s12, real& azi1, real& azi2)
-<a name="l00668"></a>00668       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00669"></a>00669       real t;
-<a name="l00670"></a>00670       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00671"></a>00671                         DISTANCE | AZIMUTH,
-<a name="l00672"></a>00672                         s12, azi1, azi2, t, t, t, t);
-<a name="l00673"></a>00673     }
-<a name="l00674"></a>00674 <span class="comment"></span>
-<a name="l00675"></a>00675 <span class="comment">    /**</span>
-<a name="l00676"></a>00676 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
-<a name="l00677"></a>00677 <span class="comment">     **********************************************************************/</span>
-<a name="l00678"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">00678</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00679"></a>00679                        real& s12, real& azi1, real& azi2, real& m12)
-<a name="l00680"></a>00680       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00681"></a>00681       real t;
-<a name="l00682"></a>00682       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00683"></a>00683                         DISTANCE | AZIMUTH | REDUCEDLENGTH,
-<a name="l00684"></a>00684                         s12, azi1, azi2, m12, t, t, t);
-<a name="l00685"></a>00685     }
-<a name="l00686"></a>00686 <span class="comment"></span>
-<a name="l00687"></a>00687 <span class="comment">    /**</span>
-<a name="l00688"></a>00688 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
-<a name="l00689"></a>00689 <span class="comment">     **********************************************************************/</span>
-<a name="l00690"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">00690</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00691"></a>00691                        real& s12, real& azi1, real& azi2,
-<a name="l00692"></a>00692                        real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00693"></a>00693       real t;
-<a name="l00694"></a>00694       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00695"></a>00695                         DISTANCE | AZIMUTH | GEODESICSCALE,
-<a name="l00696"></a>00696                         s12, azi1, azi2, t, M12, M21, t);
-<a name="l00697"></a>00697     }
-<a name="l00698"></a>00698 <span class="comment"></span>
-<a name="l00699"></a>00699 <span class="comment">    /**</span>
-<a name="l00700"></a>00700 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
-<a name="l00701"></a>00701 <span class="comment">     **********************************************************************/</span>
-<a name="l00702"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad3f98a5f2adf39ff26cf3d6fe32258a8">00702</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00703"></a>00703                        real& s12, real& azi1, real& azi2, real& m12,
-<a name="l00704"></a>00704                        real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00705"></a>00705       real t;
-<a name="l00706"></a>00706       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00707"></a>00707                         DISTANCE | AZIMUTH |
-<a name="l00708"></a>00708                         REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00709"></a>00709                         s12, azi1, azi2, m12, M12, M21, t);
-<a name="l00710"></a>00710     }<span class="comment"></span>
-<a name="l00711"></a>00711 <span class="comment">    ///@}</span>
-<a name="l00712"></a>00712 <span class="comment"></span><span class="comment"></span>
-<a name="l00713"></a>00713 <span class="comment">    /** \name General version of inverse geodesic solution.</span>
-<a name="l00714"></a>00714 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00715"></a>00715 <span class="comment">    ///@{</span>
-<a name="l00716"></a>00716 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00717"></a>00717 <span class="comment">     * The general inverse geodesic calculation.  Geodesic::Inverse is defined</span>
-<a name="l00718"></a>00718 <span class="comment">     * in terms of this function.</span>
-<a name="l00719"></a>00719 <span class="comment">     *</span>
-<a name="l00720"></a>00720 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00721"></a>00721 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00722"></a>00722 <span class="comment">     * @param[in] lat2 latitude of point 2 (degrees).</span>
-<a name="l00723"></a>00723 <span class="comment">     * @param[in] lon2 longitude of point 2 (degrees).</span>
-<a name="l00724"></a>00724 <span class="comment">     * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
-<a name="l00725"></a>00725 <span class="comment">     *   specifying which of the following parameters should be set.</span>
-<a name="l00726"></a>00726 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00727"></a>00727 <span class="comment">     * @param[out] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00728"></a>00728 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00729"></a>00729 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00730"></a>00730 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00731"></a>00731 <span class="comment">     *   (dimensionless).</span>
-<a name="l00732"></a>00732 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00733"></a>00733 <span class="comment">     *   (dimensionless).</span>
-<a name="l00734"></a>00734 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00735"></a>00735 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00736"></a>00736 <span class="comment">     *</span>
-<a name="l00737"></a>00737 <span class="comment">     * The Geodesic::mask values possible for \e outmask are</span>
-<a name="l00738"></a>00738 <span class="comment">     * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
-<a name="l00739"></a>00739 <span class="comment">     * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
-<a name="l00740"></a>00740 <span class="comment">     * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
-<a name="l00741"></a>00741 <span class="comment">     *   m12.</span>
-<a name="l00742"></a>00742 <span class="comment">     * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
-<a name="l00743"></a>00743 <span class="comment">     *   M12 and \e M21.</span>
-<a name="l00744"></a>00744 <span class="comment">     * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
-<a name="l00745"></a>00745 <span class="comment">     * .</span>
-<a name="l00746"></a>00746 <span class="comment">     * The arc length is always computed and returned as the function value.</span>
-<a name="l00747"></a>00747 <span class="comment">     **********************************************************************/</span>
-<a name="l00748"></a>00748     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GenInverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon2,
-<a name="l00749"></a>00749                           <span class="keywordtype">unsigned</span> outmask,
-<a name="l00750"></a>00750                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
-<a name="l00751"></a>00751                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12)
-<a name="l00752"></a>00752       <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00753"></a>00753 <span class="comment">    ///@}</span>
-<a name="l00754"></a>00754 <span class="comment"></span><span class="comment"></span>
-<a name="l00755"></a>00755 <span class="comment">    /** \name Interface to GeodesicLine.</span>
-<a name="l00756"></a>00756 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00757"></a>00757 <span class="comment">    ///@{</span>
-<a name="l00758"></a>00758 <span class="comment"></span><span class="comment"></span>
-<a name="l00759"></a>00759 <span class="comment">    /**</span>
-<a name="l00760"></a>00760 <span class="comment">     * Set up to compute several points on a singe geodesic.</span>
-<a name="l00761"></a>00761 <span class="comment">     *</span>
-<a name="l00762"></a>00762 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00763"></a>00763 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00764"></a>00764 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00765"></a>00765 <span class="comment">     * @param[in] caps bitor'ed combination of Geodesic::mask values</span>
-<a name="l00766"></a>00766 <span class="comment">     *   specifying the capabilities the GeodesicLine object should possess,</span>
-<a name="l00767"></a>00767 <span class="comment">     *   i.e., which quantities can be returned in calls to</span>
-<a name="l00768"></a>00768 <span class="comment">     *   GeodesicLib::Position.</span>
-<a name="l00769"></a>00769 <span class="comment">     *</span>
-<a name="l00770"></a>00770 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00771"></a>00771 <span class="comment">     * in the range [-180, 360].</span>
+<a name="l00189"></a>00189     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
+<a name="l00190"></a>00190     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _A3x[nA3x_], _C3x[nC3x_], _C4x[nC4x_];
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192     <span class="keywordtype">void</span> Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
+<a name="l00193"></a>00193                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
+<a name="l00194"></a>00194                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00195"></a>00195                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12s, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
+<a name="l00196"></a>00196                  <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00197"></a>00197                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00198"></a>00198     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00199"></a>00199                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
+<a name="l00200"></a>00200                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
+<a name="l00201"></a>00201                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
+<a name="l00202"></a>00202                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00203"></a>00203     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00204"></a>00204                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
+<a name="l00205"></a>00205                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
+<a name="l00206"></a>00206                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
+<a name="l00207"></a>00207                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12, <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
+<a name="l00208"></a>00208                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[])
+<a name="l00209"></a>00209       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211     <span class="comment">// These are Maxima generated functions to provide series approximations to</span>
+<a name="l00212"></a>00212     <span class="comment">// the integrals for the ellipsoidal geodesic.</span>
+<a name="l00213"></a>00213     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
+<a name="l00214"></a>00214     <span class="keyword">static</span> <span class="keywordtype">void</span> C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
+<a name="l00215"></a>00215     <span class="keyword">static</span> <span class="keywordtype">void</span> C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
+<a name="l00216"></a>00216     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
+<a name="l00217"></a>00217     <span class="keyword">static</span> <span class="keywordtype">void</span> C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219     <span class="keywordtype">void</span> A3coeff() throw();
+<a name="l00220"></a>00220     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) const throw();
+<a name="l00221"></a>00221     <span class="keywordtype">void</span> C3coeff() throw();
+<a name="l00222"></a>00222     <span class="keywordtype">void</span> C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
+<a name="l00223"></a>00223     <span class="keywordtype">void</span> C4coeff() throw();
+<a name="l00224"></a>00224     <span class="keywordtype">void</span> C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
+<a name="l00225"></a>00225 
+<a name="l00226"></a>00226   public:
+<a name="l00227"></a>00227 <span class="comment"></span>
+<a name="l00228"></a>00228 <span class="comment">    /**</span>
+<a name="l00229"></a>00229 <span class="comment">     * Bit masks for what calculations to do.  These masks do double duty.</span>
+<a name="l00230"></a>00230 <span class="comment">     * They signify to the GeodesicLine::GeodesicLine constructor and to</span>
+<a name="l00231"></a>00231 <span class="comment">     * Geodesic::Line what capabilities should be included in the GeodesicLine</span>
+<a name="l00232"></a>00232 <span class="comment">     * object.  They also specify which results to return in the general</span>
+<a name="l00233"></a>00233 <span class="comment">     * routines Geodesic::GenDirect and Geodesic::GenInverse routines.</span>
+<a name="l00234"></a>00234 <span class="comment">     * GeodesicLine::mask is a duplication of this enum.</span>
+<a name="l00235"></a>00235 <span class="comment">     **********************************************************************/</span>
+<a name="l00236"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">00236</a>     enum <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">mask</a> {<span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">      /**</span>
+<a name="l00238"></a>00238 <span class="comment">       * No capabilities, no output.</span>
+<a name="l00239"></a>00239 <span class="comment">       * @hideinitializer</span>
+<a name="l00240"></a>00240 <span class="comment">       **********************************************************************/</span>
+<a name="l00241"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ab10adfebcb73de5356c4787246f056af">00241</a>       NONE          = 0U,<span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment">      /**</span>
+<a name="l00243"></a>00243 <span class="comment">       * Calculate latitude \e lat2.  (It's not necessary to include this as a</span>
+<a name="l00244"></a>00244 <span class="comment">       * capability to GeodesicLine because this is included by default.)</span>
+<a name="l00245"></a>00245 <span class="comment">       * @hideinitializer</span>
+<a name="l00246"></a>00246 <span class="comment">       **********************************************************************/</span>
+<a name="l00247"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">00247</a>       LATITUDE      = 1U<<7  | CAP_NONE,<span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment">      /**</span>
+<a name="l00249"></a>00249 <span class="comment">       * Calculate longitude \e lon2.</span>
+<a name="l00250"></a>00250 <span class="comment">       * @hideinitializer</span>
+<a name="l00251"></a>00251 <span class="comment">       **********************************************************************/</span>
+<a name="l00252"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">00252</a>       LONGITUDE     = 1U<<8  | CAP_C3,<span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment">      /**</span>
+<a name="l00254"></a>00254 <span class="comment">       * Calculate azimuths \e azi1 and \e azi2.  (It's not necessary to</span>
+<a name="l00255"></a>00255 <span class="comment">       * include this as a capability to GeodesicLine because this is included</span>
+<a name="l00256"></a>00256 <span class="comment">       * by default.)</span>
+<a name="l00257"></a>00257 <span class="comment">       * @hideinitializer</span>
+<a name="l00258"></a>00258 <span class="comment">       **********************************************************************/</span>
+<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa413d0b81ccb4b5302285b1a01f16c08">00259</a>       AZIMUTH       = 1U<<9  | CAP_NONE,<span class="comment"></span>
+<a name="l00260"></a>00260 <span class="comment">      /**</span>
+<a name="l00261"></a>00261 <span class="comment">       * Calculate distance \e s12.</span>
+<a name="l00262"></a>00262 <span class="comment">       * @hideinitializer</span>
+<a name="l00263"></a>00263 <span class="comment">       **********************************************************************/</span>
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">00264</a>       DISTANCE      = 1U<<10 | CAP_C1,<span class="comment"></span>
+<a name="l00265"></a>00265 <span class="comment">      /**</span>
+<a name="l00266"></a>00266 <span class="comment">       * Allow distance \e s12 to be used as input in the direct geodesic</span>
+<a name="l00267"></a>00267 <span class="comment">       * problem.</span>
+<a name="l00268"></a>00268 <span class="comment">       * @hideinitializer</span>
+<a name="l00269"></a>00269 <span class="comment">       **********************************************************************/</span>
+<a name="l00270"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ae20140cdf788fa0497df59630d3211ef">00270</a>       DISTANCE_IN   = 1U<<11 | CAP_C1 | CAP_C1p,<span class="comment"></span>
+<a name="l00271"></a>00271 <span class="comment">      /**</span>
+<a name="l00272"></a>00272 <span class="comment">       * Calculate reduced length \e m12.</span>
+<a name="l00273"></a>00273 <span class="comment">       * @hideinitializer</span>
+<a name="l00274"></a>00274 <span class="comment">       **********************************************************************/</span>
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">00275</a>       REDUCEDLENGTH = 1U<<12 | CAP_C1 | CAP_C2,<span class="comment"></span>
+<a name="l00276"></a>00276 <span class="comment">      /**</span>
+<a name="l00277"></a>00277 <span class="comment">       * Calculate geodesic scales \e M12 and \e M21.</span>
+<a name="l00278"></a>00278 <span class="comment">       * @hideinitializer</span>
+<a name="l00279"></a>00279 <span class="comment">       **********************************************************************/</span>
+<a name="l00280"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828afb114302395314a68dfef3c14693ea2e">00280</a>       GEODESICSCALE = 1U<<13 | CAP_C1 | CAP_C2,<span class="comment"></span>
+<a name="l00281"></a>00281 <span class="comment">      /**</span>
+<a name="l00282"></a>00282 <span class="comment">       * Calculate area \e S12.</span>
+<a name="l00283"></a>00283 <span class="comment">       * @hideinitializer</span>
+<a name="l00284"></a>00284 <span class="comment">       **********************************************************************/</span>
+<a name="l00285"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">00285</a>       AREA          = 1U<<14 | CAP_C4,<span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment">      /**</span>
+<a name="l00287"></a>00287 <span class="comment">       * All capabilities.  Calculate everything.</span>
+<a name="l00288"></a>00288 <span class="comment">       * @hideinitializer</span>
+<a name="l00289"></a>00289 <span class="comment">       **********************************************************************/</span>
+<a name="l00290"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">00290</a>       ALL           = OUT_ALL| CAP_ALL,
+<a name="l00291"></a>00291     };
+<a name="l00292"></a>00292 <span class="comment"></span>
+<a name="l00293"></a>00293 <span class="comment">    /** \name Constructor</span>
+<a name="l00294"></a>00294 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00295"></a>00295 <span class="comment">    ///@{</span>
+<a name="l00296"></a>00296 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00297"></a>00297 <span class="comment">     * Constructor for a ellipsoid with</span>
+<a name="l00298"></a>00298 <span class="comment">     *</span>
+<a name="l00299"></a>00299 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
+<a name="l00300"></a>00300 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00301"></a>00301 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00302"></a>00302 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00303"></a>00303 <span class="comment">     *</span>
+<a name="l00304"></a>00304 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid is</span>
+<a name="l00305"></a>00305 <span class="comment">     * non-positive.</span>
+<a name="l00306"></a>00306 <span class="comment">     **********************************************************************/</span>
+<a name="l00307"></a>00307     Geodesic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);<span class="comment"></span>
+<a name="l00308"></a>00308 <span class="comment">    ///@}</span>
+<a name="l00309"></a>00309 <span class="comment"></span><span class="comment"></span>
+<a name="l00310"></a>00310 <span class="comment">    /** \name Direct geodesic problem specified in terms of distance.</span>
+<a name="l00311"></a>00311 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00312"></a>00312 <span class="comment">    ///@{</span>
+<a name="l00313"></a>00313 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00314"></a>00314 <span class="comment">     * Perform the direct geodesic calculation where the length of the geodesic</span>
+<a name="l00315"></a>00315 <span class="comment">     * is specify in terms of distance.</span>
+<a name="l00316"></a>00316 <span class="comment">     *</span>
+<a name="l00317"></a>00317 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00318"></a>00318 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00319"></a>00319 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00320"></a>00320 <span class="comment">     * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
+<a name="l00321"></a>00321 <span class="comment">     *   signed.</span>
+<a name="l00322"></a>00322 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00323"></a>00323 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees).</span>
+<a name="l00324"></a>00324 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00325"></a>00325 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00326"></a>00326 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00327"></a>00327 <span class="comment">     *   (dimensionless).</span>
+<a name="l00328"></a>00328 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00329"></a>00329 <span class="comment">     *   (dimensionless).</span>
+<a name="l00330"></a>00330 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00331"></a>00331 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00332"></a>00332 <span class="comment">     *</span>
+<a name="l00333"></a>00333 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00334"></a>00334 <span class="comment">     * in the range [-180, 360].  The values of \e lon2 and \e azi2 returned</span>
+<a name="l00335"></a>00335 <span class="comment">     * are in the range [-180, 180).</span>
+<a name="l00336"></a>00336 <span class="comment">     *</span>
+<a name="l00337"></a>00337 <span class="comment">     * If either point is at a pole, the azimuth is defined by keeping the</span>
+<a name="l00338"></a>00338 <span class="comment">     * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
+<a name="l00339"></a>00339 <span class="comment">     * taking the limit \e eps -> 0 from above.  An arc length greater that 180</span>
+<a name="l00340"></a>00340 <span class="comment">     * degrees signifies a geodesic which is not a shortest path.  (For a</span>
+<a name="l00341"></a>00341 <span class="comment">     * prolate ellipsoid, an additional condition is necessary for a shortest</span>
+<a name="l00342"></a>00342 <span class="comment">     * path: the longitudinal extent must not exceed of 180 degrees.)</span>
+<a name="l00343"></a>00343 <span class="comment">     *</span>
+<a name="l00344"></a>00344 <span class="comment">     * The following functions are overloaded versions of Geodesic::Direct</span>
+<a name="l00345"></a>00345 <span class="comment">     * which omit some of the output parameters.  Note, however, that the arc</span>
+<a name="l00346"></a>00346 <span class="comment">     * length is always computed and returned as the function value.</span>
+<a name="l00347"></a>00347 <span class="comment">     **********************************************************************/</span>
+<a name="l00348"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">00348</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00349"></a>00349                       real& lat2, real& lon2, real& azi2,
+<a name="l00350"></a>00350                       real& m12, real& M12, real& M21, real& S12)
+<a name="l00351"></a>00351       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00352"></a>00352       real t;
+<a name="l00353"></a>00353       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00354"></a>00354                        LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00355"></a>00355                        REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00356"></a>00356                        lat2, lon2, azi2, t, m12, M12, M21, S12);
+<a name="l00357"></a>00357     }
+<a name="l00358"></a>00358 <span class="comment"></span>
+<a name="l00359"></a>00359 <span class="comment">    /**</span>
+<a name="l00360"></a>00360 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
+<a name="l00361"></a>00361 <span class="comment">     **********************************************************************/</span>
+<a name="l00362"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8b9e451fc4093253cfe3f8051d72a14">00362</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00363"></a>00363                       real& lat2, real& lon2)
+<a name="l00364"></a>00364       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00365"></a>00365       real t;
+<a name="l00366"></a>00366       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00367"></a>00367                        LATITUDE | LONGITUDE,
+<a name="l00368"></a>00368                        lat2, lon2, t, t, t, t, t, t);
+<a name="l00369"></a>00369     }
+<a name="l00370"></a>00370 <span class="comment"></span>
+<a name="l00371"></a>00371 <span class="comment">    /**</span>
+<a name="l00372"></a>00372 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
+<a name="l00373"></a>00373 <span class="comment">     **********************************************************************/</span>
+<a name="l00374"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8f0b5f4db73c5d8d11797698f937402">00374</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00375"></a>00375                       real& lat2, real& lon2, real& azi2)
+<a name="l00376"></a>00376       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00377"></a>00377       real t;
+<a name="l00378"></a>00378       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00379"></a>00379                        LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00380"></a>00380                        lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00381"></a>00381     }
+<a name="l00382"></a>00382 <span class="comment"></span>
+<a name="l00383"></a>00383 <span class="comment">    /**</span>
+<a name="l00384"></a>00384 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
+<a name="l00385"></a>00385 <span class="comment">     **********************************************************************/</span>
+<a name="l00386"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">00386</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00387"></a>00387                       real& lat2, real& lon2, real& azi2, real& m12)
+<a name="l00388"></a>00388       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00389"></a>00389       real t;
+<a name="l00390"></a>00390       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00391"></a>00391                        LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
+<a name="l00392"></a>00392                        lat2, lon2, azi2, t, m12, t, t, t);
+<a name="l00393"></a>00393     }
+<a name="l00394"></a>00394 <span class="comment"></span>
+<a name="l00395"></a>00395 <span class="comment">    /**</span>
+<a name="l00396"></a>00396 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
+<a name="l00397"></a>00397 <span class="comment">     **********************************************************************/</span>
+<a name="l00398"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7fb2003b8f1d68976fac43d158b4b8b4">00398</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00399"></a>00399                       real& lat2, real& lon2, real& azi2,
+<a name="l00400"></a>00400                       real& M12, real& M21)
+<a name="l00401"></a>00401       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00402"></a>00402       real t;
+<a name="l00403"></a>00403       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00404"></a>00404                        LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
+<a name="l00405"></a>00405                        lat2, lon2, azi2, t, t, M12, M21, t);
+<a name="l00406"></a>00406     }
+<a name="l00407"></a>00407 <span class="comment"></span>
+<a name="l00408"></a>00408 <span class="comment">    /**</span>
+<a name="l00409"></a>00409 <span class="comment">     * See the documentation for Geodesic::Direct.</span>
+<a name="l00410"></a>00410 <span class="comment">     **********************************************************************/</span>
+<a name="l00411"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a65cf95dc7f5c0bfd427e963281e044f0">00411</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00412"></a>00412                       real& lat2, real& lon2, real& azi2,
+<a name="l00413"></a>00413                       real& m12, real& M12, real& M21)
+<a name="l00414"></a>00414       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00415"></a>00415       real t;
+<a name="l00416"></a>00416       <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00417"></a>00417                        LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00418"></a>00418                        REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00419"></a>00419                        lat2, lon2, azi2, t, m12, M12, M21, t);
+<a name="l00420"></a>00420     }<span class="comment"></span>
+<a name="l00421"></a>00421 <span class="comment">    ///@}</span>
+<a name="l00422"></a>00422 <span class="comment"></span><span class="comment"></span>
+<a name="l00423"></a>00423 <span class="comment">    /** \name Direct geodesic problem specified in terms of arc length.</span>
+<a name="l00424"></a>00424 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00425"></a>00425 <span class="comment">    ///@{</span>
+<a name="l00426"></a>00426 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00427"></a>00427 <span class="comment">     * Perform the direct geodesic calculation where the length of the geodesic</span>
+<a name="l00428"></a>00428 <span class="comment">     * is specify in terms of arc length.</span>
+<a name="l00429"></a>00429 <span class="comment">     *</span>
+<a name="l00430"></a>00430 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00431"></a>00431 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00432"></a>00432 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00433"></a>00433 <span class="comment">     * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
+<a name="l00434"></a>00434 <span class="comment">     *   be signed.</span>
+<a name="l00435"></a>00435 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00436"></a>00436 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees).</span>
+<a name="l00437"></a>00437 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00438"></a>00438 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00439"></a>00439 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00440"></a>00440 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00441"></a>00441 <span class="comment">     *   (dimensionless).</span>
+<a name="l00442"></a>00442 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00443"></a>00443 <span class="comment">     *   (dimensionless).</span>
+<a name="l00444"></a>00444 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00445"></a>00445 <span class="comment">     *</span>
+<a name="l00446"></a>00446 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00447"></a>00447 <span class="comment">     * in the range [-180, 360].  The values of \e lon2 and \e azi2 returned</span>
+<a name="l00448"></a>00448 <span class="comment">     * are in the range [-180, 180).</span>
+<a name="l00449"></a>00449 <span class="comment">     *</span>
+<a name="l00450"></a>00450 <span class="comment">     * If either point is at a pole, the azimuth is defined by keeping the</span>
+<a name="l00451"></a>00451 <span class="comment">     * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
+<a name="l00452"></a>00452 <span class="comment">     * taking the limit \e eps -> 0 from above.  An arc length greater that 180</span>
+<a name="l00453"></a>00453 <span class="comment">     * degrees signifies a geodesic which is not a shortest path.  (For a</span>
+<a name="l00454"></a>00454 <span class="comment">     * prolate ellipsoid, an additional condition is necessary for a shortest</span>
+<a name="l00455"></a>00455 <span class="comment">     * path: the longitudinal extent must not exceed of 180 degrees.)</span>
+<a name="l00456"></a>00456 <span class="comment">     *</span>
+<a name="l00457"></a>00457 <span class="comment">     * The following functions are overloaded versions of Geodesic::Direct</span>
+<a name="l00458"></a>00458 <span class="comment">     * which omit some of the output parameters.</span>
+<a name="l00459"></a>00459 <span class="comment">     **********************************************************************/</span>
+<a name="l00460"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">00460</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00461"></a>00461                    real& lat2, real& lon2, real& azi2, real& s12,
+<a name="l00462"></a>00462                    real& m12, real& M12, real& M21, real& S12)
+<a name="l00463"></a>00463       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00464"></a>00464       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00465"></a>00465                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00466"></a>00466                 REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00467"></a>00467                 lat2, lon2, azi2, s12, m12, M12, M21, S12);
+<a name="l00468"></a>00468     }
+<a name="l00469"></a>00469 <span class="comment"></span>
+<a name="l00470"></a>00470 <span class="comment">    /**</span>
+<a name="l00471"></a>00471 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00472"></a>00472 <span class="comment">     **********************************************************************/</span>
+<a name="l00473"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa1bed6c11200c0323cffd0e7027e4df2">00473</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00474"></a>00474                    real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00475"></a>00475       real t;
+<a name="l00476"></a>00476       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00477"></a>00477                 LATITUDE | LONGITUDE,
+<a name="l00478"></a>00478                 lat2, lon2, t, t, t, t, t, t);
+<a name="l00479"></a>00479     }
+<a name="l00480"></a>00480 <span class="comment"></span>
+<a name="l00481"></a>00481 <span class="comment">    /**</span>
+<a name="l00482"></a>00482 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00483"></a>00483 <span class="comment">     **********************************************************************/</span>
+<a name="l00484"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6f8eabd951b2fe23ffacb6209b2d43bc">00484</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00485"></a>00485                    real& lat2, real& lon2, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00486"></a>00486       real t;
+<a name="l00487"></a>00487       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00488"></a>00488                 LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00489"></a>00489                 lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00490"></a>00490     }
+<a name="l00491"></a>00491 <span class="comment"></span>
+<a name="l00492"></a>00492 <span class="comment">    /**</span>
+<a name="l00493"></a>00493 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00494"></a>00494 <span class="comment">     **********************************************************************/</span>
+<a name="l00495"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a223802b76bae1665f360b2e343d7afd7">00495</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00496"></a>00496                    real& lat2, real& lon2, real& azi2, real& s12)
+<a name="l00497"></a>00497       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00498"></a>00498       real t;
+<a name="l00499"></a>00499       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00500"></a>00500                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
+<a name="l00501"></a>00501                 lat2, lon2, azi2, s12, t, t, t, t);
+<a name="l00502"></a>00502     }
+<a name="l00503"></a>00503 <span class="comment"></span>
+<a name="l00504"></a>00504 <span class="comment">    /**</span>
+<a name="l00505"></a>00505 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00506"></a>00506 <span class="comment">     **********************************************************************/</span>
+<a name="l00507"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63ffe80d449adad813dc98805adcca81">00507</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00508"></a>00508                    real& lat2, real& lon2, real& azi2,
+<a name="l00509"></a>00509                    real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00510"></a>00510       real t;
+<a name="l00511"></a>00511       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00512"></a>00512                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00513"></a>00513                 REDUCEDLENGTH,
+<a name="l00514"></a>00514                 lat2, lon2, azi2, s12, m12, t, t, t);
+<a name="l00515"></a>00515     }
+<a name="l00516"></a>00516 <span class="comment"></span>
+<a name="l00517"></a>00517 <span class="comment">    /**</span>
+<a name="l00518"></a>00518 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00519"></a>00519 <span class="comment">     **********************************************************************/</span>
+<a name="l00520"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a55c17605d76f6c46ac5b11f36e8e8641">00520</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00521"></a>00521                    real& lat2, real& lon2, real& azi2, real& s12,
+<a name="l00522"></a>00522                    real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00523"></a>00523       real t;
+<a name="l00524"></a>00524       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00525"></a>00525                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00526"></a>00526                 GEODESICSCALE,
+<a name="l00527"></a>00527                 lat2, lon2, azi2, s12, t, M12, M21, t);
+<a name="l00528"></a>00528     }
+<a name="l00529"></a>00529 <span class="comment"></span>
+<a name="l00530"></a>00530 <span class="comment">    /**</span>
+<a name="l00531"></a>00531 <span class="comment">     * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00532"></a>00532 <span class="comment">     **********************************************************************/</span>
+<a name="l00533"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#adc8a4d02e631e8966d5842056a49be9c">00533</a>     <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00534"></a>00534                    real& lat2, real& lon2, real& azi2, real& s12,
+<a name="l00535"></a>00535                    real& m12, real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00536"></a>00536       real t;
+<a name="l00537"></a>00537       GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00538"></a>00538                 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00539"></a>00539                 REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00540"></a>00540                 lat2, lon2, azi2, s12, m12, M12, M21, t);
+<a name="l00541"></a>00541     }<span class="comment"></span>
+<a name="l00542"></a>00542 <span class="comment">    ///@}</span>
+<a name="l00543"></a>00543 <span class="comment"></span><span class="comment"></span>
+<a name="l00544"></a>00544 <span class="comment">    /** \name General version of the direct geodesic solution.</span>
+<a name="l00545"></a>00545 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00546"></a>00546 <span class="comment">    ///@{</span>
+<a name="l00547"></a>00547 <span class="comment"></span><span class="comment"></span>
+<a name="l00548"></a>00548 <span class="comment">    /**</span>
+<a name="l00549"></a>00549 <span class="comment">     * The general direct geodesic calculation.  Geodesic::Direct and</span>
+<a name="l00550"></a>00550 <span class="comment">     * Geodesic::ArcDirect are defined in terms of this function.</span>
+<a name="l00551"></a>00551 <span class="comment">     *</span>
+<a name="l00552"></a>00552 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00553"></a>00553 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00554"></a>00554 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00555"></a>00555 <span class="comment">     * @param[in] arcmode boolean flag determining the meaning of the second</span>
+<a name="l00556"></a>00556 <span class="comment">     *   parameter.</span>
+<a name="l00557"></a>00557 <span class="comment">     * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
+<a name="l00558"></a>00558 <span class="comment">     *   point 1 and point 2 (meters); otherwise it is the arc length between</span>
+<a name="l00559"></a>00559 <span class="comment">     *   point 1 and point 2 (degrees); it can be signed.</span>
+<a name="l00560"></a>00560 <span class="comment">     * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
+<a name="l00561"></a>00561 <span class="comment">     *   specifying which of the following parameters should be set.</span>
+<a name="l00562"></a>00562 <span class="comment">     * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00563"></a>00563 <span class="comment">     * @param[out] lon2 longitude of point 2 (degrees).</span>
+<a name="l00564"></a>00564 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00565"></a>00565 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00566"></a>00566 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00567"></a>00567 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00568"></a>00568 <span class="comment">     *   (dimensionless).</span>
+<a name="l00569"></a>00569 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00570"></a>00570 <span class="comment">     *   (dimensionless).</span>
+<a name="l00571"></a>00571 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00572"></a>00572 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00573"></a>00573 <span class="comment">     *</span>
+<a name="l00574"></a>00574 <span class="comment">     * The Geodesic::mask values possible for \e outmask are</span>
+<a name="l00575"></a>00575 <span class="comment">     * - \e outmask |= Geodesic::LATITUDE for the latitude \e lat2.</span>
+<a name="l00576"></a>00576 <span class="comment">     * - \e outmask |= Geodesic::LONGITUDE for the latitude \e lon2.</span>
+<a name="l00577"></a>00577 <span class="comment">     * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
+<a name="l00578"></a>00578 <span class="comment">     * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
+<a name="l00579"></a>00579 <span class="comment">     * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
+<a name="l00580"></a>00580 <span class="comment">     *   m12.</span>
+<a name="l00581"></a>00581 <span class="comment">     * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
+<a name="l00582"></a>00582 <span class="comment">     *   M12 and \e M21.</span>
+<a name="l00583"></a>00583 <span class="comment">     * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
+<a name="l00584"></a>00584 <span class="comment">     * .</span>
+<a name="l00585"></a>00585 <span class="comment">     * The function value \e a12 is always computed and returned and this</span>
+<a name="l00586"></a>00586 <span class="comment">     * equals \e s12_a12 is \e arcmode is true.  If \e outmask includes</span>
+<a name="l00587"></a>00587 <span class="comment">     * Geodesic::DISTANCE and \e arcmode is false, then \e s12 = \e s12_a12.</span>
+<a name="l00588"></a>00588 <span class="comment">     * It is not necessary to include Geodesic::DISTANCE_IN in \e outmask; this</span>
+<a name="l00589"></a>00589 <span class="comment">     * is automatically included is \e arcmode is false.</span>
+<a name="l00590"></a>00590 <span class="comment">     **********************************************************************/</span>
+<a name="l00591"></a>00591     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GenDirect(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">rea [...]
+<a name="l00592"></a>00592                          <span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
+<a name="l00593"></a>00593                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
+<a name="l00594"></a>00594                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00595"></a>00595                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00596"></a>00596 <span class="comment">    ///@}</span>
+<a name="l00597"></a>00597 <span class="comment"></span><span class="comment"></span>
+<a name="l00598"></a>00598 <span class="comment">    /** \name Inverse geodesic problem.</span>
+<a name="l00599"></a>00599 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00600"></a>00600 <span class="comment">    ///@{</span>
+<a name="l00601"></a>00601 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00602"></a>00602 <span class="comment">     * Perform the inverse geodesic calculation.</span>
+<a name="l00603"></a>00603 <span class="comment">     *</span>
+<a name="l00604"></a>00604 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00605"></a>00605 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00606"></a>00606 <span class="comment">     * @param[in] lat2 latitude of point 2 (degrees).</span>
+<a name="l00607"></a>00607 <span class="comment">     * @param[in] lon2 longitude of point 2 (degrees).</span>
+<a name="l00608"></a>00608 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00609"></a>00609 <span class="comment">     * @param[out] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00610"></a>00610 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00611"></a>00611 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00612"></a>00612 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00613"></a>00613 <span class="comment">     *   (dimensionless).</span>
+<a name="l00614"></a>00614 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00615"></a>00615 <span class="comment">     *   (dimensionless).</span>
+<a name="l00616"></a>00616 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00617"></a>00617 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00618"></a>00618 <span class="comment">     *</span>
+<a name="l00619"></a>00619 <span class="comment">     * \e lat1 and \e lat2 should be in the range [-90, 90]; \e lon1 and \e</span>
+<a name="l00620"></a>00620 <span class="comment">     * lon2 should be in the range [-180, 360].  The values of \e azi1 and \e</span>
+<a name="l00621"></a>00621 <span class="comment">     * azi2 returned are in the range [-180, 180).</span>
+<a name="l00622"></a>00622 <span class="comment">     *</span>
+<a name="l00623"></a>00623 <span class="comment">     * If either point is at a pole, the azimuth is defined by keeping the</span>
+<a name="l00624"></a>00624 <span class="comment">     * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
+<a name="l00625"></a>00625 <span class="comment">     * taking the limit \e eps -> 0 from above.  If the routine fails to</span>
+<a name="l00626"></a>00626 <span class="comment">     * converge, then all the requested outputs are set to Math::NaN().  (Test</span>
+<a name="l00627"></a>00627 <span class="comment">     * for such results with Math::isnan.)  This is not expected to happen with</span>
+<a name="l00628"></a>00628 <span class="comment">     * ellipsoidal models of the earth; please report all cases where this</span>
+<a name="l00629"></a>00629 <span class="comment">     * occurs.</span>
+<a name="l00630"></a>00630 <span class="comment">     *</span>
+<a name="l00631"></a>00631 <span class="comment">     * The following functions are overloaded versions of Geodesic::Inverse</span>
+<a name="l00632"></a>00632 <span class="comment">     * which omit some of the output parameters.  Note, however, that the arc</span>
+<a name="l00633"></a>00633 <span class="comment">     * length is always computed and returned as the function value.</span>
+<a name="l00634"></a>00634 <span class="comment">     **********************************************************************/</span>
+<a name="l00635"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">00635</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00636"></a>00636                        real& s12, real& azi1, real& azi2, real& m12,
+<a name="l00637"></a>00637                        real& M12, real& M21, real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00638"></a>00638       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00639"></a>00639                         DISTANCE | AZIMUTH |
+<a name="l00640"></a>00640                         REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00641"></a>00641                         s12, azi1, azi2, m12, M12, M21, S12);
+<a name="l00642"></a>00642     }
+<a name="l00643"></a>00643 <span class="comment"></span>
+<a name="l00644"></a>00644 <span class="comment">    /**</span>
+<a name="l00645"></a>00645 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
+<a name="l00646"></a>00646 <span class="comment">     **********************************************************************/</span>
+<a name="l00647"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7c35218473b1784b1a80b8631f2d345d">00647</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00648"></a>00648                        real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00649"></a>00649       real t;
+<a name="l00650"></a>00650       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00651"></a>00651                         DISTANCE,
+<a name="l00652"></a>00652                         s12, t, t, t, t, t, t);
+<a name="l00653"></a>00653     }
+<a name="l00654"></a>00654 <span class="comment"></span>
+<a name="l00655"></a>00655 <span class="comment">    /**</span>
+<a name="l00656"></a>00656 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
+<a name="l00657"></a>00657 <span class="comment">     **********************************************************************/</span>
+<a name="l00658"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a599e587407713f7019906881d6116873">00658</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00659"></a>00659                        real& azi1, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00660"></a>00660       real t;
+<a name="l00661"></a>00661       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00662"></a>00662                         AZIMUTH,
+<a name="l00663"></a>00663                         t, azi1, azi2, t, t, t, t);
+<a name="l00664"></a>00664     }
+<a name="l00665"></a>00665 <span class="comment"></span>
+<a name="l00666"></a>00666 <span class="comment">    /**</span>
+<a name="l00667"></a>00667 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
+<a name="l00668"></a>00668 <span class="comment">     **********************************************************************/</span>
+<a name="l00669"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3e07eef498c82ac25b482cadf129d8ae">00669</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00670"></a>00670                        real& s12, real& azi1, real& azi2)
+<a name="l00671"></a>00671       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00672"></a>00672       real t;
+<a name="l00673"></a>00673       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00674"></a>00674                         DISTANCE | AZIMUTH,
+<a name="l00675"></a>00675                         s12, azi1, azi2, t, t, t, t);
+<a name="l00676"></a>00676     }
+<a name="l00677"></a>00677 <span class="comment"></span>
+<a name="l00678"></a>00678 <span class="comment">    /**</span>
+<a name="l00679"></a>00679 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
+<a name="l00680"></a>00680 <span class="comment">     **********************************************************************/</span>
+<a name="l00681"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">00681</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00682"></a>00682                        real& s12, real& azi1, real& azi2, real& m12)
+<a name="l00683"></a>00683       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00684"></a>00684       real t;
+<a name="l00685"></a>00685       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00686"></a>00686                         DISTANCE | AZIMUTH | REDUCEDLENGTH,
+<a name="l00687"></a>00687                         s12, azi1, azi2, m12, t, t, t);
+<a name="l00688"></a>00688     }
+<a name="l00689"></a>00689 <span class="comment"></span>
+<a name="l00690"></a>00690 <span class="comment">    /**</span>
+<a name="l00691"></a>00691 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
+<a name="l00692"></a>00692 <span class="comment">     **********************************************************************/</span>
+<a name="l00693"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">00693</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00694"></a>00694                        real& s12, real& azi1, real& azi2,
+<a name="l00695"></a>00695                        real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00696"></a>00696       real t;
+<a name="l00697"></a>00697       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00698"></a>00698                         DISTANCE | AZIMUTH | GEODESICSCALE,
+<a name="l00699"></a>00699                         s12, azi1, azi2, t, M12, M21, t);
+<a name="l00700"></a>00700     }
+<a name="l00701"></a>00701 <span class="comment"></span>
+<a name="l00702"></a>00702 <span class="comment">    /**</span>
+<a name="l00703"></a>00703 <span class="comment">     * See the documentation for Geodesic::Inverse.</span>
+<a name="l00704"></a>00704 <span class="comment">     **********************************************************************/</span>
+<a name="l00705"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad3f98a5f2adf39ff26cf3d6fe32258a8">00705</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00706"></a>00706                        real& s12, real& azi1, real& azi2, real& m12,
+<a name="l00707"></a>00707                        real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00708"></a>00708       real t;
+<a name="l00709"></a>00709       <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00710"></a>00710                         DISTANCE | AZIMUTH |
+<a name="l00711"></a>00711                         REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00712"></a>00712                         s12, azi1, azi2, m12, M12, M21, t);
+<a name="l00713"></a>00713     }<span class="comment"></span>
+<a name="l00714"></a>00714 <span class="comment">    ///@}</span>
+<a name="l00715"></a>00715 <span class="comment"></span><span class="comment"></span>
+<a name="l00716"></a>00716 <span class="comment">    /** \name General version of inverse geodesic solution.</span>
+<a name="l00717"></a>00717 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00718"></a>00718 <span class="comment">    ///@{</span>
+<a name="l00719"></a>00719 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00720"></a>00720 <span class="comment">     * The general inverse geodesic calculation.  Geodesic::Inverse is defined</span>
+<a name="l00721"></a>00721 <span class="comment">     * in terms of this function.</span>
+<a name="l00722"></a>00722 <span class="comment">     *</span>
+<a name="l00723"></a>00723 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00724"></a>00724 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00725"></a>00725 <span class="comment">     * @param[in] lat2 latitude of point 2 (degrees).</span>
+<a name="l00726"></a>00726 <span class="comment">     * @param[in] lon2 longitude of point 2 (degrees).</span>
+<a name="l00727"></a>00727 <span class="comment">     * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
+<a name="l00728"></a>00728 <span class="comment">     *   specifying which of the following parameters should be set.</span>
+<a name="l00729"></a>00729 <span class="comment">     * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00730"></a>00730 <span class="comment">     * @param[out] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00731"></a>00731 <span class="comment">     * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00732"></a>00732 <span class="comment">     * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00733"></a>00733 <span class="comment">     * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00734"></a>00734 <span class="comment">     *   (dimensionless).</span>
+<a name="l00735"></a>00735 <span class="comment">     * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00736"></a>00736 <span class="comment">     *   (dimensionless).</span>
+<a name="l00737"></a>00737 <span class="comment">     * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00738"></a>00738 <span class="comment">     * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00739"></a>00739 <span class="comment">     *</span>
+<a name="l00740"></a>00740 <span class="comment">     * The Geodesic::mask values possible for \e outmask are</span>
+<a name="l00741"></a>00741 <span class="comment">     * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
+<a name="l00742"></a>00742 <span class="comment">     * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
+<a name="l00743"></a>00743 <span class="comment">     * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
+<a name="l00744"></a>00744 <span class="comment">     *   m12.</span>
+<a name="l00745"></a>00745 <span class="comment">     * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
+<a name="l00746"></a>00746 <span class="comment">     *   M12 and \e M21.</span>
+<a name="l00747"></a>00747 <span class="comment">     * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
+<a name="l00748"></a>00748 <span class="comment">     * .</span>
+<a name="l00749"></a>00749 <span class="comment">     * The arc length is always computed and returned as the function value.</span>
+<a name="l00750"></a>00750 <span class="comment">     **********************************************************************/</span>
+<a name="l00751"></a>00751     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GenInverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">re [...]
+<a name="l00752"></a>00752                           <span class="keywordtype">unsigned</span> outmask,
+<a name="l00753"></a>00753                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
+<a name="l00754"></a>00754                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12)
+<a name="l00755"></a>00755       <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00756"></a>00756 <span class="comment">    ///@}</span>
+<a name="l00757"></a>00757 <span class="comment"></span><span class="comment"></span>
+<a name="l00758"></a>00758 <span class="comment">    /** \name Interface to GeodesicLine.</span>
+<a name="l00759"></a>00759 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00760"></a>00760 <span class="comment">    ///@{</span>
+<a name="l00761"></a>00761 <span class="comment"></span><span class="comment"></span>
+<a name="l00762"></a>00762 <span class="comment">    /**</span>
+<a name="l00763"></a>00763 <span class="comment">     * Set up to compute several points on a singe geodesic.</span>
+<a name="l00764"></a>00764 <span class="comment">     *</span>
+<a name="l00765"></a>00765 <span class="comment">     * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00766"></a>00766 <span class="comment">     * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00767"></a>00767 <span class="comment">     * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00768"></a>00768 <span class="comment">     * @param[in] caps bitor'ed combination of Geodesic::mask values</span>
+<a name="l00769"></a>00769 <span class="comment">     *   specifying the capabilities the GeodesicLine object should possess,</span>
+<a name="l00770"></a>00770 <span class="comment">     *   i.e., which quantities can be returned in calls to</span>
+<a name="l00771"></a>00771 <span class="comment">     *   GeodesicLib::Position.</span>
 <a name="l00772"></a>00772 <span class="comment">     *</span>
-<a name="l00773"></a>00773 <span class="comment">     * The Geodesic::mask values are</span>
-<a name="l00774"></a>00774 <span class="comment">     * - \e caps |= Geodesic::LATITUDE for the latitude \e lat2; this is</span>
-<a name="l00775"></a>00775 <span class="comment">     *   added automatically</span>
-<a name="l00776"></a>00776 <span class="comment">     * - \e caps |= Geodesic::LONGITUDE for the latitude \e lon2</span>
-<a name="l00777"></a>00777 <span class="comment">     * - \e caps |= Geodesic::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00773"></a>00773 <span class="comment">     * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00774"></a>00774 <span class="comment">     * in the range [-180, 360].</span>
+<a name="l00775"></a>00775 <span class="comment">     *</span>
+<a name="l00776"></a>00776 <span class="comment">     * The Geodesic::mask values are</span>
+<a name="l00777"></a>00777 <span class="comment">     * - \e caps |= Geodesic::LATITUDE for the latitude \e lat2; this is</span>
 <a name="l00778"></a>00778 <span class="comment">     *   added automatically</span>
-<a name="l00779"></a>00779 <span class="comment">     * - \e caps |= Geodesic::DISTANCE for the distance \e s12</span>
-<a name="l00780"></a>00780 <span class="comment">     * - \e caps |= Geodesic::REDUCEDLENGTH for the reduced length \e m12</span>
-<a name="l00781"></a>00781 <span class="comment">     * - \e caps |= Geodesic::GEODESICSCALE for the geodesic scales \e M12</span>
-<a name="l00782"></a>00782 <span class="comment">     *   and \e M21</span>
-<a name="l00783"></a>00783 <span class="comment">     * - \e caps |= Geodesic::AREA for the area \e S12</span>
-<a name="l00784"></a>00784 <span class="comment">     * - \e caps |= Geodesic::DISTANCE_IN permits the length of the</span>
-<a name="l00785"></a>00785 <span class="comment">     *   geodesic to be given in terms of \e s12; without this capability the</span>
-<a name="l00786"></a>00786 <span class="comment">     *   length can only be specified in terms of arc length.</span>
-<a name="l00787"></a>00787 <span class="comment">     * .</span>
-<a name="l00788"></a>00788 <span class="comment">     * The default value of \e caps is Geodesic::ALL which turns on all the</span>
-<a name="l00789"></a>00789 <span class="comment">     * capabilities.</span>
-<a name="l00790"></a>00790 <span class="comment">     *</span>
-<a name="l00791"></a>00791 <span class="comment">     * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
-<a name="l00792"></a>00792 <span class="comment">     * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
-<a name="l00793"></a>00793 <span class="comment">     * limit \e eps -> 0 from above.</span>
-<a name="l00794"></a>00794 <span class="comment">     **********************************************************************/</span>
-<a name="l00795"></a>00795     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> Line(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1, <span class="keywordtype">unsigned</span> caps = ALL)
-<a name="l00796"></a>00796       <span class="keyword">const</span> throw();
-<a name="l00797"></a>00797 <span class="comment"></span>
-<a name="l00798"></a>00798 <span class="comment">    ///@}</span>
-<a name="l00799"></a>00799 <span class="comment"></span><span class="comment"></span>
-<a name="l00800"></a>00800 <span class="comment">    /** \name Inspector functions.</span>
-<a name="l00801"></a>00801 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00802"></a>00802 <span class="comment">    ///@{</span>
-<a name="l00803"></a>00803 <span class="comment"></span><span class="comment"></span>
-<a name="l00804"></a>00804 <span class="comment">    /**</span>
-<a name="l00805"></a>00805 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00806"></a>00806 <span class="comment">     *   the value used in the constructor.</span>
-<a name="l00807"></a>00807 <span class="comment">     **********************************************************************/</span>
-<a name="l00808"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acd276bb113cfdf3fe59aa43fb3d7289b">00808</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() const throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00809"></a>00809 <span class="comment"></span>
-<a name="l00810"></a>00810 <span class="comment">    /**</span>
-<a name="l00811"></a>00811 <span class="comment">     * @return \e f the  flattening of the ellipsoid.  This is the</span>
-<a name="l00812"></a>00812 <span class="comment">     *   value used in the constructor.</span>
-<a name="l00813"></a>00813 <span class="comment">     **********************************************************************/</span>
-<a name="l00814"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">00814</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00815"></a>00815 <span class="comment"></span>
-<a name="l00816"></a>00816 <span class="comment">    /**</span>
-<a name="l00817"></a>00817 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00818"></a>00818 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00819"></a>00819 <span class="comment">     **********************************************************************/</span>
-<a name="l00820"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">00820</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00821"></a>00821 <span class="comment"></span>
-<a name="l00822"></a>00822 <span class="comment">    /**</span>
-<a name="l00823"></a>00823 <span class="comment">     * @return total area of ellipsoid in meters<sup>2</sup>.  The area of a</span>
-<a name="l00824"></a>00824 <span class="comment">     *   polygon encircling a pole can be found by adding</span>
-<a name="l00825"></a>00825 <span class="comment">     *   Geodesic::EllipsoidArea()/2 to the sum of \e S12 for each side of the</span>
-<a name="l00826"></a>00826 <span class="comment">     *   polygon.</span>
-<a name="l00827"></a>00827 <span class="comment">     **********************************************************************/</span>
-<a name="l00828"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">00828</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EllipsoidArea() <span class="keyword">const</span> throw()
-<a name="l00829"></a>00829     { <span class="keywordflow">return</span> 4 * Math::pi<real>() * _c2; }<span class="comment"></span>
-<a name="l00830"></a>00830 <span class="comment">    ///@}</span>
-<a name="l00831"></a>00831 <span class="comment"></span><span class="comment"></span>
-<a name="l00832"></a>00832 <span class="comment">    /**</span>
-<a name="l00833"></a>00833 <span class="comment">     * A global instantiation of Geodesic with the parameters for the WGS84</span>
-<a name="l00834"></a>00834 <span class="comment">     * ellipsoid.</span>
-<a name="l00835"></a>00835 <span class="comment">     **********************************************************************/</span>
-<a name="l00836"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">00836</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">WGS84</a>;
-<a name="l00837"></a>00837 
-<a name="l00838"></a>00838   };
-<a name="l00839"></a>00839 
-<a name="l00840"></a>00840 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00841"></a>00841 
-<a name="l00842"></a>00842 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEODESIC_HPP</span>
+<a name="l00779"></a>00779 <span class="comment">     * - \e caps |= Geodesic::LONGITUDE for the latitude \e lon2</span>
+<a name="l00780"></a>00780 <span class="comment">     * - \e caps |= Geodesic::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00781"></a>00781 <span class="comment">     *   added automatically</span>
+<a name="l00782"></a>00782 <span class="comment">     * - \e caps |= Geodesic::DISTANCE for the distance \e s12</span>
+<a name="l00783"></a>00783 <span class="comment">     * - \e caps |= Geodesic::REDUCEDLENGTH for the reduced length \e m12</span>
+<a name="l00784"></a>00784 <span class="comment">     * - \e caps |= Geodesic::GEODESICSCALE for the geodesic scales \e M12</span>
+<a name="l00785"></a>00785 <span class="comment">     *   and \e M21</span>
+<a name="l00786"></a>00786 <span class="comment">     * - \e caps |= Geodesic::AREA for the area \e S12</span>
+<a name="l00787"></a>00787 <span class="comment">     * - \e caps |= Geodesic::DISTANCE_IN permits the length of the</span>
+<a name="l00788"></a>00788 <span class="comment">     *   geodesic to be given in terms of \e s12; without this capability the</span>
+<a name="l00789"></a>00789 <span class="comment">     *   length can only be specified in terms of arc length.</span>
+<a name="l00790"></a>00790 <span class="comment">     * .</span>
+<a name="l00791"></a>00791 <span class="comment">     * The default value of \e caps is Geodesic::ALL which turns on all the</span>
+<a name="l00792"></a>00792 <span class="comment">     * capabilities.</span>
+<a name="l00793"></a>00793 <span class="comment">     *</span>
+<a name="l00794"></a>00794 <span class="comment">     * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
+<a name="l00795"></a>00795 <span class="comment">     * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
+<a name="l00796"></a>00796 <span class="comment">     * limit \e eps -> 0 from above.</span>
+<a name="l00797"></a>00797 <span class="comment">     **********************************************************************/</span>
+<a name="l00798"></a>00798     <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> Line(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1, <span class="keywordtype">unsigned</span> caps = ALL)
+<a name="l00799"></a>00799       <span class="keyword">const</span> throw();
+<a name="l00800"></a>00800 <span class="comment"></span>
+<a name="l00801"></a>00801 <span class="comment">    ///@}</span>
+<a name="l00802"></a>00802 <span class="comment"></span><span class="comment"></span>
+<a name="l00803"></a>00803 <span class="comment">    /** \name Inspector functions.</span>
+<a name="l00804"></a>00804 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00805"></a>00805 <span class="comment">    ///@{</span>
+<a name="l00806"></a>00806 <span class="comment"></span><span class="comment"></span>
+<a name="l00807"></a>00807 <span class="comment">    /**</span>
+<a name="l00808"></a>00808 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00809"></a>00809 <span class="comment">     *   the value used in the constructor.</span>
+<a name="l00810"></a>00810 <span class="comment">     **********************************************************************/</span>
+<a name="l00811"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acd276bb113cfdf3fe59aa43fb3d7289b">00811</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() const throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00812"></a>00812 <span class="comment"></span>
+<a name="l00813"></a>00813 <span class="comment">    /**</span>
+<a name="l00814"></a>00814 <span class="comment">     * @return \e f the  flattening of the ellipsoid.  This is the</span>
+<a name="l00815"></a>00815 <span class="comment">     *   value used in the constructor.</span>
+<a name="l00816"></a>00816 <span class="comment">     **********************************************************************/</span>
+<a name="l00817"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">00817</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00818"></a>00818 <span class="comment"></span>
+<a name="l00819"></a>00819 <span class="comment">    /// \cond SKIP</span>
+<a name="l00820"></a>00820 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00821"></a>00821 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00822"></a>00822 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00823"></a>00823 <span class="comment">     **********************************************************************/</span>
+<a name="l00824"></a>00824     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00825"></a>00825 <span class="comment">    /// \endcond</span>
+<a name="l00826"></a>00826 <span class="comment"></span><span class="comment"></span>
+<a name="l00827"></a>00827 <span class="comment">    /**</span>
+<a name="l00828"></a>00828 <span class="comment">     * @return total area of ellipsoid in meters<sup>2</sup>.  The area of a</span>
+<a name="l00829"></a>00829 <span class="comment">     *   polygon encircling a pole can be found by adding</span>
+<a name="l00830"></a>00830 <span class="comment">     *   Geodesic::EllipsoidArea()/2 to the sum of \e S12 for each side of the</span>
+<a name="l00831"></a>00831 <span class="comment">     *   polygon.</span>
+<a name="l00832"></a>00832 <span class="comment">     **********************************************************************/</span>
+<a name="l00833"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">00833</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EllipsoidArea() <span class="keyword">const</span> throw()
+<a name="l00834"></a>00834     { <span class="keywordflow">return</span> 4 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() * _c2; }<span class="comment"></span>
+<a name="l00835"></a>00835 <span class="comment">    ///@}</span>
+<a name="l00836"></a>00836 <span class="comment"></span><span class="comment"></span>
+<a name="l00837"></a>00837 <span class="comment">    /**</span>
+<a name="l00838"></a>00838 <span class="comment">     * A global instantiation of Geodesic with the parameters for the WGS84</span>
+<a name="l00839"></a>00839 <span class="comment">     * ellipsoid.</span>
+<a name="l00840"></a>00840 <span class="comment">     **********************************************************************/</span>
+<a name="l00841"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">00841</a>     <span class="keyword">static</span> <span class="keyword">const</span> Geodesic <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">WGS84</a>;
+<a name="l00842"></a>00842 
+<a name="l00843"></a>00843   };
+<a name="l00844"></a>00844 
+<a name="l00845"></a>00845 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00846"></a>00846 
+<a name="l00847"></a>00847 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEODESIC_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geographic.tag b/doc/html/Geographic.tag
index 1af6d9d..5dffa3d 100644
--- a/doc/html/Geographic.tag
+++ b/doc/html/Geographic.tag
@@ -367,15 +367,15 @@
       <type>std::string</type>
       <name>LatLonString</name>
       <anchorfile>Geod_8cpp.html</anchorfile>
-      <anchor>a816c824309c06ba9fce8978d534c8a59</anchor>
-      <arglist>(real lat, real lon, int prec, bool dms)</arglist>
+      <anchor>a8c3a2a4c039b4d0118416afd97a45fcf</anchor>
+      <arglist>(real lat, real lon, int prec, bool dms, char dmssep)</arglist>
     </member>
     <member kind="function">
       <type>std::string</type>
       <name>AzimuthString</name>
       <anchorfile>Geod_8cpp.html</anchorfile>
-      <anchor>ade33c0d3b83c6fcbf2fc612d5c6a7172</anchor>
-      <arglist>(real azi, int prec, bool dms)</arglist>
+      <anchor>adeb84b4732b410c9fdccf799037ef245</anchor>
+      <arglist>(real azi, int prec, bool dms, char dmssep)</arglist>
     </member>
     <member kind="function">
       <type>std::string</type>
@@ -494,6 +494,7 @@
     <path>/scratch/geographic-dist/gita/geographiclib/src/</path>
     <filename>Geoid_8cpp</filename>
     <includes id="Geoid_8hpp" name="Geoid.hpp" local="no" imported="no">GeographicLib/Geoid.hpp</includes>
+    <includes id="Utility_8hpp" name="Utility.hpp" local="no" imported="no">GeographicLib/Utility.hpp</includes>
     <namespace>GeographicLib</namespace>
     <member kind="define">
       <type>#define</type>
@@ -531,6 +532,13 @@
       <anchor>a81966978f2fe7fad1effabc667a99820</anchor>
       <arglist></arglist>
     </member>
+    <member kind="define">
+      <type>#define</type>
+      <name>PGM_PIXEL_WIDTH</name>
+      <anchorfile>Geoid_8hpp.html</anchorfile>
+      <anchor>aa34d236045b829973cbc0d958d3ed139</anchor>
+      <arglist></arglist>
+    </member>
   </compound>
   <compound kind="file">
     <name>GeoidEval.cpp</name>
@@ -860,9 +868,9 @@
     </member>
     <member kind="define">
       <type>#define</type>
-      <name>GEOGRAPHICLIB_CPLUSPLUS0X_MATH</name>
+      <name>GEOGRAPHICLIB_CPLUSPLUS11_MATH</name>
       <anchorfile>Math_8hpp.html</anchorfile>
-      <anchor>a6cdc2f4c764d4116788cc5c24625e75d</anchor>
+      <anchor>a2769cdfa2277e2728e4e157ec3f6318b</anchor>
       <arglist></arglist>
     </member>
     <member kind="define">
@@ -1301,7 +1309,7 @@
   </compound>
   <compound kind="page">
     <name>utilities</name>
-    <title>Utility Programs</title>
+    <title>Utility programs</title>
     <filename>utilities</filename>
   </compound>
   <compound kind="page">
@@ -1347,14 +1355,14 @@
   </compound>
   <compound kind="page">
     <name>geodesic</name>
-    <title>Geodesics on the Ellipsoid</title>
+    <title>Geodesics on the ellipsoid</title>
     <filename>geodesic</filename>
     <docanchor file="geodesic">testgeod</docanchor>
     <docanchor file="geodesic">geodseries</docanchor>
   </compound>
   <compound kind="page">
     <name>transversemercator</name>
-    <title>Transverse Mercator Projection</title>
+    <title>Transverse Mercator projection</title>
     <filename>transversemercator</filename>
     <docanchor file="transversemercator">tmseries</docanchor>
     <docanchor file="transversemercator">testmerc</docanchor>
@@ -1366,7 +1374,7 @@
   </compound>
   <compound kind="page">
     <name>old</name>
-    <title>Old Versions</title>
+    <title>Old versions</title>
     <filename>old</filename>
   </compound>
   <compound kind="namespace">
@@ -1411,96 +1419,95 @@
   <compound kind="class">
     <name>GeographicLib::Accumulator</name>
     <filename>classGeographicLib_1_1Accumulator.html</filename>
-    <templarg>T</templarg>
     <member kind="function">
       <type></type>
       <name>Accumulator</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a14d98e366933e0997c1954290f9d0fc3</anchor>
+      <anchor>a6d30e4a792644ffc78546dda4b5d0022</anchor>
       <arglist>(T y=T(0))</arglist>
     </member>
     <member kind="function">
       <type>Accumulator &</type>
       <name>operator=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>acb3c1aa458551c474bd8d487c3488789</anchor>
+      <anchor>a9cd31c9155208a2de0fdd9810f2a9dd8</anchor>
       <arglist>(T y)</arglist>
     </member>
     <member kind="function">
       <type>T</type>
       <name>operator()</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a7da3f417100387abd140f4f6fd541f3c</anchor>
+      <anchor>af74ec2f9a77fcc82819111e6bb87b375</anchor>
       <arglist>() const </arglist>
     </member>
     <member kind="function">
       <type>T</type>
       <name>operator()</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a34cc7a21a2163fe7865734f9c2995f34</anchor>
+      <anchor>a1a2b7ac3fd3b067a1c9930cb02a102b2</anchor>
       <arglist>(T y) const </arglist>
     </member>
     <member kind="function">
       <type>Accumulator &</type>
       <name>operator+=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>acdefeaf2aa13cfc78109bdcf4b2cc5d9</anchor>
+      <anchor>adc56d12f08b8a61b19dd78ce532285d4</anchor>
       <arglist>(T y)</arglist>
     </member>
     <member kind="function">
       <type>Accumulator &</type>
       <name>operator-=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a1add8644c70e445b32c11f269a0345ef</anchor>
+      <anchor>abf3e43f38791c48d1fa09e4fb569827b</anchor>
       <arglist>(T y)</arglist>
     </member>
     <member kind="function">
       <type>Accumulator &</type>
       <name>operator*=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a400f473aa76225662c0493679c1a9072</anchor>
+      <anchor>a2b0bc40e9722e1ffac89ecfeb601fb23</anchor>
       <arglist>(int n)</arglist>
     </member>
     <member kind="function">
       <type>bool</type>
       <name>operator==</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a826d30c1794c242628121d528461a383</anchor>
+      <anchor>a6ea5d769a36e01327f3633b39cd38290</anchor>
       <arglist>(T y) const </arglist>
     </member>
     <member kind="function">
       <type>bool</type>
       <name>operator!=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a64df6698b929c36ef2ea53762b1ca93b</anchor>
+      <anchor>a4102ce7aac36753c2b0390c4fc951a42</anchor>
       <arglist>(T y) const </arglist>
     </member>
     <member kind="function">
       <type>bool</type>
       <name>operator<</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a3852660b49bef6eb2d92f1296a86459b</anchor>
+      <anchor>a9a7299c02ec8805d951309fdae60e57f</anchor>
       <arglist>(T y) const </arglist>
     </member>
     <member kind="function">
       <type>bool</type>
       <name>operator<=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a04aea3f9aad7dd1599bb419e7cf4529a</anchor>
+      <anchor>afb83bdb43b78e20f76e2a7e5e2440386</anchor>
       <arglist>(T y) const </arglist>
     </member>
     <member kind="function">
       <type>bool</type>
       <name>operator></name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a3f1172477b4c225e064fb87753d567ef</anchor>
+      <anchor>af0e4a35c09b0b179ebf1e2f6912ddeb3</anchor>
       <arglist>(T y) const </arglist>
     </member>
     <member kind="function">
       <type>bool</type>
       <name>operator>=</name>
       <anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
-      <anchor>a4d509a497da83624d913ed00649644c1</anchor>
+      <anchor>aeafc5d10683648d37fe18ec75725196b</anchor>
       <arglist>(T y) const </arglist>
     </member>
   </compound>
@@ -1579,13 +1586,6 @@
     </member>
     <member kind="function">
       <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1AlbersEqualArea.html</anchorfile>
-      <anchor>a1d0ad953a852d4cdb9faa731b5530d70</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
-      <type>Math::real</type>
       <name>OriginLatitude</name>
       <anchorfile>classGeographicLib_1_1AlbersEqualArea.html</anchorfile>
       <anchor>ad780e943e9a9ba168b350d809d0bfe08</anchor>
@@ -1672,13 +1672,6 @@
       <anchor>a3f300fcc10aeee9dc88ff93fb991f191</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1AzimuthalEquidistant.html</anchorfile>
-      <anchor>ac4ec606131221d3eb0acc1ae00a34c63</anchor>
-      <arglist>() const </arglist>
-    </member>
   </compound>
   <compound kind="class">
     <name>GeographicLib::CassiniSoldner</name>
@@ -1767,13 +1760,6 @@
       <anchor>a8d618d5abe71a49fc5ec4f2801d22555</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1CassiniSoldner.html</anchorfile>
-      <anchor>aae869d96e9267c13e675e3a3804eb0e2</anchor>
-      <arglist>() const </arglist>
-    </member>
   </compound>
   <compound kind="class">
     <name>GeographicLib::CircularEngine</name>
@@ -1863,7 +1849,7 @@
       <type>static T</type>
       <name>WGS84_a</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>af7abfdedede7d8180d0c2c4015b72194</anchor>
+      <anchor>ae12127984ac6713823746d917b4abfa7</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -1877,7 +1863,7 @@
       <type>static T</type>
       <name>WGS84_f</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>a2e95ed8ac2738590348f9f3bbaa3fa41</anchor>
+      <anchor>acc5244425bb484594be51b27d56cd335</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -1891,21 +1877,14 @@
       <type>static T</type>
       <name>WGS84_GM</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>aa6cbaa16e143ebbe8b2c226492c09fbc</anchor>
+      <anchor>af7806106d7bd289bb63d5290e79c87a6</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>WGS84_omega</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>a60299d9299292f18312eee2870bdf9ba</anchor>
-      <arglist>()</arglist>
-    </member>
-    <member kind="function" static="yes">
-      <type>static T</type>
-      <name>WGS84_r</name>
-      <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>aa886c9955848d0fe9204b1a14f7ae43f</anchor>
+      <anchor>a98c114d5a6ca42d3e4ece8595a0c2180</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -1919,35 +1898,35 @@
       <type>static T</type>
       <name>GRS80_a</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>ac0ae4c03001a7fb4dea386d7539d38d3</anchor>
+      <anchor>a9b955c3556dcfcebce6a2926bfeaf464</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>GRS80_GM</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>a436996122a60fde693eef527c74b3f05</anchor>
+      <anchor>a7541474ca70cbec7fccb08d3e3fbfe31</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>GRS80_omega</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>ae714c61fde82178814973c94038b9b41</anchor>
+      <anchor>a9caea97ab2be0959c7972155141bfd1b</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>GRS80_J2</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>ae37450bc3e1137946cdf874affa2e44c</anchor>
+      <anchor>a59c7a1d298eb72256119894b67470974</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>UTM_k0</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>a76c804fc143b26086a296d05ed09fe4f</anchor>
+      <anchor>ab5cc487ab160c0a213fdf8e12cde198a</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -1961,7 +1940,7 @@
       <type>static T</type>
       <name>UPS_k0</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>ae48baa0a561e58acb2574f07e7acda1f</anchor>
+      <anchor>a3fe287ab1a0847f5392c1aaf9c5e635a</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -1975,7 +1954,7 @@
       <type>static T</type>
       <name>meter</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>aa1f90367063bc442ef165907650ef1f0</anchor>
+      <anchor>ac1b17e7cf67ef42b9b91f3677c2eaa75</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -2003,7 +1982,7 @@
       <type>static T</type>
       <name>square_meter</name>
       <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
-      <anchor>a69b9a03f52615661b8e16f4aaa05425a</anchor>
+      <anchor>ab92200b36f9d306a2710738c6d9bc705</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -2187,20 +2166,6 @@
       <arglist>(real d, real m=0, real s=0)</arglist>
     </member>
     <member kind="function" static="yes">
-      <type>static Math::real</type>
-      <name>Decode</name>
-      <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
-      <anchor>aab2493a4f9bcf1b8fa8b636361feca47</anchor>
-      <arglist>(const std::string &str)</arglist>
-    </member>
-    <member kind="function" static="yes">
-      <type>static Math::real</type>
-      <name>DecodeFraction</name>
-      <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
-      <anchor>adb889bc03d4370fbc99c6f8fd34b12f9</anchor>
-      <arglist>(const std::string &str)</arglist>
-    </member>
-    <member kind="function" static="yes">
       <type>static void</type>
       <name>DecodeLatLon</name>
       <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
@@ -2225,6 +2190,13 @@
       <type>static std::string</type>
       <name>Encode</name>
       <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
+      <anchor>a0777e26ef4507f8123549723bf3cb56f</anchor>
+      <arglist>(real angle, component trailing, unsigned prec, flag ind, char dmssep)</arglist>
+    </member>
+    <member kind="function" static="yes">
+      <type>static std::string</type>
+      <name>Encode</name>
+      <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
       <anchor>a3e36baa6114d46f82a8900d002784369</anchor>
       <arglist>(real angle, component trailing, unsigned prec, flag ind=NONE)</arglist>
     </member>
@@ -2232,8 +2204,8 @@
       <type>static std::string</type>
       <name>Encode</name>
       <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
-      <anchor>a87dd4a3eea0be6d3a45c8390e725aeb9</anchor>
-      <arglist>(real angle, unsigned prec, flag ind=NONE)</arglist>
+      <anchor>aeb9d338b12e885092a611bda7e52f9f4</anchor>
+      <arglist>(real angle, unsigned prec, flag ind=NONE, char dmssep=char(0))</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static void</type>
@@ -2383,13 +2355,6 @@
       <anchor>a30ba434524b5836c9852d454e61d795f</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1Geocentric.html</anchorfile>
-      <anchor>aa947dd7275c12692b03d6ff43d217d13</anchor>
-      <arglist>() const </arglist>
-    </member>
     <member kind="variable" static="yes">
       <type>static const Geocentric</type>
       <name>WGS84</name>
@@ -2629,6 +2594,13 @@
       <type>std::string</type>
       <name>DMSRepresentation</name>
       <anchorfile>classGeographicLib_1_1GeoCoords.html</anchorfile>
+      <anchor>af6e9f9087a407b01dc24401df8610257</anchor>
+      <arglist>(int prec, bool swaplatlong, char dmssep) const </arglist>
+    </member>
+    <member kind="function">
+      <type>std::string</type>
+      <name>DMSRepresentation</name>
+      <anchorfile>classGeographicLib_1_1GeoCoords.html</anchorfile>
       <anchor>ab37746606876eb77335268054589390a</anchor>
       <arglist>(int prec=0, bool swaplatlong=false) const </arglist>
     </member>
@@ -2674,13 +2646,6 @@
       <anchor>a4d892f5e55df8cbb597d1a693da4783c</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1GeoCoords.html</anchorfile>
-      <anchor>a8f653a04eb087280cd020466213c9cac</anchor>
-      <arglist>() const </arglist>
-    </member>
   </compound>
   <compound kind="class">
     <name>GeographicLib::Geodesic</name>
@@ -2935,13 +2900,6 @@
     </member>
     <member kind="function">
       <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1Geodesic.html</anchorfile>
-      <anchor>ab64c9662ce24d7a658924db0c85f8b2d</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
-      <type>Math::real</type>
       <name>EllipsoidArea</name>
       <anchorfile>classGeographicLib_1_1Geodesic.html</anchorfile>
       <anchor>a0dde7d12d4bafedef63d371c5fe40f50</anchor>
@@ -3200,13 +3158,6 @@
       <arglist>() const </arglist>
     </member>
     <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1GeodesicLine.html</anchorfile>
-      <anchor>ad0d59a47c24d11229ab7ce4363d525ea</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
       <type>unsigned</type>
       <name>Capabilities</name>
       <anchorfile>classGeographicLib_1_1GeodesicLine.html</anchorfile>
@@ -3430,13 +3381,6 @@
       <anchor>abd2076cab3455b816e9477cdb410b187</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1Geoid.html</anchorfile>
-      <anchor>a19fd88ada94ee9b3b063e9ff097fd2e5</anchor>
-      <arglist>() const </arglist>
-    </member>
     <member kind="function" static="yes">
       <type>static std::string</type>
       <name>DefaultGeoidPath</name>
@@ -3504,13 +3448,6 @@
       <anchor>a06b559fa72aa1e51da966c43d22b983d</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1Gnomonic.html</anchorfile>
-      <anchor>a655eff8ef95f92902899459e8a5efe63</anchor>
-      <arglist>() const </arglist>
-    </member>
   </compound>
   <compound kind="class">
     <name>GeographicLib::GravityCircle</name>
@@ -3944,13 +3881,6 @@
     </member>
     <member kind="function">
       <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1LambertConformalConic.html</anchorfile>
-      <anchor>a2dcd66922112771c232d686e7bcc5f31</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
-      <type>Math::real</type>
       <name>OriginLatitude</name>
       <anchorfile>classGeographicLib_1_1LambertConformalConic.html</anchorfile>
       <anchor>a7c589335b43b2274d3a68c0f68f29d77</anchor>
@@ -4058,13 +3988,6 @@
       <anchor>a99907eda4b863acbe8e7d159a6482abb</anchor>
       <arglist>() const </arglist>
     </member>
-    <member kind="function">
-      <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1LocalCartesian.html</anchorfile>
-      <anchor>ad6991a2dff56a460a650c757ffda8e94</anchor>
-      <arglist>() const </arglist>
-    </member>
   </compound>
   <compound kind="class">
     <name>GeographicLib::MagneticCircle</name>
@@ -4298,7 +4221,7 @@
       <type>static T</type>
       <name>pi</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a55d06bfccddf52b1c1066962af738b75</anchor>
+      <anchor>aca1580c771e7019bfe826512fba9b2f1</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -4312,7 +4235,7 @@
       <type>static T</type>
       <name>degree</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a3d84677a4dfd6c2149c16426544eaf6c</anchor>
+      <anchor>a0f3b4ea16cc2cb21557555fca3b1c201</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -4326,63 +4249,63 @@
       <type>static T</type>
       <name>sq</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a8a952f405e2ff2cbe079ba5687c40327</anchor>
+      <anchor>a6a092f38e231c80a1f144814c90f1895</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>hypot</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a0d422863198d4bec2aae6b187a60760c</anchor>
+      <anchor>a62b6fca06c571481aafba3f1716a8bb2</anchor>
       <arglist>(T x, T y)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>expm1</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a71afd1ae80f942a0b90d65f7784bf2f8</anchor>
+      <anchor>a2fd4e8930d9dd953352d25fc184d843e</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>log1p</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>ac84507dc4df09cf27e831620e8ad8880</anchor>
+      <anchor>a90eddd5a6d0c9dcc4a9f18dd647ac520</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>asinh</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>ab0998a80c8946d1c016c1bc4810a0698</anchor>
+      <anchor>aba75669f9d52fc672a8faaf69261bd8a</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>atanh</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a62ae372f983cb076561204be8de263bd</anchor>
+      <anchor>a372ac604592d9de9cf608cfdfc463447</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>cbrt</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a21b33765456b50bf9e32ed0d57b441a6</anchor>
+      <anchor>a04b87b033b845f4812a5700661c64a2a</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static bool</type>
       <name>isfinite</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>adadc6f5069c0a5f75a7c5a5bf2720aa3</anchor>
+      <anchor>af61f7360e67c35131d80083e7b53dda8</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>NaN</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a77c57c61f93d7ac3f6a5095489c36715</anchor>
+      <anchor>ad1dc13a367125d3f8d291eaa98339186</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -4396,14 +4319,14 @@
       <type>static bool</type>
       <name>isnan</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>aa63d7a640d1126e47af65f782dd40bca</anchor>
+      <anchor>a554d35e9f54bf304447833a21ee2047c</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>infinity</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>a4e8a86ff2039262e99b8e41070cc2223</anchor>
+      <anchor>a82ccc01be301f14061c681ee93a5120b</anchor>
       <arglist>()</arglist>
     </member>
     <member kind="function" static="yes">
@@ -4417,7 +4340,7 @@
       <type>static T</type>
       <name>swab</name>
       <anchorfile>classGeographicLib_1_1Math.html</anchorfile>
-      <anchor>aa81163e3148b2d45d903d23f5d8fb261</anchor>
+      <anchor>aec7f95c2bb99422f1f047cb628a232f8</anchor>
       <arglist>(T x)</arglist>
     </member>
     <member kind="variable" static="yes">
@@ -4466,13 +4389,6 @@
       <anchor>a8eee27799bda8238d6d0525dffdddd4e</anchor>
       <arglist>()</arglist>
     </member>
-    <member kind="function" static="yes">
-      <type>static Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1MGRS.html</anchorfile>
-      <anchor>a32792f0e117641cb48d06786d4c6fdbc</anchor>
-      <arglist>()</arglist>
-    </member>
     <member kind="friend" protection="private">
       <type>friend class</type>
       <name>UTMUPS</name>
@@ -4693,13 +4609,6 @@
     </member>
     <member kind="function" static="yes">
       <type>static Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1OSGB.html</anchorfile>
-      <anchor>a72bb966b2a93e4607bfcbf78f5b80bb4</anchor>
-      <arglist>()</arglist>
-    </member>
-    <member kind="function" static="yes">
-      <type>static Math::real</type>
       <name>CentralScale</name>
       <anchorfile>classGeographicLib_1_1OSGB.html</anchorfile>
       <anchor>a65210bfdcac362f393a8f81f28259ad0</anchor>
@@ -4795,13 +4704,6 @@
     </member>
     <member kind="function">
       <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1PolarStereographic.html</anchorfile>
-      <anchor>a969a21c3df38517a081e233ae90c098e</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
-      <type>Math::real</type>
       <name>CentralScale</name>
       <anchorfile>classGeographicLib_1_1PolarStereographic.html</anchorfile>
       <anchor>ad6f7bd8a35208d91706ac8c258387e6f</anchor>
@@ -4894,14 +4796,14 @@
       <type>static Math::real</type>
       <name>Value</name>
       <anchorfile>classGeographicLib_1_1SphericalEngine.html</anchorfile>
-      <anchor>a987cbe2cdb67410174a6e9594da92573</anchor>
+      <anchor>a1157f59596dd15bf0a21b6a7fb99630b</anchor>
       <arglist>(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static CircularEngine</type>
       <name>Circle</name>
       <anchorfile>classGeographicLib_1_1SphericalEngine.html</anchorfile>
-      <anchor>a7733e7913671b573042a2fcf8db089dd</anchor>
+      <anchor>af6a5fa63535d47cf528b733bb6a97901</anchor>
       <arglist>(const coeff c[], const real f[], real p, real z, real a)</arglist>
     </member>
     <member kind="function" static="yes">
@@ -5316,13 +5218,6 @@
     </member>
     <member kind="function">
       <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1TransverseMercator.html</anchorfile>
-      <anchor>a5b5a56027507ae2aa08ab5b43a4bddc5</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
-      <type>Math::real</type>
       <name>CentralScale</name>
       <anchorfile>classGeographicLib_1_1TransverseMercator.html</anchorfile>
       <anchor>a63876dc20e8765501ca62022f9a73432</anchor>
@@ -5390,13 +5285,6 @@
     </member>
     <member kind="function">
       <type>Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1TransverseMercatorExact.html</anchorfile>
-      <anchor>a9c4df948ed85f96273c04414fc6871df</anchor>
-      <arglist>() const </arglist>
-    </member>
-    <member kind="function">
-      <type>Math::real</type>
       <name>CentralScale</name>
       <anchorfile>classGeographicLib_1_1TransverseMercatorExact.html</anchorfile>
       <anchor>a355a827f45c194d56a465e0d4f91c3a3</anchor>
@@ -5459,35 +5347,35 @@
       <type>static T</type>
       <name>fractionalyear</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>a6daedff1fb56da7ee149066c1cce106a</anchor>
+      <anchor>a074607cb34326b7109532c8fdd07e38c</anchor>
       <arglist>(const std::string &s)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static std::string</type>
       <name>str</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>a53fbf616c74bab1cbbc9e8d4c7b6739f</anchor>
+      <anchor>ae87a7ae2bee75f724907af9f753f03b7</anchor>
       <arglist>(T x, int p=-1)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>num</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>a8a490ea58d4de4c5a7ce86ab2cda25bd</anchor>
+      <anchor>aa35f1f83c0543558a79b3cf42ddf50c8</anchor>
       <arglist>(const std::string &s)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>nummatch</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>a6e8268e5d125846dee7b087dec889825</anchor>
+      <anchor>ad0d89bfe63814bab5312306fe3ac2b43</anchor>
       <arglist>(const std::string &s)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static T</type>
       <name>fract</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>ad6fbe8736a470a0acecf191e29f72ceb</anchor>
+      <anchor>a46b13d9ce2893f7e0fe6e7da093f528f</anchor>
       <arglist>(const std::string &s)</arglist>
     </member>
     <member kind="function" static="yes">
@@ -5501,17 +5389,31 @@
       <type>static void</type>
       <name>readarray</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>ae9208f2d9c37de596ead9af2136e8468</anchor>
+      <anchor>a23e88040ceb60bd3fe28efc04f9119f8</anchor>
       <arglist>(std::istream &str, IntT array[], size_t num)</arglist>
     </member>
     <member kind="function" static="yes">
       <type>static void</type>
       <name>readarray</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
-      <anchor>a3acad0c1faffcd87292776d1cae26290</anchor>
+      <anchor>a044796b4fc14a952abec27da27fc20be</anchor>
       <arglist>(std::istream &str, std::vector< IntT > &array)</arglist>
     </member>
     <member kind="function" static="yes">
+      <type>static void</type>
+      <name>writearray</name>
+      <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
+      <anchor>a276eb20ace49c5260e1878c7d8aefd31</anchor>
+      <arglist>(std::ostream &str, const IntT array[], size_t num)</arglist>
+    </member>
+    <member kind="function" static="yes">
+      <type>static void</type>
+      <name>writearray</name>
+      <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
+      <anchor>a0621066e4aa146a2c100802375e70389</anchor>
+      <arglist>(std::ostream &str, std::vector< IntT > &array)</arglist>
+    </member>
+    <member kind="function" static="yes">
       <type>static bool</type>
       <name>ParseLine</name>
       <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
@@ -5664,13 +5566,6 @@
       <anchor>a182de2e29f1181c55a266777039b8a9d</anchor>
       <arglist>()</arglist>
     </member>
-    <member kind="function" static="yes">
-      <type>static Math::real</type>
-      <name>InverseFlattening</name>
-      <anchorfile>classGeographicLib_1_1UTMUPS.html</anchorfile>
-      <anchor>a3de827995b6327282bfe95fcab99ebb2</anchor>
-      <arglist>()</arglist>
-    </member>
   </compound>
   <compound kind="dir">
     <name>include/GeographicLib/</name>
diff --git a/doc/html/Geographic_8doc.html b/doc/html/Geographic_8doc.html
index 68c8ace..da5a7f8 100644
--- a/doc/html/Geographic_8doc.html
+++ b/doc/html/Geographic_8doc.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geographic.doc File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,16 +60,19 @@
 
 <p>Documentation for <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a>.  
 <a href="#details">More...</a></p>
-<table class="memberdecls">
-</table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Documentation for <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a>. </p>
 <p>Written by Charles Karney <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Geographic_8doc_source.html">Geographic.doc</a>.</p>
 </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoidEval.1.html b/doc/html/GeoidEval.1.html
index 48d4505..13b32d2 100644
--- a/doc/html/GeoidEval.1.html
+++ b/doc/html/GeoidEval.1.html
@@ -49,20 +49,21 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>GeoidEval</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ] [ <strong>-l</strong> ]
-[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ]
+[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ] [ <strong>-g</strong> ]
 [ <strong>-z</strong> <em>zone</em> ] [ <strong>--msltohae</strong> ] [ <strong>--haetomsl</strong> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
 <hr />
 <h1><a name="description">DESCRIPTION</a></h1>
 <p><strong>GeoidEval</strong> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output.  It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the WGS84
-ellipsoid in the specified directions).</p>
+corresponding geoid heights on standard output.  Optionally, it also
+prints the northerly and easterly gradients of the geoid height.</p>
 <p>Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
 of the formats accepted by <a href="GeoConvert.1.html"><code>GeoConvert(1)</code></a>.  (MGRS coordinates signify the
 <em>center</em> of the corresponding MGRS square.)  If the <strong>-z</strong> option is
@@ -105,6 +106,16 @@ This utility can also compute the direction of gravity accurately.</p>
 <p>cache the data bounded by <em>south</em> <em>west</em> <em>north</em> <em>east</em> in memory.
 See <a href="#cache">CACHE</a>.</p>
 </dd>
+<dt><strong><a name="g" class="item"><strong>-g</strong></a></strong></dt>
+
+<dd>
+<p>print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+WGS84 ellipsoid in the specified directions).  As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors.  This is particularly acute at high
+latitudes and for the easterly gradient.</p>
+</dd>
 <dt><strong><a name="z" class="item"><strong>-z</strong></a></strong></dt>
 
 <dd>
@@ -134,6 +145,15 @@ input line with the height converted to height above the geoid (MSL).</p>
 <p>print information about the geoid on standard error before processing
 the input.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -159,8 +179,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -181,19 +207,16 @@ installed):</p>
                                   bilinear error    cubic error
    name         geoid    grid     max      rms      max      rms
    egm84-30     EGM84    30'      1.546 m  70 mm    0.274 m  14 mm
-   egm84-15     EGM84    15'      0.413 m  18 mm    0.020 m   1 mm
-   egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m   7 mm
-   egm96-5      EGM96     5'      0.140 m   5 mm    0.003 m   1 mm
-   egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m   5 mm
-   egm2008-2_5  EGM2008   2.5'    0.135 m   3 mm    0.031 m   1 mm
-   egm2008-1    EGM2008   1'      0.025 m   1 mm    0.003 m   1 mm</pre>
+   egm84-15     EGM84    15'      0.413 m  18 mm    0.021 m  1.2 mm
+   egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m  7.0 mm
+   egm96-5      EGM96     5'      0.140 m  4.6 mm   .0032 m  0.7 mm
+   egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m  4.5 mm
+   egm2008-2_5  EGM2008   2.5'    0.135 m  3.2 mm   0.031 m  0.8 mm
+   egm2008-1    EGM2008   1'      0.025 m  0.8 mm   .0022 m  0.7 mm</pre>
 <p>By default, the <code>egm96-5</code> geoid is used.  This may changed by setting
 the environment variable <a href="#geoid_name"><code>GEOID_NAME</code></a> or with the <strong>-n</strong> option.  The
 errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid.  As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors.  This is particularly
-acute at high latitudes and for the easterly gradient.</p>
+errors in the reported heights compared to the specified geoid.</p>
 <p>The geoid data will be loaded from a directory specified at compile
 time.  This may changed by setting the environment variables
 <a href="#geoid_path"><code>GEOID_PATH</code></a> or <a href="#geographiclib_data"><code>GEOGRAPHICLIB_DATA</code></a>, or with the <strong>-d</strong> option.  The
@@ -220,10 +243,7 @@ interpolation is based on a least-squares fit of a cubic polynomial to a
 the height at one of the poles.  Cubic interpolation is considerably
 more accurate than bilinear; however it results in small discontinuities
 in the returned height on cell boundaries.  The gradients are computed
-by differentiating the interpolated results.  As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors.  This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.</p>
+by differentiating the interpolated results.</p>
 <p>
 </p>
 <hr />
@@ -331,7 +351,7 @@ level.)</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>The height of the EGM96 geoid at Timbuktu</p>
 <pre>
-    echo "16d46'33N" "3d00'34W" | GeoidEval
+    echo 16:46:33N 3:00:34W | GeoidEval
     => 28.7068 -0.02e-6 -1.73e-6</pre>
 <p>The first number returned is the height of the geoid and the 2nd and 3rd
 are its slopes in the northerly and easterly directions.</p>
diff --git a/doc/html/GeoidEval_8cpp.html b/doc/html/GeoidEval_8cpp.html
index 1d53588..ff2c1cc 100644
--- a/doc/html/GeoidEval_8cpp.html
+++ b/doc/html/GeoidEval_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoidEval.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for evaluating geoid heights. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o GeoidEval \ <a class="el" href="GeoidEval_8cpp.html" title="Command line utility for evaluating geoid heights.">GeoidEval.cpp</a> \ ../src/DMS.cpp \ ../src/GeoCoords.cpp \ ../src/Geoid.cpp \ ../src/MGRS.cpp \ ../src/PolarStereographic.cpp \ ../src/TransverseMercator.cpp \ ../src/UTMUPS.cpp</p>
 <p>See the <a href="GeoidEval.1.html">man page</a> for usage information. </p>
 
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="GeoidEval_8cpp_source.html#l00035">35</a> of file <a class="el" href="GeoidEval_8cpp_source.html">GeoidEval.cpp</a>.</p>
 
-<p>References <a class="el" href="Geoid_8hpp_source.html#l00376">GeographicLib::Geoid::Cache()</a>, <a class="el" href="Geoid_8hpp_source.html#l00228">GeographicLib::Geoid::CacheAll()</a>, <a class="el" href="Geoid_8cpp_source.html#l00446">GeographicLib::Geoid::CacheArea()</a>, <a class="el" href="Geoid_8hpp_source.html#l00390">GeographicLib::Geoid::CacheEast()</a>, <a class="el" href="Geoid_8hpp_source.html#l00400">GeographicLib::Geoid::CacheNorth()</a>, <a class="el" href="Geoid_8hpp_s [...]
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00542">GeographicLib::Geoid::DefaultGeoidName()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="UTMUPS_8cpp_source.html#l00186">GeographicLib::UTMUPS::DecodeZone()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00128">GeographicLib::UTMUPS::MINZONE</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00144">GeographicLib::UTMUPS::MAXZONE</a>, <a class="el" href="Geo [...]
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GeoidEval_8cpp_source.html b/doc/html/GeoidEval_8cpp_source.html
index 1252439..97419ca 100644
--- a/doc/html/GeoidEval_8cpp_source.html
+++ b/doc/html/GeoidEval_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeoidEval.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GeoidEval.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for evaluating geoid heights</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -84,239 +99,274 @@
 <a name="l00035"></a><a class="code" href="GeoidEval_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00035</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00036"></a>00036   <span class="keywordflow">try</span> {
 <a name="l00037"></a>00037     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00039"></a>00039     <span class="keywordtype">bool</span> cacheall = <span class="keyword">false</span>, cachearea = <span class="keyword">false</span>, verbose = <span class="keyword">false</span>, cubic = <span class="keyword">true</span>;
-<a name="l00040"></a>00040     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> caches, cachew, cachen, cachee;
-<a name="l00041"></a>00041     std::string dir;
-<a name="l00042"></a>00042     std::string geoid = <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>();
-<a name="l00043"></a>00043     <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">Geoid::convertflag</a> heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">Geoid::NONE</a>;
-<a name="l00044"></a>00044     std::string istring, ifile, ofile;
-<a name="l00045"></a>00045     <span class="keywordtype">bool</span> northp = <span class="keyword">false</span>;
-<a name="l00046"></a>00046     <span class="keywordtype">int</span> zonenum = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">UTMUPS::INVALID</a>;
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00049"></a>00049       std::string arg(argv[m]);
-<a name="l00050"></a>00050       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>) {
-<a name="l00051"></a>00051         cacheall = <span class="keyword">true</span>;
-<a name="l00052"></a>00052         cachearea = <span class="keyword">false</span>;
-<a name="l00053"></a>00053       }
-<a name="l00054"></a>00054       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
-<a name="l00055"></a>00055         <span class="keywordflow">if</span> (m + 4 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00056"></a>00056         cacheall = <span class="keyword">false</span>;
-<a name="l00057"></a>00057         cachearea = <span class="keyword">true</span>;
-<a name="l00058"></a>00058         <span class="keywordflow">try</span> {
-<a name="l00059"></a>00059           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00060"></a>00060                             caches, cachew);
-<a name="l00061"></a>00061           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 3]), std::string(argv[m + 4]),
-<a name="l00062"></a>00062                             cachen, cachee);
-<a name="l00063"></a>00063         }
-<a name="l00064"></a>00064         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00065"></a>00065           std::cerr << <span class="stringliteral">"Error decoding argument of -c: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00066"></a>00066           <span class="keywordflow">return</span> 1;
-<a name="l00067"></a>00067         }
-<a name="l00068"></a>00068         m += 4;
-<a name="l00069"></a>00069       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--msltohae"</span>)
-<a name="l00070"></a>00070         heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">Geoid::GEOIDTOELLIPSOID</a>;
-<a name="l00071"></a>00071       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--haetomsl"</span>)
-<a name="l00072"></a>00072         heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a4a1db06e9dcfa1ebb345c616151ab70d">Geoid::ELLIPSOIDTOGEOID</a>;
-<a name="l00073"></a>00073       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
-<a name="l00074"></a>00074         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00075"></a>00075         std::string zone = argv[m];
-<a name="l00076"></a>00076         <span class="keywordflow">try</span> {
-<a name="l00077"></a>00077           <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zone, zonenum, northp);
-<a name="l00078"></a>00078         }
-<a name="l00079"></a>00079         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00080"></a>00080           std::cerr << <span class="stringliteral">"Error decoding zone: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00081"></a>00081           <span class="keywordflow">return</span> 1;
-<a name="l00082"></a>00082         }
-<a name="l00083"></a>00083         <span class="keywordflow">if</span> (!(zonenum >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zonenum <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
-<a name="l00084"></a>00084           std::cerr << <span class="stringliteral">"Illegal zone "</span> << zone << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085           <span class="keywordflow">return</span> 1;
-<a name="l00086"></a>00086         }
-<a name="l00087"></a>00087       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
-<a name="l00088"></a>00088         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00089"></a>00089         geoid = argv[m];
-<a name="l00090"></a>00090       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
-<a name="l00091"></a>00091         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00092"></a>00092         dir = argv[m];
-<a name="l00093"></a>00093       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00094"></a>00094         cubic = <span class="keyword">false</span>;
-<a name="l00095"></a>00095       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
-<a name="l00096"></a>00096         verbose = <span class="keyword">true</span>;
-<a name="l00097"></a>00097       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00098"></a>00098         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00099"></a>00099         istring = argv[m];
-<a name="l00100"></a>00100       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00101"></a>00101         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00102"></a>00102         ifile = argv[m];
-<a name="l00103"></a>00103       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00104"></a>00104         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00105"></a>00105         ofile = argv[m];
-<a name="l00106"></a>00106       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00107"></a>00107         std::cout
-<a name="l00108"></a>00108           << argv[0]
-<a name="l00109"></a>00109           << <span class="stringliteral">": $Id: c241b424ccc91f1fa7e7f9cc74ef5f157023bc56 $\n"</span>
-<a name="l00110"></a>00110           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00111"></a>00111         <span class="keywordflow">return</span> 0;
-<a name="l00112"></a>00112       } <span class="keywordflow">else</span> {
-<a name="l00113"></a>00113         <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00114"></a>00114         <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
-<a name="l00115"></a>00115           std::cout<< <span class="stringliteral">"\nDefault geoid path = \""</span>   << <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">Geoid::DefaultGeoidPath</a>()
-<a name="l00116"></a>00116                    << <span class="stringliteral">"\"\nDefault geoid name = \""</span> << <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>()
-<a name="l00117"></a>00117                    << <span class="stringliteral">"\"\n"</span>;
-<a name="l00118"></a>00118         <span class="keywordflow">return</span> retval;
-<a name="l00119"></a>00119       }
-<a name="l00120"></a>00120     }
-<a name="l00121"></a>00121 
-<a name="l00122"></a>00122     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00123"></a>00123       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00124"></a>00124       <span class="keywordflow">return</span> 1;
-<a name="l00125"></a>00125     }
-<a name="l00126"></a>00126     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00127"></a>00127     std::ifstream infile;
-<a name="l00128"></a>00128     std::istringstream instring;
-<a name="l00129"></a>00129     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00130"></a>00130       infile.open(ifile.c_str());
-<a name="l00131"></a>00131       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00132"></a>00132         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00133"></a>00133         <span class="keywordflow">return</span> 1;
-<a name="l00134"></a>00134       }
-<a name="l00135"></a>00135     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00136"></a>00136       std::string::size_type m = 0;
-<a name="l00137"></a>00137       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00138"></a>00138         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00139"></a>00139         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00140"></a>00140           <span class="keywordflow">break</span>;
-<a name="l00141"></a>00141         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00142"></a>00142       }
-<a name="l00143"></a>00143       instring.str(istring);
-<a name="l00144"></a>00144     }
-<a name="l00145"></a>00145     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00146"></a>00146       (!istring.empty() ? &instring : &std::cin);
-<a name="l00147"></a>00147 
-<a name="l00148"></a>00148     std::ofstream outfile;
-<a name="l00149"></a>00149     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00150"></a>00150     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00151"></a>00151       outfile.open(ofile.c_str());
-<a name="l00152"></a>00152       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00153"></a>00153         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00154"></a>00154         <span class="keywordflow">return</span> 1;
-<a name="l00155"></a>00155       }
-<a name="l00156"></a>00156     }
-<a name="l00157"></a>00157     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
-<a name="l00158"></a>00158 
-<a name="l00159"></a>00159     <span class="keywordtype">int</span> retval = 0;
-<a name="l00160"></a>00160     <span class="keywordflow">try</span> {
-<a name="l00161"></a>00161       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a> g(geoid, dir, cubic);
-<a name="l00162"></a>00162       <span class="keywordflow">try</span> {
-<a name="l00163"></a>00163         <span class="keywordflow">if</span> (cacheall)
-<a name="l00164"></a>00164           g.<a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
-<a name="l00165"></a>00165         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cachearea)
-<a name="l00166"></a>00166           g.<a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">CacheArea</a>(caches, cachew, cachen, cachee);
-<a name="l00167"></a>00167       }
-<a name="l00168"></a>00168       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00169"></a>00169         std::cerr << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\nProceeding without a cache\n"</span>;
-<a name="l00170"></a>00170       }
-<a name="l00171"></a>00171       <span class="keywordflow">if</span> (verbose) {
-<a name="l00172"></a>00172         std::cerr << <span class="stringliteral">"Geoid file: "</span>    << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>()     << <span class="stringliteral">"\n"</span>
-<a name="l00173"></a>00173                   << <span class="stringliteral">"Description: "</span>   << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>()   << <span class="stringliteral">"\n"</span>
-<a name="l00174"></a>00174                   << <span class="stringliteral">"Interpolation: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">Interpolation</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00175"></a>00175                   << <span class="stringliteral">"Date & Time: "</span>   << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>()      << <span class="stringliteral">"\n"</span>
-<a name="l00176"></a>00176                   << <span class="stringliteral">"Offset (m): "</span>    << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>()        << <span class="stringliteral">"\n"</span>
-<a name="l00177"></a>00177                   << <span class="stringliteral">"Scale (m): "</span>     << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>()         << <span class="stringliteral">"\n"</span>
-<a name="l00178"></a>00178                   << <span class="stringliteral">"Max error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>()      << <span class="stringliteral">"\n"</span>
-<a name="l00179"></a>00179                   << <span class="stringliteral">"RMS error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>()      << <span class="stringliteral">"\n"</span>;
-<a name="l00180"></a>00180         <span class="keywordflow">if</span> (g.<a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>())
-<a name="l00181"></a>00181           std::cerr<< <span class="stringliteral">"Caching:"</span>
-<a name="l00182"></a>00182                    << <span class="stringliteral">"\n SW Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>()
-<a name="l00183"></a>00183                    << <span class="stringliteral">"\n NE Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>()
-<a name="l00184"></a>00184                    << <span class="stringliteral">"\n"</span>;
-<a name="l00185"></a>00185       }
-<a name="l00186"></a>00186 
-<a name="l00187"></a>00187       <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
-<a name="l00188"></a>00188       std::string s, suff;
-<a name="l00189"></a>00189       <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r,"</span>; <span class="comment">// Include comma as space</span>
-<a name="l00190"></a>00190       <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00191"></a>00191         <span class="keywordflow">try</span> {
-<a name="l00192"></a>00192           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> height = 0;
-<a name="l00193"></a>00193           <span class="keywordflow">if</span> (zonenum != <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">UTMUPS::INVALID</a>) {
-<a name="l00194"></a>00194             <span class="comment">// Expect "easting northing" if heightmult == 0, or</span>
-<a name="l00195"></a>00195             <span class="comment">// "easting northing height" if heightmult != 0.</span>
-<a name="l00196"></a>00196             std::string::size_type pa = 0, pb = 0;
-<a name="l00197"></a>00197             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting = 0, northing = 0;
-<a name="l00198"></a>00198             <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < (heightmult ? 3 : 2); ++i) {
-<a name="l00199"></a>00199               <span class="keywordflow">if</span> (pb == std::string::npos)
-<a name="l00200"></a>00200                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00201"></a>00201               <span class="comment">// Start of i'th token</span>
-<a name="l00202"></a>00202               pa = s.find_first_not_of(spaces, pb);
-<a name="l00203"></a>00203               <span class="keywordflow">if</span> (pa == std::string::npos)
-<a name="l00204"></a>00204                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00205"></a>00205               <span class="comment">// End of i'th token</span>
-<a name="l00206"></a>00206               pb = s.find_first_of(spaces, pa);
-<a name="l00207"></a>00207               (i == 2 ? height : (i == 0 ? easting : northing)) =
-<a name="l00208"></a>00208                 Utility::num<real>(s.substr(pa, (pb == std::string::npos ?
-<a name="l00209"></a>00209                                                  pb : pb - pa)));
-<a name="l00210"></a>00210             }
-<a name="l00211"></a>00211             p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(zonenum, northp, easting, northing);
-<a name="l00212"></a>00212             <span class="keywordflow">if</span> (heightmult) {
-<a name="l00213"></a>00213               suff = pb == std::string::npos ? <span class="stringliteral">""</span> : s.substr(pb);
-<a name="l00214"></a>00214               s = s.substr(0, pa);
-<a name="l00215"></a>00215             }
-<a name="l00216"></a>00216           } <span class="keywordflow">else</span> {
-<a name="l00217"></a>00217             <span class="keywordflow">if</span> (heightmult) {
-<a name="l00218"></a>00218               <span class="comment">// Treat last token as height</span>
-<a name="l00219"></a>00219               <span class="comment">// pb = last char of last token</span>
-<a name="l00220"></a>00220               <span class="comment">// pa = last char preceding white space</span>
-<a name="l00221"></a>00221               <span class="comment">// px = last char of 2nd last token</span>
-<a name="l00222"></a>00222               std::string::size_type pb = s.find_last_not_of(spaces);
-<a name="l00223"></a>00223               std::string::size_type pa = s.find_last_of(spaces, pb);
-<a name="l00224"></a>00224               <span class="keywordflow">if</span> (pa == std::string::npos || pb == std::string::npos)
-<a name="l00225"></a>00225                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00226"></a>00226               height = Utility::num<real>(s.substr(pa + 1, pb - pa));
-<a name="l00227"></a>00227               s = s.substr(0, pa + 1);
-<a name="l00228"></a>00228             }
-<a name="l00229"></a>00229             p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s);
-<a name="l00230"></a>00230           }
-<a name="l00231"></a>00231           <span class="keywordflow">if</span> (heightmult) {
-<a name="l00232"></a>00232             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>());
-<a name="l00233"></a>00233             *output << s
-<a name="l00234"></a>00234                     << Utility::str<real>(height + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(heightmult) * h, 4)
-<a name="l00235"></a>00235                     << suff << <span class="stringliteral">"\n"</span>;
-<a name="l00236"></a>00236           } <span class="keywordflow">else</span> {
-<a name="l00237"></a>00237             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gradn, grade;
-<a name="l00238"></a>00238             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>(), gradn, grade);
-<a name="l00239"></a>00239             *output << Utility::str<real>(h, 4) << <span class="stringliteral">" "</span>
-<a name="l00240"></a>00240                     << Utility::str<real>(gradn * 1e6, 2)
-<a name="l00241"></a>00241                     << (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(gradn) ? <span class="stringliteral">" "</span> : <span class="stringliteral">"e-6 "</span>)
-<a name="l00242"></a>00242                     << Utility::str<real>(grade * 1e6, 2)
-<a name="l00243"></a>00243                     << (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(grade) ? <span class="stringliteral">"\n"</span> : <span class="stringliteral">"e-6\n"</span>);
-<a name="l00244"></a>00244           }
-<a name="l00245"></a>00245         }
-<a name="l00246"></a>00246         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00247"></a>00247           *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00248"></a>00248           retval = 1;
-<a name="l00249"></a>00249         }
-<a name="l00250"></a>00250       }
-<a name="l00251"></a>00251     }
-<a name="l00252"></a>00252     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00253"></a>00253       std::cerr << <span class="stringliteral">"Error reading "</span> << geoid << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00254"></a>00254       retval = 1;
-<a name="l00255"></a>00255     }
-<a name="l00256"></a>00256     <span class="keywordflow">return</span> retval;
-<a name="l00257"></a>00257   }
-<a name="l00258"></a>00258   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00259"></a>00259     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00260"></a>00260     <span class="keywordflow">return</span> 1;
-<a name="l00261"></a>00261   }
-<a name="l00262"></a>00262   <span class="keywordflow">catch</span> (...) {
-<a name="l00263"></a>00263     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00264"></a>00264     <span class="keywordflow">return</span> 1;
-<a name="l00265"></a>00265   }
-<a name="l00266"></a>00266 }
+<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00039"></a>00039     <span class="keywordtype">bool</span> cacheall = <span class="keyword">false</span>, cachearea = <span class="keyword">false</span>, verbose = <span class="keyword">false</span>,
+<a name="l00040"></a>00040       cubic = <span class="keyword">true</span>, gradp = <span class="keyword">false</span>;
+<a name="l00041"></a>00041     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> caches, cachew, cachen, cachee;
+<a name="l00042"></a>00042     std::string dir;
+<a name="l00043"></a>00043     std::string geoid = <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>();
+<a name="l00044"></a>00044     <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::convertflag heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::NONE;
+<a name="l00045"></a>00045     std::string istring, ifile, ofile, cdelim;
+<a name="l00046"></a>00046     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00047"></a>00047     <span class="keywordtype">bool</span> northp = <span class="keyword">false</span>;
+<a name="l00048"></a>00048     <span class="keywordtype">int</span> zonenum = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::INVALID;
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00051"></a>00051       std::string arg(argv[m]);
+<a name="l00052"></a>00052       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>) {
+<a name="l00053"></a>00053         cacheall = <span class="keyword">true</span>;
+<a name="l00054"></a>00054         cachearea = <span class="keyword">false</span>;
+<a name="l00055"></a>00055       }
+<a name="l00056"></a>00056       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
+<a name="l00057"></a>00057         <span class="keywordflow">if</span> (m + 4 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00058"></a>00058         cacheall = <span class="keyword">false</span>;
+<a name="l00059"></a>00059         cachearea = <span class="keyword">true</span>;
+<a name="l00060"></a>00060         <span class="keywordflow">try</span> {
+<a name="l00061"></a>00061           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00062"></a>00062                             caches, cachew);
+<a name="l00063"></a>00063           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 3]), std::string(argv[m + 4]),
+<a name="l00064"></a>00064                             cachen, cachee);
+<a name="l00065"></a>00065         }
+<a name="l00066"></a>00066         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00067"></a>00067           std::cerr << <span class="stringliteral">"Error decoding argument of -c: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00068"></a>00068           <span class="keywordflow">return</span> 1;
+<a name="l00069"></a>00069         }
+<a name="l00070"></a>00070         m += 4;
+<a name="l00071"></a>00071       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--msltohae"</span>)
+<a name="l00072"></a>00072         heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::GEOIDTOELLIPSOID;
+<a name="l00073"></a>00073       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--haetomsl"</span>)
+<a name="l00074"></a>00074         heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::ELLIPSOIDTOGEOID;
+<a name="l00075"></a>00075       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
+<a name="l00076"></a>00076         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077         std::string zone = argv[m];
+<a name="l00078"></a>00078         <span class="keywordflow">try</span> {
+<a name="l00079"></a>00079           <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zone, zonenum, northp);
+<a name="l00080"></a>00080         }
+<a name="l00081"></a>00081         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00082"></a>00082           std::cerr << <span class="stringliteral">"Error decoding zone: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00083"></a>00083           <span class="keywordflow">return</span> 1;
+<a name="l00084"></a>00084         }
+<a name="l00085"></a>00085         <span class="keywordflow">if</span> (!(zonenum >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zonenum <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
+<a name="l00086"></a>00086           std::cerr << <span class="stringliteral">"Illegal zone "</span> << zone << <span class="stringliteral">"\n"</span>;
+<a name="l00087"></a>00087           <span class="keywordflow">return</span> 1;
+<a name="l00088"></a>00088         }
+<a name="l00089"></a>00089       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
+<a name="l00090"></a>00090         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00091"></a>00091         geoid = argv[m];
+<a name="l00092"></a>00092       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00093"></a>00093         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00094"></a>00094         dir = argv[m];
+<a name="l00095"></a>00095       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>)
+<a name="l00096"></a>00096         cubic = <span class="keyword">false</span>;
+<a name="l00097"></a>00097       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-g"</span>)
+<a name="l00098"></a>00098         gradp = <span class="keyword">true</span>;
+<a name="l00099"></a>00099       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
+<a name="l00100"></a>00100         verbose = <span class="keyword">true</span>;
+<a name="l00101"></a>00101       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00102"></a>00102         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00103"></a>00103         istring = argv[m];
+<a name="l00104"></a>00104       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00105"></a>00105         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00106"></a>00106         ifile = argv[m];
+<a name="l00107"></a>00107       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00108"></a>00108         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00109"></a>00109         ofile = argv[m];
+<a name="l00110"></a>00110       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00111"></a>00111         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00112"></a>00112         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00113"></a>00113           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00114"></a>00114           <span class="keywordflow">return</span> 1;
+<a name="l00115"></a>00115         }
+<a name="l00116"></a>00116         lsep = argv[m][0];
+<a name="l00117"></a>00117       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00118"></a>00118         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00119"></a>00119         cdelim = argv[m];
+<a name="l00120"></a>00120       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00121"></a>00121         std::cout
+<a name="l00122"></a>00122           << argv[0]
+<a name="l00123"></a>00123           << <span class="stringliteral">": $Id: 6db1ff0b8309a39d0d9b0250dd73be964c5efb7c $\n"</span>
+<a name="l00124"></a>00124           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00125"></a>00125         <span class="keywordflow">return</span> 0;
+<a name="l00126"></a>00126       } <span class="keywordflow">else</span> {
+<a name="l00127"></a>00127         <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00128"></a>00128         <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
+<a name="l00129"></a>00129           std::cout<< <span class="stringliteral">"\nDefault geoid path = \""</span>   << <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">Geoid::DefaultGeoidPath</a>()
+<a name="l00130"></a>00130                    << <span class="stringliteral">"\"\nDefault geoid name = \""</span> << <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>()
+<a name="l00131"></a>00131                    << <span class="stringliteral">"\"\n"</span>;
+<a name="l00132"></a>00132         <span class="keywordflow">return</span> retval;
+<a name="l00133"></a>00133       }
+<a name="l00134"></a>00134     }
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00137"></a>00137       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00138"></a>00138       <span class="keywordflow">return</span> 1;
+<a name="l00139"></a>00139     }
+<a name="l00140"></a>00140     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00141"></a>00141     std::ifstream infile;
+<a name="l00142"></a>00142     std::istringstream instring;
+<a name="l00143"></a>00143     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00144"></a>00144       infile.open(ifile.c_str());
+<a name="l00145"></a>00145       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00146"></a>00146         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00147"></a>00147         <span class="keywordflow">return</span> 1;
+<a name="l00148"></a>00148       }
+<a name="l00149"></a>00149     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00150"></a>00150       std::string::size_type m = 0;
+<a name="l00151"></a>00151       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00152"></a>00152         m = istring.find(lsep, m);
+<a name="l00153"></a>00153         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00154"></a>00154           <span class="keywordflow">break</span>;
+<a name="l00155"></a>00155         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00156"></a>00156       }
+<a name="l00157"></a>00157       instring.str(istring);
+<a name="l00158"></a>00158     }
+<a name="l00159"></a>00159     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00160"></a>00160       (!istring.empty() ? &instring : &std::cin);
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162     std::ofstream outfile;
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00164"></a>00164     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00165"></a>00165       outfile.open(ofile.c_str());
+<a name="l00166"></a>00166       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00167"></a>00167         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00168"></a>00168         <span class="keywordflow">return</span> 1;
+<a name="l00169"></a>00169       }
+<a name="l00170"></a>00170     }
+<a name="l00171"></a>00171     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00172"></a>00172 
+<a name="l00173"></a>00173     <span class="keywordtype">int</span> retval = 0;
+<a name="l00174"></a>00174     <span class="keywordflow">try</span> {
+<a name="l00175"></a>00175       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a> g(geoid, dir, cubic);
+<a name="l00176"></a>00176       <span class="keywordflow">try</span> {
+<a name="l00177"></a>00177         <span class="keywordflow">if</span> (cacheall)
+<a name="l00178"></a>00178           g.<a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
+<a name="l00179"></a>00179         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cachearea)
+<a name="l00180"></a>00180           g.<a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">CacheArea</a>(caches, cachew, cachen, cachee);
+<a name="l00181"></a>00181       }
+<a name="l00182"></a>00182       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00183"></a>00183         std::cerr << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\nProceeding without a cache\n"</span>;
+<a name="l00184"></a>00184       }
+<a name="l00185"></a>00185       <span class="keywordflow">if</span> (verbose) {
+<a name="l00186"></a>00186         std::cerr << <span class="stringliteral">"Geoid file: "</span>    << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>()     << <span class="stringliteral">"\n"</span>
+<a name="l00187"></a>00187                   << <span class="stringliteral">"Description: "</span>   << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>()   << <span class="stringliteral">"\n"</span>
+<a name="l00188"></a>00188                   << <span class="stringliteral">"Interpolation: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">Interpolation</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00189"></a>00189                   << <span class="stringliteral">"Date & Time: "</span>   << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>()      << <span class="stringliteral">"\n"</span>
+<a name="l00190"></a>00190                   << <span class="stringliteral">"Offset (m): "</span>    << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>()        << <span class="stringliteral">"\n"</span>
+<a name="l00191"></a>00191                   << <span class="stringliteral">"Scale (m): "</span>     << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>()         << <span class="stringliteral">"\n"</span>
+<a name="l00192"></a>00192                   << <span class="stringliteral">"Max error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>()      << <span class="stringliteral">"\n"</span>
+<a name="l00193"></a>00193                   << <span class="stringliteral">"RMS error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>()      << <span class="stringliteral">"\n"</span>;
+<a name="l00194"></a>00194         <span class="keywordflow">if</span> (g.<a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>())
+<a name="l00195"></a>00195           std::cerr<< <span class="stringliteral">"Caching:"</span>
+<a name="l00196"></a>00196                    << <span class="stringliteral">"\n SW Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>()
+<a name="l00197"></a>00197                    << <span class="stringliteral">"\n NE Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>()
+<a name="l00198"></a>00198                    << <span class="stringliteral">"\n"</span>;
+<a name="l00199"></a>00199       }
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201       <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
+<a name="l00202"></a>00202       std::string s, suff;
+<a name="l00203"></a>00203       <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r,"</span>; <span class="comment">// Include comma as space</span>
+<a name="l00204"></a>00204       <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00205"></a>00205         <span class="keywordflow">try</span> {
+<a name="l00206"></a>00206           std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00207"></a>00207           <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00208"></a>00208             std::string::size_type m = s.find(cdelim);
+<a name="l00209"></a>00209             <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00210"></a>00210               eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00211"></a>00211               std::string::size_type m1 =
+<a name="l00212"></a>00212                 m > 0 ? s.find_last_not_of(spaces, m - 1) : std::string::npos;
+<a name="l00213"></a>00213               s = s.substr(0, m1 != std::string::npos ? m1 + 1 : m);
+<a name="l00214"></a>00214             }
+<a name="l00215"></a>00215           }
+<a name="l00216"></a>00216           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> height = 0;
+<a name="l00217"></a>00217           <span class="keywordflow">if</span> (zonenum != <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">UTMUPS::INVALID</a>) {
+<a name="l00218"></a>00218             <span class="comment">// Expect "easting northing" if heightmult == 0, or</span>
+<a name="l00219"></a>00219             <span class="comment">// "easting northing height" if heightmult != 0.</span>
+<a name="l00220"></a>00220             std::string::size_type pa = 0, pb = 0;
+<a name="l00221"></a>00221             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting = 0, northing = 0;
+<a name="l00222"></a>00222             <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < (heightmult ? 3 : 2); ++i) {
+<a name="l00223"></a>00223               <span class="keywordflow">if</span> (pb == std::string::npos)
+<a name="l00224"></a>00224                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00225"></a>00225               <span class="comment">// Start of i'th token</span>
+<a name="l00226"></a>00226               pa = s.find_first_not_of(spaces, pb);
+<a name="l00227"></a>00227               <span class="keywordflow">if</span> (pa == std::string::npos)
+<a name="l00228"></a>00228                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00229"></a>00229               <span class="comment">// End of i'th token</span>
+<a name="l00230"></a>00230               pb = s.find_first_of(spaces, pa);
+<a name="l00231"></a>00231               (i == 2 ? height : (i == 0 ? easting : northing)) =
+<a name="l00232"></a>00232                 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(s.substr(pa, (pb == std::string::npos ?
+<a name="l00233"></a>00233                                                  pb : pb - pa)));
+<a name="l00234"></a>00234             }
+<a name="l00235"></a>00235             p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(zonenum, northp, easting, northing);
+<a name="l00236"></a>00236             <span class="keywordflow">if</span> (heightmult) {
+<a name="l00237"></a>00237               suff = pb == std::string::npos ? <span class="stringliteral">""</span> : s.substr(pb);
+<a name="l00238"></a>00238               s = s.substr(0, pa);
+<a name="l00239"></a>00239             }
+<a name="l00240"></a>00240           } <span class="keywordflow">else</span> {
+<a name="l00241"></a>00241             <span class="keywordflow">if</span> (heightmult) {
+<a name="l00242"></a>00242               <span class="comment">// Treat last token as height</span>
+<a name="l00243"></a>00243               <span class="comment">// pb = last char of last token</span>
+<a name="l00244"></a>00244               <span class="comment">// pa = last char preceding white space</span>
+<a name="l00245"></a>00245               <span class="comment">// px = last char of 2nd last token</span>
+<a name="l00246"></a>00246               std::string::size_type pb = s.find_last_not_of(spaces);
+<a name="l00247"></a>00247               std::string::size_type pa = s.find_last_of(spaces, pb);
+<a name="l00248"></a>00248               <span class="keywordflow">if</span> (pa == std::string::npos || pb == std::string::npos)
+<a name="l00249"></a>00249                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00250"></a>00250               height = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(s.substr(pa + 1, pb - pa));
+<a name="l00251"></a>00251               s = s.substr(0, pa + 1);
+<a name="l00252"></a>00252             }
+<a name="l00253"></a>00253             p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s);
+<a name="l00254"></a>00254           }
+<a name="l00255"></a>00255           <span class="keywordflow">if</span> (heightmult) {
+<a name="l00256"></a>00256             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>());
+<a name="l00257"></a>00257             *output << s
+<a name="l00258"></a>00258                     << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(height + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(heightmult) * h, 4)
+<a name="l00259"></a>00259                     << suff << eol;
+<a name="l00260"></a>00260           } <span class="keywordflow">else</span> {
+<a name="l00261"></a>00261             <span class="keywordflow">if</span> (gradp) {
+<a name="l00262"></a>00262             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gradn, grade;
+<a name="l00263"></a>00263             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>(), gradn, grade);
+<a name="l00264"></a>00264             *output << Utility::str<real>(h, 4) << <span class="stringliteral">" "</span>
+<a name="l00265"></a>00265                     << Utility::str<real>(gradn * 1e6, 2)
+<a name="l00266"></a>00266                     << (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(gradn) ? <span class="stringliteral">" "</span> : <span class="stringliteral">"e-6 "</span>)
+<a name="l00267"></a>00267                     << Utility::str<real>(grade * 1e6, 2)
+<a name="l00268"></a>00268                     << (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(grade) ? <span class="stringliteral">""</span> : <span class="stringliteral">"e-6"</span>)
+<a name="l00269"></a>00269                     << eol;
+<a name="l00270"></a>00270             } <span class="keywordflow">else</span> {
+<a name="l00271"></a>00271             <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>());
+<a name="l00272"></a>00272             *output << Utility::str<real>(h, 4) << eol;
+<a name="l00273"></a>00273             }
+<a name="l00274"></a>00274           }
+<a name="l00275"></a>00275         }
+<a name="l00276"></a>00276         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00277"></a>00277           *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00278"></a>00278           retval = 1;
+<a name="l00279"></a>00279         }
+<a name="l00280"></a>00280       }
+<a name="l00281"></a>00281     }
+<a name="l00282"></a>00282     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00283"></a>00283       std::cerr << <span class="stringliteral">"Error reading "</span> << geoid << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00284"></a>00284       retval = 1;
+<a name="l00285"></a>00285     }
+<a name="l00286"></a>00286     <span class="keywordflow">return</span> retval;
+<a name="l00287"></a>00287   }
+<a name="l00288"></a>00288   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00289"></a>00289     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00290"></a>00290     <span class="keywordflow">return</span> 1;
+<a name="l00291"></a>00291   }
+<a name="l00292"></a>00292   <span class="keywordflow">catch</span> (...) {
+<a name="l00293"></a>00293     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00294"></a>00294     <span class="keywordflow">return</span> 1;
+<a name="l00295"></a>00295   }
+<a name="l00296"></a>00296 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geoid_8cpp.html b/doc/html/Geoid_8cpp.html
index 2c73fe1..239905b 100644
--- a/doc/html/Geoid_8cpp.html
+++ b/doc/html/Geoid_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geoid.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,25 +72,24 @@
 <code>#include <sstream></code><br/>
 <code>#include <cstdlib></code><br/>
 <code>#include <algorithm></code><br/>
+<code>#include <<a class="el" href="Utility_8hpp_source.html">GeographicLib/Utility.hpp</a>></code><br/>
 </div>
 <p><a href="Geoid_8cpp_source.html">Go to the source code of this file.</a></p>
 <table class="memberdecls">
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a>   "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a>   "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#a45687ef771d809c1c369daea074cc109">GEOGRAPHICLIB_DATA</a>   "/usr/local/share/GeographicLib"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#a2999d90c0556a04490ea239ddcb052b8">GEOID_DEFAULT_NAME</a>   "egm96-5"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -84,13 +98,13 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEOID_CPP   "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEOID_CPP   "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00015">15</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00016">16</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
 </div>
 </div>
@@ -105,7 +119,7 @@ Defines</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00026">26</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00027">27</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00529">GeographicLib::Geoid::DefaultGeoidPath()</a>.</p>
 
@@ -122,15 +136,20 @@ Defines</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00031">31</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00032">32</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00542">GeographicLib::Geoid::DefaultGeoidName()</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geoid_8cpp_source.html b/doc/html/Geoid_8cpp_source.html
index 2ef9b19..01a967b 100644
--- a/doc/html/Geoid_8cpp_source.html
+++ b/doc/html/Geoid_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geoid.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geoid.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::Geoid class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
@@ -60,512 +75,512 @@
 <a name="l00011"></a>00011 <span class="preprocessor">#include <sstream></span>
 <a name="l00012"></a>00012 <span class="preprocessor">#include <cstdlib></span>
 <a name="l00013"></a>00013 <span class="preprocessor">#include <algorithm></span>
-<a name="l00014"></a>00014 
-<a name="l00015"></a><a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">00015</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOID_CPP \</span>
-<a name="l00016"></a>00016 <span class="preprocessor">  "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00018"></a>00018 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a>)
-<a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a>)
-<a name="l00020"></a>00020 
-<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_DATA)</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#  if defined(_MSC_VER)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_DATA \</span>
-<a name="l00024"></a>00024 <span class="preprocessor">  "C:/Documents and Settings/All Users/Application Data/GeographicLib"</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#  else</span>
-<a name="l00026"></a><a class="code" href="Geoid_8cpp.html#a45687ef771d809c1c369daea074cc109">00026</a> <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_DATA "/usr/local/share/GeographicLib"</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#  endif</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#if !defined(GEOID_DEFAULT_NAME)</span>
-<a name="l00031"></a><a class="code" href="Geoid_8cpp.html#a2999d90c0556a04490ea239ddcb052b8">00031</a> <span class="preprocessor"></span><span class="preprocessor">#  define GEOID_DEFAULT_NAME "egm96-5"</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="comment">// Squelch warnings about unsafe use of getenv</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#pragma warning (disable: 4996)</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span>
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>GeographicLib {
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041   <span class="keyword">using namespace </span>std;
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043   <span class="comment">// This is the transfer matrix for a 3rd order fit with a 12-point stencil</span>
-<a name="l00044"></a>00044   <span class="comment">// with weights</span>
-<a name="l00045"></a>00045   <span class="comment">//</span>
-<a name="l00046"></a>00046   <span class="comment">//   \x -1  0  1  2</span>
-<a name="l00047"></a>00047   <span class="comment">//   y</span>
-<a name="l00048"></a>00048   <span class="comment">//  -1   .  1  1  .</span>
-<a name="l00049"></a>00049   <span class="comment">//   0   1  2  2  1</span>
-<a name="l00050"></a>00050   <span class="comment">//   1   1  2  2  1</span>
-<a name="l00051"></a>00051   <span class="comment">//   2   .  1  1  .</span>
-<a name="l00052"></a>00052   <span class="comment">//</span>
-<a name="l00053"></a>00053   <span class="comment">// A algorithm for n-dimensional polynomial fits is described in</span>
-<a name="l00054"></a>00054   <span class="comment">//   F. H. Lesh,</span>
-<a name="l00055"></a>00055   <span class="comment">//   Multi-dimensional least-squares polynomial curve fitting,</span>
-<a name="l00056"></a>00056   <span class="comment">//   CACM 2, 29-30 (1959).</span>
-<a name="l00057"></a>00057   <span class="comment">//</span>
-<a name="l00058"></a>00058   <span class="comment">// Here's the Maxima code to generate this matrix:</span>
-<a name="l00059"></a>00059   <span class="comment">//</span>
-<a name="l00060"></a>00060   <span class="comment">// /* The stencil and the weights */</span>
-<a name="l00061"></a>00061   <span class="comment">// xarr:[</span>
-<a name="l00062"></a>00062   <span class="comment">//     0, 1,</span>
-<a name="l00063"></a>00063   <span class="comment">// -1, 0, 1, 2,</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
+<a name="l00015"></a>00015 
+<a name="l00016"></a><a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">00016</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOID_CPP \</span>
+<a name="l00017"></a>00017 <span class="preprocessor">  "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a>)
+<a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a>)
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_DATA)</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#  if defined(_MSC_VER)</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_DATA \</span>
+<a name="l00025"></a>00025 <span class="preprocessor">  "C:/Documents and Settings/All Users/Application Data/GeographicLib"</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#  else</span>
+<a name="l00027"></a><a class="code" href="Geoid_8cpp.html#a45687ef771d809c1c369daea074cc109">00027</a> <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_DATA "/usr/local/share/GeographicLib"</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#  endif</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#if !defined(GEOID_DEFAULT_NAME)</span>
+<a name="l00032"></a><a class="code" href="Geoid_8cpp.html#a2999d90c0556a04490ea239ddcb052b8">00032</a> <span class="preprocessor"></span><span class="preprocessor">#  define GEOID_DEFAULT_NAME "egm96-5"</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="comment">// Squelch warnings about unsafe use of getenv</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#pragma warning (disable: 4996)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span>
+<a name="l00040"></a>00040 <span class="keyword">namespace </span>GeographicLib {
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042   <span class="keyword">using namespace </span>std;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044   <span class="comment">// This is the transfer matrix for a 3rd order fit with a 12-point stencil</span>
+<a name="l00045"></a>00045   <span class="comment">// with weights</span>
+<a name="l00046"></a>00046   <span class="comment">//</span>
+<a name="l00047"></a>00047   <span class="comment">//   \x -1  0  1  2</span>
+<a name="l00048"></a>00048   <span class="comment">//   y</span>
+<a name="l00049"></a>00049   <span class="comment">//  -1   .  1  1  .</span>
+<a name="l00050"></a>00050   <span class="comment">//   0   1  2  2  1</span>
+<a name="l00051"></a>00051   <span class="comment">//   1   1  2  2  1</span>
+<a name="l00052"></a>00052   <span class="comment">//   2   .  1  1  .</span>
+<a name="l00053"></a>00053   <span class="comment">//</span>
+<a name="l00054"></a>00054   <span class="comment">// A algorithm for n-dimensional polynomial fits is described in</span>
+<a name="l00055"></a>00055   <span class="comment">//   F. H. Lesh,</span>
+<a name="l00056"></a>00056   <span class="comment">//   Multi-dimensional least-squares polynomial curve fitting,</span>
+<a name="l00057"></a>00057   <span class="comment">//   CACM 2, 29-30 (1959).</span>
+<a name="l00058"></a>00058   <span class="comment">//</span>
+<a name="l00059"></a>00059   <span class="comment">// Here's the Maxima code to generate this matrix:</span>
+<a name="l00060"></a>00060   <span class="comment">//</span>
+<a name="l00061"></a>00061   <span class="comment">// /* The stencil and the weights */</span>
+<a name="l00062"></a>00062   <span class="comment">// xarr:[</span>
+<a name="l00063"></a>00063   <span class="comment">//     0, 1,</span>
 <a name="l00064"></a>00064   <span class="comment">// -1, 0, 1, 2,</span>
-<a name="l00065"></a>00065   <span class="comment">//     0, 1]$</span>
-<a name="l00066"></a>00066   <span class="comment">// yarr:[</span>
-<a name="l00067"></a>00067   <span class="comment">//   -1,-1,</span>
-<a name="l00068"></a>00068   <span class="comment">// 0, 0, 0, 0,</span>
-<a name="l00069"></a>00069   <span class="comment">// 1, 1, 1, 1,</span>
-<a name="l00070"></a>00070   <span class="comment">//    2, 2]$</span>
-<a name="l00071"></a>00071   <span class="comment">// warr:[</span>
-<a name="l00072"></a>00072   <span class="comment">//    1, 1,</span>
-<a name="l00073"></a>00073   <span class="comment">// 1, 2, 2, 1,</span>
+<a name="l00065"></a>00065   <span class="comment">// -1, 0, 1, 2,</span>
+<a name="l00066"></a>00066   <span class="comment">//     0, 1]$</span>
+<a name="l00067"></a>00067   <span class="comment">// yarr:[</span>
+<a name="l00068"></a>00068   <span class="comment">//   -1,-1,</span>
+<a name="l00069"></a>00069   <span class="comment">// 0, 0, 0, 0,</span>
+<a name="l00070"></a>00070   <span class="comment">// 1, 1, 1, 1,</span>
+<a name="l00071"></a>00071   <span class="comment">//    2, 2]$</span>
+<a name="l00072"></a>00072   <span class="comment">// warr:[</span>
+<a name="l00073"></a>00073   <span class="comment">//    1, 1,</span>
 <a name="l00074"></a>00074   <span class="comment">// 1, 2, 2, 1,</span>
-<a name="l00075"></a>00075   <span class="comment">//    1, 1]$</span>
-<a name="l00076"></a>00076   <span class="comment">//</span>
-<a name="l00077"></a>00077   <span class="comment">// /* [x exponent, y exponent] for cubic fit */</span>
-<a name="l00078"></a>00078   <span class="comment">// pows:[</span>
-<a name="l00079"></a>00079   <span class="comment">// [0,0],</span>
-<a name="l00080"></a>00080   <span class="comment">// [1,0],[0,1],</span>
-<a name="l00081"></a>00081   <span class="comment">// [2,0],[1,1],[0,2],</span>
-<a name="l00082"></a>00082   <span class="comment">// [3,0],[2,1],[1,2],[0,3]]$</span>
-<a name="l00083"></a>00083   <span class="comment">//</span>
-<a name="l00084"></a>00084   <span class="comment">// basisvec(x,y,pows):=map(lambda([ex],(if ex[1]=0 then 1 else x^ex[1])*</span>
-<a name="l00085"></a>00085   <span class="comment">//     (if ex[2]=0 then 1 else y^ex[2])),pows)$</span>
-<a name="l00086"></a>00086   <span class="comment">// addterm(x,y,f,w,pows):=block([a,b,bb:basisvec(x,y,pows)],</span>
-<a name="l00087"></a>00087   <span class="comment">//   a:w*(transpose(bb).bb),</span>
-<a name="l00088"></a>00088   <span class="comment">//   b:(w*f) * bb,</span>
-<a name="l00089"></a>00089   <span class="comment">//   [a,b])$</span>
-<a name="l00090"></a>00090   <span class="comment">//</span>
-<a name="l00091"></a>00091   <span class="comment">// c3row(k):=block([a,b,c,pows:pows,n],</span>
-<a name="l00092"></a>00092   <span class="comment">//   n:length(pows),</span>
-<a name="l00093"></a>00093   <span class="comment">//   a:zeromatrix(n,n),</span>
-<a name="l00094"></a>00094   <span class="comment">//   b:copylist(part(a,1)),</span>
-<a name="l00095"></a>00095   <span class="comment">//   c:[a,b],</span>
-<a name="l00096"></a>00096   <span class="comment">//   for i:1 thru length(xarr) do</span>
-<a name="l00097"></a>00097   <span class="comment">//   c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],pows),</span>
-<a name="l00098"></a>00098   <span class="comment">//   a:c[1],b:c[2],</span>
-<a name="l00099"></a>00099   <span class="comment">//   part(transpose( a^^-1 . transpose(b)),1))$</span>
-<a name="l00100"></a>00100   <span class="comment">// c3:[]$</span>
-<a name="l00101"></a>00101   <span class="comment">// for k:1 thru length(warr) do c3:endcons(c3row(k),c3)$</span>
-<a name="l00102"></a>00102   <span class="comment">// c3:apply(matrix,c3)$</span>
-<a name="l00103"></a>00103   <span class="comment">// c0:part(ratsimp(</span>
-<a name="l00104"></a>00104   <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3).genmatrix(yd,length(pows),1)),2)$</span>
-<a name="l00105"></a>00105   <span class="comment">// c3:c0*c3$</span>
-<a name="l00106"></a>00106 
-<a name="l00107"></a>00107   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c0_ = 240; <span class="comment">// Common denominator</span>
-<a name="l00108"></a>00108   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c3_[stencilsize_ * nterms_] = {
-<a name="l00109"></a>00109       9, -18, -88,    0,  96,   90,   0,   0, -60, -20,
-<a name="l00110"></a>00110      -9,  18,   8,    0, -96,   30,   0,   0,  60, -20,
-<a name="l00111"></a>00111       9, -88, -18,   90,  96,    0, -20, -60,   0,   0,
-<a name="l00112"></a>00112     186, -42, -42, -150, -96, -150,  60,  60,  60,  60,
-<a name="l00113"></a>00113      54, 162, -78,   30, -24,  -90, -60,  60, -60,  60,
-<a name="l00114"></a>00114      -9, -32,  18,   30,  24,    0,  20, -60,   0,   0,
-<a name="l00115"></a>00115      -9,   8,  18,   30, -96,    0, -20,  60,   0,   0,
-<a name="l00116"></a>00116      54, -78, 162,  -90, -24,   30,  60, -60,  60, -60,
-<a name="l00117"></a>00117     -54,  78,  78,   90, 144,   90, -60, -60, -60, -60,
-<a name="l00118"></a>00118       9,  -8, -18,  -30, -24,    0,  20,  60,   0,   0,
-<a name="l00119"></a>00119      -9,  18, -32,    0,  24,   30,   0,   0, -60,  20,
-<a name="l00120"></a>00120       9, -18,  -8,    0, -24,  -30,   0,   0,  60,  20,
-<a name="l00121"></a>00121   };
-<a name="l00122"></a>00122 
-<a name="l00123"></a>00123   <span class="comment">// Like c3, but with the coeffs of x, x^2, and x^3 constrained to be zero.</span>
-<a name="l00124"></a>00124   <span class="comment">// Use this at the N pole so that the height in independent of the longitude</span>
-<a name="l00125"></a>00125   <span class="comment">// there.</span>
-<a name="l00126"></a>00126   <span class="comment">//</span>
-<a name="l00127"></a>00127   <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
-<a name="l00128"></a>00128   <span class="comment">//</span>
-<a name="l00129"></a>00129   <span class="comment">// /* figure which terms to exclude so that fit is indep of x at y=0 */</span>
-<a name="l00130"></a>00130   <span class="comment">// mask:part(zeromatrix(1,length(pows)),1)+1$</span>
-<a name="l00131"></a>00131   <span class="comment">// for i:1 thru length(pows) do</span>
-<a name="l00132"></a>00132   <span class="comment">// if pows[i][1]>0 and pows[i][2]=0 then mask[i]:0$</span>
-<a name="l00133"></a>00133   <span class="comment">//</span>
-<a name="l00134"></a>00134   <span class="comment">// /* Same as c3row but with masked pows. */</span>
-<a name="l00135"></a>00135   <span class="comment">// c3nrow(k):=block([a,b,c,powsa:[],n,d,e],</span>
-<a name="l00136"></a>00136   <span class="comment">//   for i:1 thru length(mask) do if mask[i]>0 then</span>
-<a name="l00137"></a>00137   <span class="comment">//   powsa:endcons(pows[i],powsa),</span>
-<a name="l00138"></a>00138   <span class="comment">//   n:length(powsa),</span>
-<a name="l00139"></a>00139   <span class="comment">//   a:zeromatrix(n,n),</span>
-<a name="l00140"></a>00140   <span class="comment">//   b:copylist(part(a,1)),</span>
-<a name="l00141"></a>00141   <span class="comment">//   c:[a,b],</span>
-<a name="l00142"></a>00142   <span class="comment">//   for i:1 thru length(xarr) do</span>
-<a name="l00143"></a>00143   <span class="comment">//   c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],powsa),</span>
-<a name="l00144"></a>00144   <span class="comment">//   a:c[1],b:c[2],</span>
-<a name="l00145"></a>00145   <span class="comment">//   d:part(transpose( a^^-1 . transpose(b)),1),</span>
-<a name="l00146"></a>00146   <span class="comment">//   e:[],</span>
-<a name="l00147"></a>00147   <span class="comment">//   for i:1 thru length(mask) do</span>
-<a name="l00148"></a>00148   <span class="comment">//   if mask[i]>0 then (e:endcons(first(d),e),d:rest(d)) else e:endcons(0,e),</span>
-<a name="l00149"></a>00149   <span class="comment">//   e)$</span>
-<a name="l00150"></a>00150   <span class="comment">// c3n:[]$</span>
-<a name="l00151"></a>00151   <span class="comment">// for k:1 thru length(warr) do c3n:endcons(c3nrow(k),c3n)$</span>
-<a name="l00152"></a>00152   <span class="comment">// c3n:apply(matrix,c3n)$</span>
-<a name="l00153"></a>00153   <span class="comment">// c0n:part(ratsimp(</span>
-<a name="l00154"></a>00154   <span class="comment">//     genmatrix(yc,1,length(warr)).abs(c3n).genmatrix(yd,length(pows),1)),2)$</span>
-<a name="l00155"></a>00155   <span class="comment">// c3n:c0n*c3n$</span>
-<a name="l00156"></a>00156 
-<a name="l00157"></a>00157   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c0n_ = 372; <span class="comment">// Common denominator</span>
-<a name="l00158"></a>00158   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c3n_[stencilsize_ * nterms_] = {
-<a name="l00159"></a>00159       0, 0, -131, 0,  138,  144, 0,   0, -102, -31,
-<a name="l00160"></a>00160       0, 0,    7, 0, -138,   42, 0,   0,  102, -31,
-<a name="l00161"></a>00161      62, 0,  -31, 0,    0,  -62, 0,   0,    0,  31,
-<a name="l00162"></a>00162     124, 0,  -62, 0,    0, -124, 0,   0,    0,  62,
+<a name="l00075"></a>00075   <span class="comment">// 1, 2, 2, 1,</span>
+<a name="l00076"></a>00076   <span class="comment">//    1, 1]$</span>
+<a name="l00077"></a>00077   <span class="comment">//</span>
+<a name="l00078"></a>00078   <span class="comment">// /* [x exponent, y exponent] for cubic fit */</span>
+<a name="l00079"></a>00079   <span class="comment">// pows:[</span>
+<a name="l00080"></a>00080   <span class="comment">// [0,0],</span>
+<a name="l00081"></a>00081   <span class="comment">// [1,0],[0,1],</span>
+<a name="l00082"></a>00082   <span class="comment">// [2,0],[1,1],[0,2],</span>
+<a name="l00083"></a>00083   <span class="comment">// [3,0],[2,1],[1,2],[0,3]]$</span>
+<a name="l00084"></a>00084   <span class="comment">//</span>
+<a name="l00085"></a>00085   <span class="comment">// basisvec(x,y,pows):=map(lambda([ex],(if ex[1]=0 then 1 else x^ex[1])*</span>
+<a name="l00086"></a>00086   <span class="comment">//     (if ex[2]=0 then 1 else y^ex[2])),pows)$</span>
+<a name="l00087"></a>00087   <span class="comment">// addterm(x,y,f,w,pows):=block([a,b,bb:basisvec(x,y,pows)],</span>
+<a name="l00088"></a>00088   <span class="comment">//   a:w*(transpose(bb).bb),</span>
+<a name="l00089"></a>00089   <span class="comment">//   b:(w*f) * bb,</span>
+<a name="l00090"></a>00090   <span class="comment">//   [a,b])$</span>
+<a name="l00091"></a>00091   <span class="comment">//</span>
+<a name="l00092"></a>00092   <span class="comment">// c3row(k):=block([a,b,c,pows:pows,n],</span>
+<a name="l00093"></a>00093   <span class="comment">//   n:length(pows),</span>
+<a name="l00094"></a>00094   <span class="comment">//   a:zeromatrix(n,n),</span>
+<a name="l00095"></a>00095   <span class="comment">//   b:copylist(part(a,1)),</span>
+<a name="l00096"></a>00096   <span class="comment">//   c:[a,b],</span>
+<a name="l00097"></a>00097   <span class="comment">//   for i:1 thru length(xarr) do</span>
+<a name="l00098"></a>00098   <span class="comment">//   c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],pows),</span>
+<a name="l00099"></a>00099   <span class="comment">//   a:c[1],b:c[2],</span>
+<a name="l00100"></a>00100   <span class="comment">//   part(transpose( a^^-1 . transpose(b)),1))$</span>
+<a name="l00101"></a>00101   <span class="comment">// c3:[]$</span>
+<a name="l00102"></a>00102   <span class="comment">// for k:1 thru length(warr) do c3:endcons(c3row(k),c3)$</span>
+<a name="l00103"></a>00103   <span class="comment">// c3:apply(matrix,c3)$</span>
+<a name="l00104"></a>00104   <span class="comment">// c0:part(ratsimp(</span>
+<a name="l00105"></a>00105   <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3).genmatrix(yd,length(pows),1)),2)$</span>
+<a name="l00106"></a>00106   <span class="comment">// c3:c0*c3$</span>
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c0_ = 240; <span class="comment">// Common denominator</span>
+<a name="l00109"></a>00109   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c3_[stencilsize_ * nterms_] = {
+<a name="l00110"></a>00110       9, -18, -88,    0,  96,   90,   0,   0, -60, -20,
+<a name="l00111"></a>00111      -9,  18,   8,    0, -96,   30,   0,   0,  60, -20,
+<a name="l00112"></a>00112       9, -88, -18,   90,  96,    0, -20, -60,   0,   0,
+<a name="l00113"></a>00113     186, -42, -42, -150, -96, -150,  60,  60,  60,  60,
+<a name="l00114"></a>00114      54, 162, -78,   30, -24,  -90, -60,  60, -60,  60,
+<a name="l00115"></a>00115      -9, -32,  18,   30,  24,    0,  20, -60,   0,   0,
+<a name="l00116"></a>00116      -9,   8,  18,   30, -96,    0, -20,  60,   0,   0,
+<a name="l00117"></a>00117      54, -78, 162,  -90, -24,   30,  60, -60,  60, -60,
+<a name="l00118"></a>00118     -54,  78,  78,   90, 144,   90, -60, -60, -60, -60,
+<a name="l00119"></a>00119       9,  -8, -18,  -30, -24,    0,  20,  60,   0,   0,
+<a name="l00120"></a>00120      -9,  18, -32,    0,  24,   30,   0,   0, -60,  20,
+<a name="l00121"></a>00121       9, -18,  -8,    0, -24,  -30,   0,   0,  60,  20,
+<a name="l00122"></a>00122   };
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124   <span class="comment">// Like c3, but with the coeffs of x, x^2, and x^3 constrained to be zero.</span>
+<a name="l00125"></a>00125   <span class="comment">// Use this at the N pole so that the height in independent of the longitude</span>
+<a name="l00126"></a>00126   <span class="comment">// there.</span>
+<a name="l00127"></a>00127   <span class="comment">//</span>
+<a name="l00128"></a>00128   <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
+<a name="l00129"></a>00129   <span class="comment">//</span>
+<a name="l00130"></a>00130   <span class="comment">// /* figure which terms to exclude so that fit is indep of x at y=0 */</span>
+<a name="l00131"></a>00131   <span class="comment">// mask:part(zeromatrix(1,length(pows)),1)+1$</span>
+<a name="l00132"></a>00132   <span class="comment">// for i:1 thru length(pows) do</span>
+<a name="l00133"></a>00133   <span class="comment">// if pows[i][1]>0 and pows[i][2]=0 then mask[i]:0$</span>
+<a name="l00134"></a>00134   <span class="comment">//</span>
+<a name="l00135"></a>00135   <span class="comment">// /* Same as c3row but with masked pows. */</span>
+<a name="l00136"></a>00136   <span class="comment">// c3nrow(k):=block([a,b,c,powsa:[],n,d,e],</span>
+<a name="l00137"></a>00137   <span class="comment">//   for i:1 thru length(mask) do if mask[i]>0 then</span>
+<a name="l00138"></a>00138   <span class="comment">//   powsa:endcons(pows[i],powsa),</span>
+<a name="l00139"></a>00139   <span class="comment">//   n:length(powsa),</span>
+<a name="l00140"></a>00140   <span class="comment">//   a:zeromatrix(n,n),</span>
+<a name="l00141"></a>00141   <span class="comment">//   b:copylist(part(a,1)),</span>
+<a name="l00142"></a>00142   <span class="comment">//   c:[a,b],</span>
+<a name="l00143"></a>00143   <span class="comment">//   for i:1 thru length(xarr) do</span>
+<a name="l00144"></a>00144   <span class="comment">//   c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],powsa),</span>
+<a name="l00145"></a>00145   <span class="comment">//   a:c[1],b:c[2],</span>
+<a name="l00146"></a>00146   <span class="comment">//   d:part(transpose( a^^-1 . transpose(b)),1),</span>
+<a name="l00147"></a>00147   <span class="comment">//   e:[],</span>
+<a name="l00148"></a>00148   <span class="comment">//   for i:1 thru length(mask) do</span>
+<a name="l00149"></a>00149   <span class="comment">//   if mask[i]>0 then (e:endcons(first(d),e),d:rest(d)) else e:endcons(0,e),</span>
+<a name="l00150"></a>00150   <span class="comment">//   e)$</span>
+<a name="l00151"></a>00151   <span class="comment">// c3n:[]$</span>
+<a name="l00152"></a>00152   <span class="comment">// for k:1 thru length(warr) do c3n:endcons(c3nrow(k),c3n)$</span>
+<a name="l00153"></a>00153   <span class="comment">// c3n:apply(matrix,c3n)$</span>
+<a name="l00154"></a>00154   <span class="comment">// c0n:part(ratsimp(</span>
+<a name="l00155"></a>00155   <span class="comment">//     genmatrix(yc,1,length(warr)).abs(c3n).genmatrix(yd,length(pows),1)),2)$</span>
+<a name="l00156"></a>00156   <span class="comment">// c3n:c0n*c3n$</span>
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c0n_ = 372; <span class="comment">// Common denominator</span>
+<a name="l00159"></a>00159   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c3n_[stencilsize_ * nterms_] = {
+<a name="l00160"></a>00160       0, 0, -131, 0,  138,  144, 0,   0, -102, -31,
+<a name="l00161"></a>00161       0, 0,    7, 0, -138,   42, 0,   0,  102, -31,
+<a name="l00162"></a>00162      62, 0,  -31, 0,    0,  -62, 0,   0,    0,  31,
 <a name="l00163"></a>00163     124, 0,  -62, 0,    0, -124, 0,   0,    0,  62,
-<a name="l00164"></a>00164      62, 0,  -31, 0,    0,  -62, 0,   0,    0,  31,
-<a name="l00165"></a>00165       0, 0,   45, 0, -183,   -9, 0,  93,   18,   0,
-<a name="l00166"></a>00166       0, 0,  216, 0,   33,   87, 0, -93,   12, -93,
-<a name="l00167"></a>00167       0, 0,  156, 0,  153,   99, 0, -93,  -12, -93,
-<a name="l00168"></a>00168       0, 0,  -45, 0,   -3,    9, 0,  93,  -18,   0,
-<a name="l00169"></a>00169       0, 0,  -55, 0,   48,   42, 0,   0,  -84,  31,
-<a name="l00170"></a>00170       0, 0,   -7, 0,  -48,  -42, 0,   0,   84,  31,
-<a name="l00171"></a>00171   };
-<a name="l00172"></a>00172 
-<a name="l00173"></a>00173   <span class="comment">// Like c3n, but y -> 1-y so that h is independent of x at y = 1.  Use this</span>
-<a name="l00174"></a>00174   <span class="comment">// at the S pole so that the height in independent of the longitude there.</span>
-<a name="l00175"></a>00175   <span class="comment">//</span>
-<a name="l00176"></a>00176   <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
-<a name="l00177"></a>00177   <span class="comment">//</span>
-<a name="l00178"></a>00178   <span class="comment">// /* Transform c3n to c3s by transforming y -> 1-y */</span>
-<a name="l00179"></a>00179   <span class="comment">// vv:[</span>
-<a name="l00180"></a>00180   <span class="comment">//      v[11],v[12],</span>
-<a name="l00181"></a>00181   <span class="comment">// v[7],v[8],v[9],v[10],</span>
-<a name="l00182"></a>00182   <span class="comment">// v[3],v[4],v[5],v[6],</span>
-<a name="l00183"></a>00183   <span class="comment">//      v[1],v[2]]$</span>
-<a name="l00184"></a>00184   <span class="comment">// poly:expand(vv.(c3n/c0n).transpose(basisvec(x,1-y,pows)))$</span>
-<a name="l00185"></a>00185   <span class="comment">// c3sf[i,j]:=coeff(coeff(coeff(poly,v[i]),x,pows[j][1]),y,pows[j][2])$</span>
-<a name="l00186"></a>00186   <span class="comment">// c3s:genmatrix(c3sf,length(vv),length(pows))$</span>
-<a name="l00187"></a>00187   <span class="comment">// c0s:part(ratsimp(</span>
-<a name="l00188"></a>00188   <span class="comment">//     genmatrix(yc,1,length(warr)).abs(c3s).genmatrix(yd,length(pows),1)),2)$</span>
-<a name="l00189"></a>00189   <span class="comment">// c3s:c0s*c3s$</span>
-<a name="l00190"></a>00190 
-<a name="l00191"></a>00191   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c0s_ = 372; <span class="comment">// Common denominator</span>
-<a name="l00192"></a>00192   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c3s_[stencilsize_ * nterms_] = {
-<a name="l00193"></a>00193      18,  -36, -122,   0,  120,  135, 0,   0,  -84, -31,
-<a name="l00194"></a>00194     -18,   36,   -2,   0, -120,   51, 0,   0,   84, -31,
-<a name="l00195"></a>00195      36, -165,  -27,  93,  147,   -9, 0, -93,   18,   0,
-<a name="l00196"></a>00196     210,   45, -111, -93,  -57, -192, 0,  93,   12,  93,
-<a name="l00197"></a>00197     162,  141,  -75, -93, -129, -180, 0,  93,  -12,  93,
-<a name="l00198"></a>00198     -36,  -21,   27,  93,   39,    9, 0, -93,  -18,   0,
-<a name="l00199"></a>00199       0,    0,   62,   0,    0,   31, 0,   0,    0, -31,
-<a name="l00200"></a>00200       0,    0,  124,   0,    0,   62, 0,   0,    0, -62,
+<a name="l00164"></a>00164     124, 0,  -62, 0,    0, -124, 0,   0,    0,  62,
+<a name="l00165"></a>00165      62, 0,  -31, 0,    0,  -62, 0,   0,    0,  31,
+<a name="l00166"></a>00166       0, 0,   45, 0, -183,   -9, 0,  93,   18,   0,
+<a name="l00167"></a>00167       0, 0,  216, 0,   33,   87, 0, -93,   12, -93,
+<a name="l00168"></a>00168       0, 0,  156, 0,  153,   99, 0, -93,  -12, -93,
+<a name="l00169"></a>00169       0, 0,  -45, 0,   -3,    9, 0,  93,  -18,   0,
+<a name="l00170"></a>00170       0, 0,  -55, 0,   48,   42, 0,   0,  -84,  31,
+<a name="l00171"></a>00171       0, 0,   -7, 0,  -48,  -42, 0,   0,   84,  31,
+<a name="l00172"></a>00172   };
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174   <span class="comment">// Like c3n, but y -> 1-y so that h is independent of x at y = 1.  Use this</span>
+<a name="l00175"></a>00175   <span class="comment">// at the S pole so that the height in independent of the longitude there.</span>
+<a name="l00176"></a>00176   <span class="comment">//</span>
+<a name="l00177"></a>00177   <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
+<a name="l00178"></a>00178   <span class="comment">//</span>
+<a name="l00179"></a>00179   <span class="comment">// /* Transform c3n to c3s by transforming y -> 1-y */</span>
+<a name="l00180"></a>00180   <span class="comment">// vv:[</span>
+<a name="l00181"></a>00181   <span class="comment">//      v[11],v[12],</span>
+<a name="l00182"></a>00182   <span class="comment">// v[7],v[8],v[9],v[10],</span>
+<a name="l00183"></a>00183   <span class="comment">// v[3],v[4],v[5],v[6],</span>
+<a name="l00184"></a>00184   <span class="comment">//      v[1],v[2]]$</span>
+<a name="l00185"></a>00185   <span class="comment">// poly:expand(vv.(c3n/c0n).transpose(basisvec(x,1-y,pows)))$</span>
+<a name="l00186"></a>00186   <span class="comment">// c3sf[i,j]:=coeff(coeff(coeff(poly,v[i]),x,pows[j][1]),y,pows[j][2])$</span>
+<a name="l00187"></a>00187   <span class="comment">// c3s:genmatrix(c3sf,length(vv),length(pows))$</span>
+<a name="l00188"></a>00188   <span class="comment">// c0s:part(ratsimp(</span>
+<a name="l00189"></a>00189   <span class="comment">//     genmatrix(yc,1,length(warr)).abs(c3s).genmatrix(yd,length(pows),1)),2)$</span>
+<a name="l00190"></a>00190   <span class="comment">// c3s:c0s*c3s$</span>
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c0s_ = 372; <span class="comment">// Common denominator</span>
+<a name="l00193"></a>00193   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c3s_[stencilsize_ * nterms_] = {
+<a name="l00194"></a>00194      18,  -36, -122,   0,  120,  135, 0,   0,  -84, -31,
+<a name="l00195"></a>00195     -18,   36,   -2,   0, -120,   51, 0,   0,   84, -31,
+<a name="l00196"></a>00196      36, -165,  -27,  93,  147,   -9, 0, -93,   18,   0,
+<a name="l00197"></a>00197     210,   45, -111, -93,  -57, -192, 0,  93,   12,  93,
+<a name="l00198"></a>00198     162,  141,  -75, -93, -129, -180, 0,  93,  -12,  93,
+<a name="l00199"></a>00199     -36,  -21,   27,  93,   39,    9, 0, -93,  -18,   0,
+<a name="l00200"></a>00200       0,    0,   62,   0,    0,   31, 0,   0,    0, -31,
 <a name="l00201"></a>00201       0,    0,  124,   0,    0,   62, 0,   0,    0, -62,
-<a name="l00202"></a>00202       0,    0,   62,   0,    0,   31, 0,   0,    0, -31,
-<a name="l00203"></a>00203     -18,   36,  -64,   0,   66,   51, 0,   0, -102,  31,
-<a name="l00204"></a>00204      18,  -36,    2,   0,  -66,  -51, 0,   0,  102,  31,
-<a name="l00205"></a>00205   };
-<a name="l00206"></a>00206 
-<a name="l00207"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac3556c755dad0d43c3be0913df08b395">00207</a>   Geoid::Geoid(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path, <span class="keywordtype">bool</span> cubic,
-<a name="l00208"></a>00208                <span class="keywordtype">bool</span> threadsafe)
-<a name="l00209"></a>00209     : _name(name)
-<a name="l00210"></a>00210     , _dir(path)
-<a name="l00211"></a>00211     , _cubic(cubic)
-<a name="l00212"></a>00212     , _a( <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>() )
-<a name="l00213"></a>00213     , _e2( (2 - <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>()) * <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>() )
-<a name="l00214"></a>00214     , _degree( <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() )
-<a name="l00215"></a>00215     , _eps( sqrt(numeric_limits<real>::epsilon()) )
-<a name="l00216"></a>00216     , _threadsafe(false)        <span class="comment">// Set after cache is read</span>
-<a name="l00217"></a>00217   {
-<a name="l00218"></a>00218     <span class="keywordflow">if</span> (_dir.empty())
-<a name="l00219"></a>00219       _dir = <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath</a>();
-<a name="l00220"></a>00220     _filename = _dir + <span class="stringliteral">"/"</span> + _name + <span class="stringliteral">".pgm"</span>;
-<a name="l00221"></a>00221     _file.open(_filename.c_str(), ios::binary);
-<a name="l00222"></a>00222     <span class="keywordflow">if</span> (!(_file.good()))
-<a name="l00223"></a>00223       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not readable "</span> + _filename);
-<a name="l00224"></a>00224     <span class="keywordtype">string</span> s;
-<a name="l00225"></a>00225     <span class="keywordflow">if</span> (!(getline(_file, s) && s == <span class="stringliteral">"P5"</span>))
-<a name="l00226"></a>00226       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not in PGM format "</span> + _filename);
-<a name="l00227"></a>00227     _offset = numeric_limits<real>::max();
-<a name="l00228"></a>00228     _scale = 0;
-<a name="l00229"></a>00229     _maxerror = _rmserror = -1;
-<a name="l00230"></a>00230     _description = <span class="stringliteral">"NONE"</span>;
-<a name="l00231"></a>00231     _datetime = <span class="stringliteral">"UNKNOWN"</span>;
-<a name="l00232"></a>00232     <span class="keywordflow">while</span> (getline(_file, s)) {
-<a name="l00233"></a>00233       <span class="keywordflow">if</span> (s.empty())
-<a name="l00234"></a>00234         <span class="keywordflow">continue</span>;
-<a name="l00235"></a>00235       <span class="keywordflow">if</span> (s[0] == <span class="charliteral">'#'</span>) {
-<a name="l00236"></a>00236         istringstream is(s);
-<a name="l00237"></a>00237         <span class="keywordtype">string</span> commentid, key;
-<a name="l00238"></a>00238         <span class="keywordflow">if</span> (!(is >> commentid >> key) || commentid != <span class="stringliteral">"#"</span>)
-<a name="l00239"></a>00239           <span class="keywordflow">continue</span>;
-<a name="l00240"></a>00240         <span class="keywordflow">if</span> (key == <span class="stringliteral">"Description"</span> || key ==<span class="stringliteral">"DateTime"</span>) {
-<a name="l00241"></a>00241           string::size_type p =
-<a name="l00242"></a>00242             s.find_first_not_of(<span class="stringliteral">" \t"</span>, <span class="keywordtype">unsigned</span>(is.tellg()));
-<a name="l00243"></a>00243           <span class="keywordflow">if</span> (p != string::npos)
-<a name="l00244"></a>00244             (key == <span class="stringliteral">"Description"</span> ? _description : _datetime) = s.substr(p);
-<a name="l00245"></a>00245         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Offset"</span>) {
-<a name="l00246"></a>00246           <span class="keywordflow">if</span> (!(is >> _offset))
-<a name="l00247"></a>00247             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading offset "</span> + _filename);
-<a name="l00248"></a>00248         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Scale"</span>) {
-<a name="l00249"></a>00249           <span class="keywordflow">if</span> (!(is >> _scale))
-<a name="l00250"></a>00250             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading scale "</span> + _filename);
-<a name="l00251"></a>00251         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"MaxCubicError"</span> : <span class="stringliteral">"MaxBilinearError"</span>)) {
-<a name="l00252"></a>00252           <span class="comment">// It's not an error if the error can't be read</span>
-<a name="l00253"></a>00253           is >> _maxerror;
-<a name="l00254"></a>00254         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"RMSCubicError"</span> : <span class="stringliteral">"RMSBilinearError"</span>)) {
-<a name="l00255"></a>00255           <span class="comment">// It's not an error if the error can't be read</span>
-<a name="l00256"></a>00256           is >> _rmserror;
-<a name="l00257"></a>00257         }
-<a name="l00258"></a>00258       } <span class="keywordflow">else</span> {
-<a name="l00259"></a>00259         istringstream is(s);
-<a name="l00260"></a>00260         <span class="keywordflow">if</span> (!(is >> _width >> _height))
-<a name="l00261"></a>00261           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading raster size "</span> + _filename);
-<a name="l00262"></a>00262         <span class="keywordflow">break</span>;
-<a name="l00263"></a>00263       }
-<a name="l00264"></a>00264     }
-<a name="l00265"></a>00265     {
-<a name="l00266"></a>00266       <span class="keywordtype">unsigned</span> maxval;
-<a name="l00267"></a>00267       <span class="keywordflow">if</span> (!(_file >> maxval))
-<a name="l00268"></a>00268         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading maxval "</span> + _filename);
-<a name="l00269"></a>00269       <span class="keywordflow">if</span> (maxval != 0xffffu)
-<a name="l00270"></a>00270         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Maxval not equal to 2^16-1 "</span> + _filename);
-<a name="l00271"></a>00271       <span class="comment">// Add 1 for whitespace after maxval</span>
-<a name="l00272"></a>00272       _datastart = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()) + 1ULL;
-<a name="l00273"></a>00273       _swidth = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_width);
-<a name="l00274"></a>00274     }
-<a name="l00275"></a>00275     <span class="keywordflow">if</span> (_offset == numeric_limits<real>::max())
-<a name="l00276"></a>00276       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Offset not set "</span> + _filename);
-<a name="l00277"></a>00277     <span class="keywordflow">if</span> (_scale == 0)
-<a name="l00278"></a>00278       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale not set "</span> + _filename);
-<a name="l00279"></a>00279     <span class="keywordflow">if</span> (_scale < 0)
-<a name="l00280"></a>00280       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale must be positive "</span> + _filename);
-<a name="l00281"></a>00281     <span class="keywordflow">if</span> (_height < 2 || _width < 2)
-<a name="l00282"></a>00282       <span class="comment">// Coarsest grid spacing is 180deg.</span>
-<a name="l00283"></a>00283       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster size too small "</span> + _filename);
-<a name="l00284"></a>00284     <span class="keywordflow">if</span> (_width & 1)
-<a name="l00285"></a>00285       <span class="comment">// This is so that longitude grids can be extended thru the poles.</span>
-<a name="l00286"></a>00286       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster width is odd "</span> + _filename);
-<a name="l00287"></a>00287     <span class="keywordflow">if</span> (!(_height & 1))
-<a name="l00288"></a>00288       <span class="comment">// This is so that latitude grid includes the equator.</span>
-<a name="l00289"></a>00289       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster height is even "</span> + _filename);
-<a name="l00290"></a>00290     _file.seekg(0, ios::end);
-<a name="l00291"></a>00291     <span class="keywordflow">if</span> (!_file.good() ||
-<a name="l00292"></a>00292         _datastart + 2ULL * _swidth * (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_height) !=
-<a name="l00293"></a>00293         (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()))
-<a name="l00294"></a>00294       <span class="comment">// Possibly this test should be "<" because the file contains, e.g., a</span>
-<a name="l00295"></a>00295       <span class="comment">// second image.  However, for now we are more strict.</span>
-<a name="l00296"></a>00296       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File has the wrong length "</span> + _filename);
-<a name="l00297"></a>00297     _rlonres = _width / real(360);
-<a name="l00298"></a>00298     _rlatres = (_height - 1) / real(180);
-<a name="l00299"></a>00299     _cache = <span class="keyword">false</span>;
-<a name="l00300"></a>00300     _ix = _width;
-<a name="l00301"></a>00301     _iy = _height;
-<a name="l00302"></a>00302     <span class="comment">// Ensure that file errors throw exceptions</span>
-<a name="l00303"></a>00303     _file.exceptions(ifstream::eofbit | ifstream::failbit | ifstream::badbit);
-<a name="l00304"></a>00304     <span class="keywordflow">if</span> (threadsafe) {
-<a name="l00305"></a>00305       <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
-<a name="l00306"></a>00306       _file.close();
-<a name="l00307"></a>00307       _threadsafe = <span class="keyword">true</span>;
-<a name="l00308"></a>00308     }
-<a name="l00309"></a>00309   }
-<a name="l00310"></a>00310 
-<a name="l00311"></a>00311   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::height(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> gradp,
-<a name="l00312"></a>00312                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grade)<span class="keyword"> const </span>{
-<a name="l00313"></a>00313     <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(lat) || <a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(lon)) {
-<a name="l00314"></a>00314       <span class="keywordflow">if</span> (gradp) gradn = grade = Math::NaN<real>();
-<a name="l00315"></a>00315       <span class="keywordflow">return</span> Math::NaN<real>();
-<a name="l00316"></a>00316     }
-<a name="l00317"></a>00317     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00318"></a>00318       fx =  lon * _rlonres,
-<a name="l00319"></a>00319       fy = -lat * _rlatres;
-<a name="l00320"></a>00320     <span class="keywordtype">int</span>
-<a name="l00321"></a>00321       ix = int(floor(fx)),
-<a name="l00322"></a>00322       iy = min((_height - 1)/2 - 1, <span class="keywordtype">int</span>(floor(fy)));
-<a name="l00323"></a>00323     fx -= ix;
-<a name="l00324"></a>00324     fy -= iy;
-<a name="l00325"></a>00325     iy += (_height - 1)/2;
-<a name="l00326"></a>00326     ix += ix < 0 ? _width : (ix >= _width ? -_width : 0);
-<a name="l00327"></a>00327     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v00 = 0, v01 = 0, v10 = 0, v11 = 0;
-<a name="l00328"></a>00328     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t[nterms_];
-<a name="l00329"></a>00329 
-<a name="l00330"></a>00330     <span class="keywordflow">if</span> (_threadsafe || !(ix == _ix && iy == _iy)) {
-<a name="l00331"></a>00331       <span class="keywordflow">if</span> (!_cubic) {
-<a name="l00332"></a>00332         v00 = rawval(ix    , iy    );
-<a name="l00333"></a>00333         v01 = rawval(ix + 1, iy    );
-<a name="l00334"></a>00334         v10 = rawval(ix    , iy + 1);
-<a name="l00335"></a>00335         v11 = rawval(ix + 1, iy + 1);
-<a name="l00336"></a>00336       } <span class="keywordflow">else</span> {
-<a name="l00337"></a>00337         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v[stencilsize_];
-<a name="l00338"></a>00338         <span class="keywordtype">int</span> k = 0;
-<a name="l00339"></a>00339         v[k++] = rawval(ix    , iy - 1);
-<a name="l00340"></a>00340         v[k++] = rawval(ix + 1, iy - 1);
-<a name="l00341"></a>00341         v[k++] = rawval(ix - 1, iy    );
-<a name="l00342"></a>00342         v[k++] = rawval(ix    , iy    );
-<a name="l00343"></a>00343         v[k++] = rawval(ix + 1, iy    );
-<a name="l00344"></a>00344         v[k++] = rawval(ix + 2, iy    );
-<a name="l00345"></a>00345         v[k++] = rawval(ix - 1, iy + 1);
-<a name="l00346"></a>00346         v[k++] = rawval(ix    , iy + 1);
-<a name="l00347"></a>00347         v[k++] = rawval(ix + 1, iy + 1);
-<a name="l00348"></a>00348         v[k++] = rawval(ix + 2, iy + 1);
-<a name="l00349"></a>00349         v[k++] = rawval(ix    , iy + 2);
-<a name="l00350"></a>00350         v[k++] = rawval(ix + 1, iy + 2);
-<a name="l00351"></a>00351 
-<a name="l00352"></a>00352         <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>* c3x = iy == 0 ? c3n_ : (iy == _height - 2 ? c3s_ : c3_);
-<a name="l00353"></a>00353         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0x = iy == 0 ? c0n_ : (iy == _height - 2 ? c0s_ : c0_);
-<a name="l00354"></a>00354         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < nterms_; ++i) {
-<a name="l00355"></a>00355           t[i] = 0;
-<a name="l00356"></a>00356           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j < stencilsize_; ++j)
-<a name="l00357"></a>00357             t[i] += v[j] * c3x[nterms_ * j + i];
-<a name="l00358"></a>00358           t[i] /= c0x;
-<a name="l00359"></a>00359         }
-<a name="l00360"></a>00360       }
-<a name="l00361"></a>00361     } <span class="keywordflow">else</span> { <span class="comment">// same cell; used cached coefficients</span>
-<a name="l00362"></a>00362       <span class="keywordflow">if</span> (!_cubic) {
-<a name="l00363"></a>00363         v00 = _v00;
-<a name="l00364"></a>00364         v01 = _v01;
-<a name="l00365"></a>00365         v10 = _v10;
-<a name="l00366"></a>00366         v11 = _v11;
-<a name="l00367"></a>00367       } <span class="keywordflow">else</span>
-<a name="l00368"></a>00368         copy(_t, _t + nterms_, t);
-<a name="l00369"></a>00369     }
-<a name="l00370"></a>00370     <span class="keywordflow">if</span> (!_cubic) {
-<a name="l00371"></a>00371       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00372"></a>00372         a = (1 - fx) * v00 + fx * v01,
-<a name="l00373"></a>00373         b = (1 - fx) * v10 + fx * v11,
-<a name="l00374"></a>00374         c = (1 - fy) * a + fy * b,
-<a name="l00375"></a>00375         h = _offset + _scale * c;
-<a name="l00376"></a>00376       <span class="keywordflow">if</span> (gradp) {
-<a name="l00377"></a>00377         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00378"></a>00378           phi = lat * _degree,
-<a name="l00379"></a>00379           cosphi = cos(phi),
-<a name="l00380"></a>00380           sinphi = sin(phi),
-<a name="l00381"></a>00381           n = 1/sqrt(1 - _e2 * sinphi * sinphi);
-<a name="l00382"></a>00382         gradn = ((1 - fx) * (v00 - v10) + fx * (v01 - v11)) *
-<a name="l00383"></a>00383           _rlatres / (_degree * _a * (1 - _e2) * n * n * n);
-<a name="l00384"></a>00384         grade = (cosphi > _eps ?
-<a name="l00385"></a>00385                  ((1 - fy) * (v01 - v00) + fy * (v11 - v10)) /   cosphi :
-<a name="l00386"></a>00386                  (sinphi > 0 ? v11 - v10 : v01 - v00) *
-<a name="l00387"></a>00387                  _rlatres / _degree ) *
-<a name="l00388"></a>00388           _rlonres / (_degree * _a * n);
-<a name="l00389"></a>00389         gradn *= _scale;
-<a name="l00390"></a>00390         grade *= _scale;
-<a name="l00391"></a>00391       }
-<a name="l00392"></a>00392       <span class="keywordflow">if</span> (!_threadsafe) {
-<a name="l00393"></a>00393         _ix = ix;
-<a name="l00394"></a>00394         _iy = iy;
-<a name="l00395"></a>00395         _v00 = v00;
-<a name="l00396"></a>00396         _v01 = v01;
-<a name="l00397"></a>00397         _v10 = v10;
-<a name="l00398"></a>00398         _v11 = v11;
-<a name="l00399"></a>00399       }
-<a name="l00400"></a>00400       <span class="keywordflow">return</span> h;
-<a name="l00401"></a>00401     } <span class="keywordflow">else</span> {
-<a name="l00402"></a>00402       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = t[0] + fx * (t[1] + fx * (t[3] + fx * t[6])) +
-<a name="l00403"></a>00403         fy * (t[2] + fx * (t[4] + fx * t[7]) +
-<a name="l00404"></a>00404              fy * (t[5] + fx * t[8] + fy * t[9]));
-<a name="l00405"></a>00405       h = _offset + _scale * h;
-<a name="l00406"></a>00406       <span class="keywordflow">if</span> (gradp) {
-<a name="l00407"></a>00407         <span class="comment">// Avoid 0/0 at the poles by backing off 1/100 of a cell size</span>
-<a name="l00408"></a>00408         lat = min(lat,  90 - 1/(100 * _rlatres));
-<a name="l00409"></a>00409         lat = max(lat, -90 + 1/(100 * _rlatres));
-<a name="l00410"></a>00410         fy = (90 - lat) * _rlatres;
-<a name="l00411"></a>00411         fy -=  int(fy);
-<a name="l00412"></a>00412         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00413"></a>00413           phi = lat * _degree,
-<a name="l00414"></a>00414           cosphi = cos(phi),
-<a name="l00415"></a>00415           sinphi = sin(phi),
-<a name="l00416"></a>00416           n = 1/sqrt(1 - _e2 * sinphi * sinphi);
-<a name="l00417"></a>00417         gradn = t[2] + fx * (t[4] + fx * t[7]) +
-<a name="l00418"></a>00418           fy * (2 * t[5] + fx * 2 * t[8] + 3 * fy * t[9]);
-<a name="l00419"></a>00419         grade = t[1] + fx * (2 * t[3] + fx * 3 * t[6]) +
-<a name="l00420"></a>00420           fy * (t[4] + fx * 2 * t[7] + fy * t[8]);
-<a name="l00421"></a>00421         gradn *= - _rlatres / (_degree * _a * (1 - _e2) * n * n * n) * _scale;
-<a name="l00422"></a>00422         grade *= _rlonres / (_degree * _a * n * cosphi) * _scale;
-<a name="l00423"></a>00423       }
-<a name="l00424"></a>00424       <span class="keywordflow">if</span> (!_threadsafe) {
-<a name="l00425"></a>00425         _ix = ix;
-<a name="l00426"></a>00426         _iy = iy;
-<a name="l00427"></a>00427         copy(t, t + nterms_, _t);
-<a name="l00428"></a>00428       }
-<a name="l00429"></a>00429       <span class="keywordflow">return</span> h;
-<a name="l00430"></a>00430     }
-<a name="l00431"></a>00431   }
-<a name="l00432"></a>00432 
-<a name="l00433"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">00433</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">Geoid::CacheClear</a>() <span class="keyword">const</span> throw() {
-<a name="l00434"></a>00434     <span class="keywordflow">if</span> (!_threadsafe) {
-<a name="l00435"></a>00435       _cache = <span class="keyword">false</span>;
-<a name="l00436"></a>00436       <span class="keywordflow">try</span> {
-<a name="l00437"></a>00437         _data.clear();
-<a name="l00438"></a>00438         <span class="comment">// Use swap to release memory back to system</span>
-<a name="l00439"></a>00439         vector< vector<unsigned short> >().swap(_data);
-<a name="l00440"></a>00440       }
-<a name="l00441"></a>00441       <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception&) {
+<a name="l00202"></a>00202       0,    0,  124,   0,    0,   62, 0,   0,    0, -62,
+<a name="l00203"></a>00203       0,    0,   62,   0,    0,   31, 0,   0,    0, -31,
+<a name="l00204"></a>00204     -18,   36,  -64,   0,   66,   51, 0,   0, -102,  31,
+<a name="l00205"></a>00205      18,  -36,    2,   0,  -66,  -51, 0,   0,  102,  31,
+<a name="l00206"></a>00206   };
+<a name="l00207"></a>00207 
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac3556c755dad0d43c3be0913df08b395">00208</a>   Geoid::Geoid(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path, <span class="keywordtype">bool</span> cubic,
+<a name="l00209"></a>00209                <span class="keywordtype">bool</span> threadsafe)
+<a name="l00210"></a>00210     : _name(name)
+<a name="l00211"></a>00211     , _dir(path)
+<a name="l00212"></a>00212     , _cubic(cubic)
+<a name="l00213"></a>00213     , _a( <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>() )
+<a name="l00214"></a>00214     , _e2( (2 - <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>()) * <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>() )
+<a name="l00215"></a>00215     , _degree( <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() )
+<a name="l00216"></a>00216     , _eps( sqrt(numeric_limits<real>::epsilon()) )
+<a name="l00217"></a>00217     , _threadsafe(false)        <span class="comment">// Set after cache is read</span>
+<a name="l00218"></a>00218   {
+<a name="l00219"></a>00219     <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(pixel_t) == pixel_size_, <span class="stringliteral">"pixel_t has the wrong size"</span>);
+<a name="l00220"></a>00220     <span class="keywordflow">if</span> (_dir.empty())
+<a name="l00221"></a>00221       _dir = <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath</a>();
+<a name="l00222"></a>00222     _filename = _dir + <span class="stringliteral">"/"</span> + _name + (pixel_size_ != 4 ? <span class="stringliteral">".pgm"</span> : <span class="stringliteral">".pgm4"</span>);
+<a name="l00223"></a>00223     _file.open(_filename.c_str(), ios::binary);
+<a name="l00224"></a>00224     <span class="keywordflow">if</span> (!(_file.good()))
+<a name="l00225"></a>00225       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not readable "</span> + _filename);
+<a name="l00226"></a>00226     <span class="keywordtype">string</span> s;
+<a name="l00227"></a>00227     <span class="keywordflow">if</span> (!(getline(_file, s) && s == <span class="stringliteral">"P5"</span>))
+<a name="l00228"></a>00228       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not in PGM format "</span> + _filename);
+<a name="l00229"></a>00229     _offset = numeric_limits<real>::max();
+<a name="l00230"></a>00230     _scale = 0;
+<a name="l00231"></a>00231     _maxerror = _rmserror = -1;
+<a name="l00232"></a>00232     _description = <span class="stringliteral">"NONE"</span>;
+<a name="l00233"></a>00233     _datetime = <span class="stringliteral">"UNKNOWN"</span>;
+<a name="l00234"></a>00234     <span class="keywordflow">while</span> (getline(_file, s)) {
+<a name="l00235"></a>00235       <span class="keywordflow">if</span> (s.empty())
+<a name="l00236"></a>00236         <span class="keywordflow">continue</span>;
+<a name="l00237"></a>00237       <span class="keywordflow">if</span> (s[0] == <span class="charliteral">'#'</span>) {
+<a name="l00238"></a>00238         istringstream is(s);
+<a name="l00239"></a>00239         <span class="keywordtype">string</span> commentid, key;
+<a name="l00240"></a>00240         <span class="keywordflow">if</span> (!(is >> commentid >> key) || commentid != <span class="stringliteral">"#"</span>)
+<a name="l00241"></a>00241           <span class="keywordflow">continue</span>;
+<a name="l00242"></a>00242         <span class="keywordflow">if</span> (key == <span class="stringliteral">"Description"</span> || key ==<span class="stringliteral">"DateTime"</span>) {
+<a name="l00243"></a>00243           <span class="keywordtype">string</span>::size_type p =
+<a name="l00244"></a>00244             s.find_first_not_of(<span class="stringliteral">" \t"</span>, <span class="keywordtype">unsigned</span>(is.tellg()));
+<a name="l00245"></a>00245           <span class="keywordflow">if</span> (p != string::npos)
+<a name="l00246"></a>00246             (key == <span class="stringliteral">"Description"</span> ? _description : _datetime) = s.substr(p);
+<a name="l00247"></a>00247         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Offset"</span>) {
+<a name="l00248"></a>00248           <span class="keywordflow">if</span> (!(is >> _offset))
+<a name="l00249"></a>00249             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading offset "</span> + _filename);
+<a name="l00250"></a>00250         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Scale"</span>) {
+<a name="l00251"></a>00251           <span class="keywordflow">if</span> (!(is >> _scale))
+<a name="l00252"></a>00252             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading scale "</span> + _filename);
+<a name="l00253"></a>00253         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"MaxCubicError"</span> : <span class="stringliteral">"MaxBilinearError"</span>)) {
+<a name="l00254"></a>00254           <span class="comment">// It's not an error if the error can't be read</span>
+<a name="l00255"></a>00255           is >> _maxerror;
+<a name="l00256"></a>00256         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"RMSCubicError"</span> : <span class="stringliteral">"RMSBilinearError"</span>)) {
+<a name="l00257"></a>00257           <span class="comment">// It's not an error if the error can't be read</span>
+<a name="l00258"></a>00258           is >> _rmserror;
+<a name="l00259"></a>00259         }
+<a name="l00260"></a>00260       } <span class="keywordflow">else</span> {
+<a name="l00261"></a>00261         istringstream is(s);
+<a name="l00262"></a>00262         <span class="keywordflow">if</span> (!(is >> _width >> _height))
+<a name="l00263"></a>00263           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading raster size "</span> + _filename);
+<a name="l00264"></a>00264         <span class="keywordflow">break</span>;
+<a name="l00265"></a>00265       }
+<a name="l00266"></a>00266     }
+<a name="l00267"></a>00267     {
+<a name="l00268"></a>00268       <span class="keywordtype">unsigned</span> maxval;
+<a name="l00269"></a>00269       <span class="keywordflow">if</span> (!(_file >> maxval))
+<a name="l00270"></a>00270         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading maxval "</span> + _filename);
+<a name="l00271"></a>00271       <span class="keywordflow">if</span> (maxval != pixel_max_)
+<a name="l00272"></a>00272         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incorrect value of maxval "</span> + _filename);
+<a name="l00273"></a>00273       <span class="comment">// Add 1 for whitespace after maxval</span>
+<a name="l00274"></a>00274       _datastart = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()) + 1ULL;
+<a name="l00275"></a>00275       _swidth = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_width);
+<a name="l00276"></a>00276     }
+<a name="l00277"></a>00277     <span class="keywordflow">if</span> (_offset == numeric_limits<real>::max())
+<a name="l00278"></a>00278       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Offset not set "</span> + _filename);
+<a name="l00279"></a>00279     <span class="keywordflow">if</span> (_scale == 0)
+<a name="l00280"></a>00280       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale not set "</span> + _filename);
+<a name="l00281"></a>00281     <span class="keywordflow">if</span> (_scale < 0)
+<a name="l00282"></a>00282       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale must be positive "</span> + _filename);
+<a name="l00283"></a>00283     <span class="keywordflow">if</span> (_height < 2 || _width < 2)
+<a name="l00284"></a>00284       <span class="comment">// Coarsest grid spacing is 180deg.</span>
+<a name="l00285"></a>00285       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster size too small "</span> + _filename);
+<a name="l00286"></a>00286     <span class="keywordflow">if</span> (_width & 1)
+<a name="l00287"></a>00287       <span class="comment">// This is so that longitude grids can be extended thru the poles.</span>
+<a name="l00288"></a>00288       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster width is odd "</span> + _filename);
+<a name="l00289"></a>00289     <span class="keywordflow">if</span> (!(_height & 1))
+<a name="l00290"></a>00290       <span class="comment">// This is so that latitude grid includes the equator.</span>
+<a name="l00291"></a>00291       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster height is even "</span> + _filename);
+<a name="l00292"></a>00292     _file.seekg(0, ios::end);
+<a name="l00293"></a>00293     <span class="keywordflow">if</span> (!_file.good() ||
+<a name="l00294"></a>00294         _datastart + pixel_size_ * _swidth * (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_height) !=
+<a name="l00295"></a>00295         (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()))
+<a name="l00296"></a>00296       <span class="comment">// Possibly this test should be "<" because the file contains, e.g., a</span>
+<a name="l00297"></a>00297       <span class="comment">// second image.  However, for now we are more strict.</span>
+<a name="l00298"></a>00298       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File has the wrong length "</span> + _filename);
+<a name="l00299"></a>00299     _rlonres = _width / real(360);
+<a name="l00300"></a>00300     _rlatres = (_height - 1) / real(180);
+<a name="l00301"></a>00301     _cache = <span class="keyword">false</span>;
+<a name="l00302"></a>00302     _ix = _width;
+<a name="l00303"></a>00303     _iy = _height;
+<a name="l00304"></a>00304     <span class="comment">// Ensure that file errors throw exceptions</span>
+<a name="l00305"></a>00305     _file.exceptions(ifstream::eofbit | ifstream::failbit | ifstream::badbit);
+<a name="l00306"></a>00306     <span class="keywordflow">if</span> (threadsafe) {
+<a name="l00307"></a>00307       <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
+<a name="l00308"></a>00308       _file.close();
+<a name="l00309"></a>00309       _threadsafe = <span class="keyword">true</span>;
+<a name="l00310"></a>00310     }
+<a name="l00311"></a>00311   }
+<a name="l00312"></a>00312 
+<a name="l00313"></a>00313   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::height(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> gradp,
+<a name="l00314"></a>00314                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grade)<span class="keyword"> const </span>{
+<a name="l00315"></a>00315     <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(lat) || <a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(lon)) {
+<a name="l00316"></a>00316       <span class="keywordflow">if</span> (gradp) gradn = grade = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00317"></a>00317       <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00318"></a>00318     }
+<a name="l00319"></a>00319     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00320"></a>00320       fx =  lon * _rlonres,
+<a name="l00321"></a>00321       fy = -lat * _rlatres;
+<a name="l00322"></a>00322     <span class="keywordtype">int</span>
+<a name="l00323"></a>00323       ix = int(floor(fx)),
+<a name="l00324"></a>00324       iy = min((_height - 1)/2 - 1, <span class="keywordtype">int</span>(floor(fy)));
+<a name="l00325"></a>00325     fx -= ix;
+<a name="l00326"></a>00326     fy -= iy;
+<a name="l00327"></a>00327     iy += (_height - 1)/2;
+<a name="l00328"></a>00328     ix += ix < 0 ? _width : (ix >= _width ? -_width : 0);
+<a name="l00329"></a>00329     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v00 = 0, v01 = 0, v10 = 0, v11 = 0;
+<a name="l00330"></a>00330     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t[nterms_];
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332     <span class="keywordflow">if</span> (_threadsafe || !(ix == _ix && iy == _iy)) {
+<a name="l00333"></a>00333       <span class="keywordflow">if</span> (!_cubic) {
+<a name="l00334"></a>00334         v00 = rawval(ix    , iy    );
+<a name="l00335"></a>00335         v01 = rawval(ix + 1, iy    );
+<a name="l00336"></a>00336         v10 = rawval(ix    , iy + 1);
+<a name="l00337"></a>00337         v11 = rawval(ix + 1, iy + 1);
+<a name="l00338"></a>00338       } <span class="keywordflow">else</span> {
+<a name="l00339"></a>00339         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v[stencilsize_];
+<a name="l00340"></a>00340         <span class="keywordtype">int</span> k = 0;
+<a name="l00341"></a>00341         v[k++] = rawval(ix    , iy - 1);
+<a name="l00342"></a>00342         v[k++] = rawval(ix + 1, iy - 1);
+<a name="l00343"></a>00343         v[k++] = rawval(ix - 1, iy    );
+<a name="l00344"></a>00344         v[k++] = rawval(ix    , iy    );
+<a name="l00345"></a>00345         v[k++] = rawval(ix + 1, iy    );
+<a name="l00346"></a>00346         v[k++] = rawval(ix + 2, iy    );
+<a name="l00347"></a>00347         v[k++] = rawval(ix - 1, iy + 1);
+<a name="l00348"></a>00348         v[k++] = rawval(ix    , iy + 1);
+<a name="l00349"></a>00349         v[k++] = rawval(ix + 1, iy + 1);
+<a name="l00350"></a>00350         v[k++] = rawval(ix + 2, iy + 1);
+<a name="l00351"></a>00351         v[k++] = rawval(ix    , iy + 2);
+<a name="l00352"></a>00352         v[k++] = rawval(ix + 1, iy + 2);
+<a name="l00353"></a>00353 
+<a name="l00354"></a>00354         <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>* c3x = iy == 0 ? c3n_ : (iy == _height - 2 ? c3s_ : c3_);
+<a name="l00355"></a>00355         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0x = iy == 0 ? c0n_ : (iy == _height - 2 ? c0s_ : c0_);
+<a name="l00356"></a>00356         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < nterms_; ++i) {
+<a name="l00357"></a>00357           t[i] = 0;
+<a name="l00358"></a>00358           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j < stencilsize_; ++j)
+<a name="l00359"></a>00359             t[i] += v[j] * c3x[nterms_ * j + i];
+<a name="l00360"></a>00360           t[i] /= c0x;
+<a name="l00361"></a>00361         }
+<a name="l00362"></a>00362       }
+<a name="l00363"></a>00363     } <span class="keywordflow">else</span> { <span class="comment">// same cell; used cached coefficients</span>
+<a name="l00364"></a>00364       <span class="keywordflow">if</span> (!_cubic) {
+<a name="l00365"></a>00365         v00 = _v00;
+<a name="l00366"></a>00366         v01 = _v01;
+<a name="l00367"></a>00367         v10 = _v10;
+<a name="l00368"></a>00368         v11 = _v11;
+<a name="l00369"></a>00369       } <span class="keywordflow">else</span>
+<a name="l00370"></a>00370         copy(_t, _t + nterms_, t);
+<a name="l00371"></a>00371     }
+<a name="l00372"></a>00372     <span class="keywordflow">if</span> (!_cubic) {
+<a name="l00373"></a>00373       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00374"></a>00374         a = (1 - fx) * v00 + fx * v01,
+<a name="l00375"></a>00375         b = (1 - fx) * v10 + fx * v11,
+<a name="l00376"></a>00376         c = (1 - fy) * a + fy * b,
+<a name="l00377"></a>00377         h = _offset + _scale * c;
+<a name="l00378"></a>00378       <span class="keywordflow">if</span> (gradp) {
+<a name="l00379"></a>00379         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00380"></a>00380           phi = lat * _degree,
+<a name="l00381"></a>00381           cosphi = cos(phi),
+<a name="l00382"></a>00382           sinphi = sin(phi),
+<a name="l00383"></a>00383           n = 1/sqrt(1 - _e2 * sinphi * sinphi);
+<a name="l00384"></a>00384         gradn = ((1 - fx) * (v00 - v10) + fx * (v01 - v11)) *
+<a name="l00385"></a>00385           _rlatres / (_degree * _a * (1 - _e2) * n * n * n);
+<a name="l00386"></a>00386         grade = (cosphi > _eps ?
+<a name="l00387"></a>00387                  ((1 - fy) * (v01 - v00) + fy * (v11 - v10)) /   cosphi :
+<a name="l00388"></a>00388                  (sinphi > 0 ? v11 - v10 : v01 - v00) *
+<a name="l00389"></a>00389                  _rlatres / _degree ) *
+<a name="l00390"></a>00390           _rlonres / (_degree * _a * n);
+<a name="l00391"></a>00391         gradn *= _scale;
+<a name="l00392"></a>00392         grade *= _scale;
+<a name="l00393"></a>00393       }
+<a name="l00394"></a>00394       <span class="keywordflow">if</span> (!_threadsafe) {
+<a name="l00395"></a>00395         _ix = ix;
+<a name="l00396"></a>00396         _iy = iy;
+<a name="l00397"></a>00397         _v00 = v00;
+<a name="l00398"></a>00398         _v01 = v01;
+<a name="l00399"></a>00399         _v10 = v10;
+<a name="l00400"></a>00400         _v11 = v11;
+<a name="l00401"></a>00401       }
+<a name="l00402"></a>00402       <span class="keywordflow">return</span> h;
+<a name="l00403"></a>00403     } <span class="keywordflow">else</span> {
+<a name="l00404"></a>00404       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = t[0] + fx * (t[1] + fx * (t[3] + fx * t[6])) +
+<a name="l00405"></a>00405         fy * (t[2] + fx * (t[4] + fx * t[7]) +
+<a name="l00406"></a>00406              fy * (t[5] + fx * t[8] + fy * t[9]));
+<a name="l00407"></a>00407       h = _offset + _scale * h;
+<a name="l00408"></a>00408       <span class="keywordflow">if</span> (gradp) {
+<a name="l00409"></a>00409         <span class="comment">// Avoid 0/0 at the poles by backing off 1/100 of a cell size</span>
+<a name="l00410"></a>00410         lat = min(lat,  90 - 1/(100 * _rlatres));
+<a name="l00411"></a>00411         lat = max(lat, -90 + 1/(100 * _rlatres));
+<a name="l00412"></a>00412         fy = (90 - lat) * _rlatres;
+<a name="l00413"></a>00413         fy -= int(fy);
+<a name="l00414"></a>00414         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00415"></a>00415           phi = lat * _degree,
+<a name="l00416"></a>00416           cosphi = cos(phi),
+<a name="l00417"></a>00417           sinphi = sin(phi),
+<a name="l00418"></a>00418           n = 1/sqrt(1 - _e2 * sinphi * sinphi);
+<a name="l00419"></a>00419         gradn = t[2] + fx * (t[4] + fx * t[7]) +
+<a name="l00420"></a>00420           fy * (2 * t[5] + fx * 2 * t[8] + 3 * fy * t[9]);
+<a name="l00421"></a>00421         grade = t[1] + fx * (2 * t[3] + fx * 3 * t[6]) +
+<a name="l00422"></a>00422           fy * (t[4] + fx * 2 * t[7] + fy * t[8]);
+<a name="l00423"></a>00423         gradn *= - _rlatres / (_degree * _a * (1 - _e2) * n * n * n) * _scale;
+<a name="l00424"></a>00424         grade *= _rlonres / (_degree * _a * n * cosphi) * _scale;
+<a name="l00425"></a>00425       }
+<a name="l00426"></a>00426       <span class="keywordflow">if</span> (!_threadsafe) {
+<a name="l00427"></a>00427         _ix = ix;
+<a name="l00428"></a>00428         _iy = iy;
+<a name="l00429"></a>00429         copy(t, t + nterms_, _t);
+<a name="l00430"></a>00430       }
+<a name="l00431"></a>00431       <span class="keywordflow">return</span> h;
+<a name="l00432"></a>00432     }
+<a name="l00433"></a>00433   }
+<a name="l00434"></a>00434 
+<a name="l00435"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">00435</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">Geoid::CacheClear</a>() <span class="keyword">const</span> throw() {
+<a name="l00436"></a>00436     <span class="keywordflow">if</span> (!_threadsafe) {
+<a name="l00437"></a>00437       _cache = <span class="keyword">false</span>;
+<a name="l00438"></a>00438       <span class="keywordflow">try</span> {
+<a name="l00439"></a>00439         _data.clear();
+<a name="l00440"></a>00440         <span class="comment">// Use swap to release memory back to system</span>
+<a name="l00441"></a>00441         vector< vector<pixel_t> >().swap(_data);
 <a name="l00442"></a>00442       }
-<a name="l00443"></a>00443     }
-<a name="l00444"></a>00444   }
-<a name="l00445"></a>00445 
-<a name="l00446"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">00446</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">Geoid::CacheArea</a>(real south, real west, real north, real east)<span class="keyword"> const </span>{
-<a name="l00447"></a>00447     <span class="keywordflow">if</span> (_threadsafe)
-<a name="l00448"></a>00448       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Attempt to change cache of threadsafe Geoid"</span>);
-<a name="l00449"></a>00449     <span class="keywordflow">if</span> (south > north) {
-<a name="l00450"></a>00450       <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
-<a name="l00451"></a>00451       <span class="keywordflow">return</span>;
-<a name="l00452"></a>00452     }
-<a name="l00453"></a>00453     <span class="keywordflow">if</span> (west >= 180)
-<a name="l00454"></a>00454       west -= 360;              <span class="comment">// west in [-180, 180)</span>
-<a name="l00455"></a>00455     <span class="keywordflow">if</span> (east >= 180)
-<a name="l00456"></a>00456       east -= 360;
-<a name="l00457"></a>00457     <span class="keywordflow">if</span> (east <= west)
-<a name="l00458"></a>00458       east += 360;              <span class="comment">// east - west in (0, 360]</span>
-<a name="l00459"></a>00459     <span class="keywordtype">int</span>
-<a name="l00460"></a>00460       iw = int(floor(west * _rlonres)),
-<a name="l00461"></a>00461       ie = int(floor(east * _rlonres)),
-<a name="l00462"></a>00462       in = int(floor(-north * _rlatres)) + (_height - 1)/2,
-<a name="l00463"></a>00463       is = <span class="keywordtype">int</span>(floor(-south * _rlatres)) + (_height - 1)/2;
-<a name="l00464"></a>00464     in = max(0, min(_height - 2, in));
-<a name="l00465"></a>00465     is = max(0, min(_height - 2, is));
-<a name="l00466"></a>00466     is += 1;
-<a name="l00467"></a>00467     ie += 1;
-<a name="l00468"></a>00468     <span class="keywordflow">if</span> (_cubic) {
-<a name="l00469"></a>00469       in -= 1;
-<a name="l00470"></a>00470       is += 1;
-<a name="l00471"></a>00471       iw -= 1;
-<a name="l00472"></a>00472       ie += 1;
-<a name="l00473"></a>00473     }
-<a name="l00474"></a>00474     <span class="keywordflow">if</span> (ie - iw >= _width - 1) {
-<a name="l00475"></a>00475       <span class="comment">// Include entire longitude range</span>
-<a name="l00476"></a>00476       iw = 0;
-<a name="l00477"></a>00477       ie = _width - 1;
-<a name="l00478"></a>00478     } <span class="keywordflow">else</span> {
-<a name="l00479"></a>00479       ie += iw < 0 ? _width : (iw >= _width ? -_width : 0);
-<a name="l00480"></a>00480       iw += iw < 0 ? _width : (iw >= _width ? -_width : 0);
-<a name="l00481"></a>00481     }
-<a name="l00482"></a>00482     <span class="keywordtype">int</span> oysize = int(_data.size());
-<a name="l00483"></a>00483     _xsize = ie - iw + 1;
-<a name="l00484"></a>00484     _ysize = is - in + 1;
-<a name="l00485"></a>00485     _xoffset = iw;
-<a name="l00486"></a>00486     _yoffset = in;
-<a name="l00487"></a>00487 
-<a name="l00488"></a>00488     <span class="keywordflow">try</span> {
-<a name="l00489"></a>00489       _data.resize(_ysize, vector<unsigned short>(_xsize));
-<a name="l00490"></a>00490       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = min(oysize, _ysize); iy--;)
-<a name="l00491"></a>00491         _data[iy].resize(_xsize);
-<a name="l00492"></a>00492     }
-<a name="l00493"></a>00493     <span class="keywordflow">catch</span> (<span class="keyword">const</span> bad_alloc&) {
-<a name="l00494"></a>00494       <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
-<a name="l00495"></a>00495       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Insufficient memory for caching "</span> + _filename);
-<a name="l00496"></a>00496     }
-<a name="l00497"></a>00497 
-<a name="l00498"></a>00498     <span class="keywordflow">try</span> {
-<a name="l00499"></a>00499       vector<char> buf(2 * _xsize);
-<a name="l00500"></a>00500       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = in; iy <= is; ++iy) {
-<a name="l00501"></a>00501         <span class="keywordtype">int</span> iy1 = iy, iw1 = iw;
-<a name="l00502"></a>00502         <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
-<a name="l00503"></a>00503           iy1 = iy1 < 0 ? -iy1 : 2 * (_height - 1) - iy1;
-<a name="l00504"></a>00504           iw1 += _width/2;
-<a name="l00505"></a>00505           <span class="keywordflow">if</span> (iw1 >= _width)
-<a name="l00506"></a>00506             iw1 -= _width;
-<a name="l00507"></a>00507         }
-<a name="l00508"></a>00508         <span class="keywordtype">int</span> xs1 = min(_width - iw1, _xsize);
-<a name="l00509"></a>00509         filepos(iw1, iy1);
-<a name="l00510"></a>00510         _file.read(&(buf[0]), 2 * xs1);
-<a name="l00511"></a>00511         <span class="keywordflow">if</span> (xs1 < _xsize) {
-<a name="l00512"></a>00512           <span class="comment">// Wrap around longitude = 0</span>
-<a name="l00513"></a>00513           filepos(0, iy1);
-<a name="l00514"></a>00514           _file.read(&(buf[2 * xs1]), 2 * (_xsize - xs1));
-<a name="l00515"></a>00515         }
-<a name="l00516"></a>00516         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ix = 0; ix < _xsize; ++ix)
-<a name="l00517"></a>00517           _data[iy - in][ix] =
-<a name="l00518"></a>00518             (<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>)((<span class="keywordtype">unsigned</span> char)buf[2 * ix] * 256u +
-<a name="l00519"></a>00519                              (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)buf[2 * ix + 1]);
+<a name="l00443"></a>00443       <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception&) {
+<a name="l00444"></a>00444       }
+<a name="l00445"></a>00445     }
+<a name="l00446"></a>00446   }
+<a name="l00447"></a>00447 
+<a name="l00448"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">00448</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">Geoid::CacheArea</a>(real south, real west, real north, real east)<span class="keyword"> const </span>{
+<a name="l00449"></a>00449     <span class="keywordflow">if</span> (_threadsafe)
+<a name="l00450"></a>00450       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Attempt to change cache of threadsafe Geoid"</span>);
+<a name="l00451"></a>00451     <span class="keywordflow">if</span> (south > north) {
+<a name="l00452"></a>00452       <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
+<a name="l00453"></a>00453       <span class="keywordflow">return</span>;
+<a name="l00454"></a>00454     }
+<a name="l00455"></a>00455     <span class="keywordflow">if</span> (west >= 180)
+<a name="l00456"></a>00456       west -= 360;              <span class="comment">// west in [-180, 180)</span>
+<a name="l00457"></a>00457     <span class="keywordflow">if</span> (east >= 180)
+<a name="l00458"></a>00458       east -= 360;
+<a name="l00459"></a>00459     <span class="keywordflow">if</span> (east <= west)
+<a name="l00460"></a>00460       east += 360;              <span class="comment">// east - west in (0, 360]</span>
+<a name="l00461"></a>00461     <span class="keywordtype">int</span>
+<a name="l00462"></a>00462       iw = int(floor(west * _rlonres)),
+<a name="l00463"></a>00463       ie = int(floor(east * _rlonres)),
+<a name="l00464"></a>00464       in = int(floor(-north * _rlatres)) + (_height - 1)/2,
+<a name="l00465"></a>00465       is = <span class="keywordtype">int</span>(floor(-south * _rlatres)) + (_height - 1)/2;
+<a name="l00466"></a>00466     in = max(0, min(_height - 2, in));
+<a name="l00467"></a>00467     is = max(0, min(_height - 2, is));
+<a name="l00468"></a>00468     is += 1;
+<a name="l00469"></a>00469     ie += 1;
+<a name="l00470"></a>00470     <span class="keywordflow">if</span> (_cubic) {
+<a name="l00471"></a>00471       in -= 1;
+<a name="l00472"></a>00472       is += 1;
+<a name="l00473"></a>00473       iw -= 1;
+<a name="l00474"></a>00474       ie += 1;
+<a name="l00475"></a>00475     }
+<a name="l00476"></a>00476     <span class="keywordflow">if</span> (ie - iw >= _width - 1) {
+<a name="l00477"></a>00477       <span class="comment">// Include entire longitude range</span>
+<a name="l00478"></a>00478       iw = 0;
+<a name="l00479"></a>00479       ie = _width - 1;
+<a name="l00480"></a>00480     } <span class="keywordflow">else</span> {
+<a name="l00481"></a>00481       ie += iw < 0 ? _width : (iw >= _width ? -_width : 0);
+<a name="l00482"></a>00482       iw += iw < 0 ? _width : (iw >= _width ? -_width : 0);
+<a name="l00483"></a>00483     }
+<a name="l00484"></a>00484     <span class="keywordtype">int</span> oysize = int(_data.size());
+<a name="l00485"></a>00485     _xsize = ie - iw + 1;
+<a name="l00486"></a>00486     _ysize = is - in + 1;
+<a name="l00487"></a>00487     _xoffset = iw;
+<a name="l00488"></a>00488     _yoffset = in;
+<a name="l00489"></a>00489 
+<a name="l00490"></a>00490     <span class="keywordflow">try</span> {
+<a name="l00491"></a>00491       _data.resize(_ysize, vector<pixel_t>(_xsize));
+<a name="l00492"></a>00492       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = min(oysize, _ysize); iy--;)
+<a name="l00493"></a>00493         _data[iy].resize(_xsize);
+<a name="l00494"></a>00494     }
+<a name="l00495"></a>00495     <span class="keywordflow">catch</span> (<span class="keyword">const</span> bad_alloc&) {
+<a name="l00496"></a>00496       <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
+<a name="l00497"></a>00497       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Insufficient memory for caching "</span> + _filename);
+<a name="l00498"></a>00498     }
+<a name="l00499"></a>00499 
+<a name="l00500"></a>00500     <span class="keywordflow">try</span> {
+<a name="l00501"></a>00501       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = in; iy <= is; ++iy) {
+<a name="l00502"></a>00502         <span class="keywordtype">int</span> iy1 = iy, iw1 = iw;
+<a name="l00503"></a>00503         <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
+<a name="l00504"></a>00504           <span class="comment">// Allow points "beyond" the poles to support interpolation</span>
+<a name="l00505"></a>00505           iy1 = iy1 < 0 ? -iy1 : 2 * (_height - 1) - iy1;
+<a name="l00506"></a>00506           iw1 += _width/2;
+<a name="l00507"></a>00507           <span class="keywordflow">if</span> (iw1 >= _width)
+<a name="l00508"></a>00508             iw1 -= _width;
+<a name="l00509"></a>00509         }
+<a name="l00510"></a>00510         <span class="keywordtype">int</span> xs1 = min(_width - iw1, _xsize);
+<a name="l00511"></a>00511         filepos(iw1, iy1);
+<a name="l00512"></a>00512         <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<pixel_t, pixel_t, true>
+<a name="l00513"></a>00513           (_file, &(_data[iy - in][0]), xs1);
+<a name="l00514"></a>00514         <span class="keywordflow">if</span> (xs1 < _xsize) {
+<a name="l00515"></a>00515           <span class="comment">// Wrap around longitude = 0</span>
+<a name="l00516"></a>00516           filepos(0, iy1);
+<a name="l00517"></a>00517           <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<pixel_t, pixel_t, true>
+<a name="l00518"></a>00518             (_file, &(_data[iy - in][xs1]), _xsize - xs1);
+<a name="l00519"></a>00519         }
 <a name="l00520"></a>00520       }
 <a name="l00521"></a>00521       _cache = <span class="keyword">true</span>;
 <a name="l00522"></a>00522     }
@@ -599,8 +614,13 @@
 <a name="l00550"></a>00550 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geoid_8hpp.html b/doc/html/Geoid_8hpp.html
index b2a21de..6d68216 100644
--- a/doc/html/Geoid_8hpp.html
+++ b/doc/html/Geoid_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geoid.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,17 +84,16 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a>   "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a>   "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">PGM_PIXEL_WIDTH</a>   2</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -88,7 +102,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GEOID_HPP   "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GEOID_HPP   "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"</td>
         </tr>
       </table>
 </div>
@@ -98,9 +112,30 @@ Defines</h2></td></tr>
 
 </div>
 </div>
+<a class="anchor" id="aa34d236045b829973cbc0d958d3ed139"></a><!-- doxytag: member="Geoid.hpp::PGM_PIXEL_WIDTH" ref="aa34d236045b829973cbc0d958d3ed139" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define PGM_PIXEL_WIDTH   2</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>The size of the pixel data in the pgm data files for the geoids. 2 is the standard size corresponding to a maxval 2^16-1. Setting it to 4 uses a maxval of 2^32-1 and changes the extension for the data files from .pgm to .pgm4. Note that the format of these pgm4 files is a non-standard extension of the pgm format. </p>
+
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00033">33</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Geoid_8hpp_source.html b/doc/html/Geoid_8hpp_source.html
index 8eed34d..879543d 100644
--- a/doc/html/Geoid_8hpp_source.html
+++ b/doc/html/Geoid_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geoid.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Geoid.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Geoid class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEOID_HPP)</span>
 <a name="l00011"></a><a class="code" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEOID_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <vector></span>
@@ -72,453 +87,495 @@
 <a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (disable: 4251)</span>
 <a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00024"></a>00024 <span class="preprocessor"></span>
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>GeographicLib {
-<a name="l00026"></a>00026 <span class="comment"></span>
-<a name="l00027"></a>00027 <span class="comment">  /**</span>
-<a name="l00028"></a>00028 <span class="comment">   * \brief Looking up the height of the geoid</span>
-<a name="l00029"></a>00029 <span class="comment">   *</span>
-<a name="l00030"></a>00030 <span class="comment">   * This class evaluated the height of one of the standard geoids, EGM84,</span>
-<a name="l00031"></a>00031 <span class="comment">   * EGM96, or EGM2008 by bilinear or cubic interpolation into a rectangular</span>
-<a name="l00032"></a>00032 <span class="comment">   * grid of data.  These geoid models are documented in</span>
-<a name="l00033"></a>00033 <span class="comment">   * - EGM84:</span>
-<a name="l00034"></a>00034 <span class="comment">   *   http://earth-info.nga.mil/GandG/wgs84/gravitymod/wgs84_180/wgs84_180.html</span>
-<a name="l00035"></a>00035 <span class="comment">   * - EGM96:</span>
-<a name="l00036"></a>00036 <span class="comment">   *   http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html</span>
-<a name="l00037"></a>00037 <span class="comment">   * - EGM2008:</span>
-<a name="l00038"></a>00038 <span class="comment">   *   http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008</span>
-<a name="l00039"></a>00039 <span class="comment">   *</span>
-<a name="l00040"></a>00040 <span class="comment">   * The geoids are defined in terms of spherical harmonics.  However in order</span>
-<a name="l00041"></a>00041 <span class="comment">   * to provide a quick and flexible method of evaluating the geoid heights,</span>
-<a name="l00042"></a>00042 <span class="comment">   * this class evaluates the height by interpolation into a grid of</span>
-<a name="l00043"></a>00043 <span class="comment">   * precomputed values.</span>
-<a name="l00044"></a>00044 <span class="comment">   *</span>
-<a name="l00045"></a>00045 <span class="comment">   * See \ref geoid for details of how to install the data sets, the data</span>
-<a name="l00046"></a>00046 <span class="comment">   * format, estimates of the interpolation errors, and how to use caching.</span>
-<a name="l00047"></a>00047 <span class="comment">   *</span>
-<a name="l00048"></a>00048 <span class="comment">   * In addition to returning the geoid height, the gradient of the geoid can</span>
-<a name="l00049"></a>00049 <span class="comment">   * be calculated.  The gradient is defined as the rate of change of the geoid</span>
-<a name="l00050"></a>00050 <span class="comment">   * as a function of position on the ellipsoid.  This uses the parameters for</span>
-<a name="l00051"></a>00051 <span class="comment">   * the WGS84 ellipsoid.  The gradient defined in terms of the interpolated</span>
-<a name="l00052"></a>00052 <span class="comment">   * heights.  As a result of the way that the geoid data is stored, the</span>
-<a name="l00053"></a>00053 <span class="comment">   * calculation of gradients can result in large quantization errors.  This is</span>
-<a name="l00054"></a>00054 <span class="comment">   * particularly acute for fine grids, at high latitudes, and for the easterly</span>
-<a name="l00055"></a>00055 <span class="comment">   * gradient.</span>
-<a name="l00056"></a>00056 <span class="comment">   *</span>
-<a name="l00057"></a>00057 <span class="comment">   * This class is typically \e not thread safe in that a single instantiation</span>
-<a name="l00058"></a>00058 <span class="comment">   * cannot be safely used by multiple threads because of the way the object</span>
-<a name="l00059"></a>00059 <span class="comment">   * reads the data set and because it maintains a single-cell cache.  If</span>
-<a name="l00060"></a>00060 <span class="comment">   * multiple threads need to calculate geoid heights they should all construct</span>
-<a name="l00061"></a>00061 <span class="comment">   * thread-local instantiations.  Alternatively, set the optional \e</span>
-<a name="l00062"></a>00062 <span class="comment">   * threadsafe parameter to true in the constructor.  This causes the</span>
-<a name="l00063"></a>00063 <span class="comment">   * constructor to read all the data into memory and to turn off the</span>
-<a name="l00064"></a>00064 <span class="comment">   * single-cell caching which results in a Geoid object which \e is thread</span>
-<a name="l00065"></a>00065 <span class="comment">   * safe.</span>
-<a name="l00066"></a>00066 <span class="comment">   *</span>
-<a name="l00067"></a>00067 <span class="comment">   * Example of use:</span>
-<a name="l00068"></a>00068 <span class="comment">   * \include example-Geoid.cpp</span>
-<a name="l00069"></a>00069 <span class="comment">   **********************************************************************/</span>
-<a name="l00070"></a>00070 
-<a name="l00071"></a><a class="code" href="classGeographicLib_1_1Geoid.html">00071</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a> {
-<a name="l00072"></a>00072   <span class="keyword">private</span>:
-<a name="l00073"></a>00073     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00074"></a>00074     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> stencilsize_ = 12;
-<a name="l00075"></a>00075     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> nterms_ = ((3 + 1) * (3 + 2))/2; <span class="comment">// for a cubic fit</span>
-<a name="l00076"></a>00076     <span class="keyword">static</span> <span class="keyword">const</span> real c0_;
-<a name="l00077"></a>00077     <span class="keyword">static</span> <span class="keyword">const</span> real c0n_;
-<a name="l00078"></a>00078     <span class="keyword">static</span> <span class="keyword">const</span> real c0s_;
-<a name="l00079"></a>00079     <span class="keyword">static</span> <span class="keyword">const</span> real c3_[stencilsize_ * nterms_];
-<a name="l00080"></a>00080     <span class="keyword">static</span> <span class="keyword">const</span> real c3n_[stencilsize_ * nterms_];
-<a name="l00081"></a>00081     <span class="keyword">static</span> <span class="keyword">const</span> real c3s_[stencilsize_ * nterms_];
-<a name="l00082"></a>00082 
-<a name="l00083"></a>00083     std::string _name, _dir, _filename;
-<a name="l00084"></a>00084     <span class="keyword">const</span> <span class="keywordtype">bool</span> _cubic;
-<a name="l00085"></a>00085     <span class="keyword">const</span> real _a, _e2, _degree, _eps;
-<a name="l00086"></a>00086     <span class="keyword">mutable</span> std::ifstream _file;
-<a name="l00087"></a>00087     real _rlonres, _rlatres;
-<a name="l00088"></a>00088     std::string _description, _datetime;
-<a name="l00089"></a>00089     real _offset, _scale, _maxerror, _rmserror;
-<a name="l00090"></a>00090     <span class="keywordtype">int</span> _width, _height;
-<a name="l00091"></a>00091     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> _datastart, _swidth;
-<a name="l00092"></a>00092     <span class="keywordtype">bool</span> _threadsafe;
-<a name="l00093"></a>00093     <span class="comment">// Area cache</span>
-<a name="l00094"></a>00094     <span class="keyword">mutable</span> std::vector< std::vector<unsigned short> > _data;
-<a name="l00095"></a>00095     <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _cache;
-<a name="l00096"></a>00096     <span class="comment">// NE corner and extent of cache</span>
-<a name="l00097"></a>00097     <span class="keyword">mutable</span> <span class="keywordtype">int</span> _xoffset, _yoffset, _xsize, _ysize;
-<a name="l00098"></a>00098     <span class="comment">// Cell cache</span>
-<a name="l00099"></a>00099     <span class="keyword">mutable</span> <span class="keywordtype">int</span> _ix, _iy;
-<a name="l00100"></a>00100     <span class="keyword">mutable</span> real _v00, _v01, _v10, _v11;
-<a name="l00101"></a>00101     <span class="keyword">mutable</span> real _t[nterms_];
-<a name="l00102"></a>00102     <span class="keywordtype">void</span> filepos(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
-<a name="l00103"></a>00103       _file.seekg(
-<a name="l00104"></a>00104 #<span class="keywordflow">if</span> !(defined(__GNUC__) && __GNUC__ < 4)
-<a name="l00105"></a>00105                   <span class="comment">// g++ 3.x doesn't know about the cast to streamoff.</span>
-<a name="l00106"></a>00106                   std::ios::streamoff
-<a name="l00107"></a>00107 #endif
-<a name="l00108"></a>00108                   (_datastart + 2ULL * (<span class="keywordtype">unsigned</span>(iy)*_swidth + <span class="keywordtype">unsigned</span>(ix))));
-<a name="l00109"></a>00109     }
-<a name="l00110"></a>00110     real rawval(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
-<a name="l00111"></a>00111       <span class="keywordflow">if</span> (ix < 0)
-<a name="l00112"></a>00112         ix += _width;
-<a name="l00113"></a>00113       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ix >= _width)
-<a name="l00114"></a>00114         ix -= _width;
-<a name="l00115"></a>00115       <span class="keywordflow">if</span> (_cache && iy >= _yoffset && iy < _yoffset + _ysize &&
-<a name="l00116"></a>00116           ((ix >= _xoffset && ix < _xoffset + _xsize) ||
-<a name="l00117"></a>00117            (ix + _width >= _xoffset && ix + _width < _xoffset + _xsize))) {
-<a name="l00118"></a>00118         <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(_data[iy - _yoffset]
-<a name="l00119"></a>00119                     [ix >= _xoffset ? ix - _xoffset : ix + _width - _xoffset]);
-<a name="l00120"></a>00120       } <span class="keywordflow">else</span> {
-<a name="l00121"></a>00121         <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
-<a name="l00122"></a>00122           iy = iy < 0 ? -iy : 2 * (_height - 1) - iy;
-<a name="l00123"></a>00123           ix += (ix < _width/2 ? 1 : -1) * _width/2;
-<a name="l00124"></a>00124         }
-<a name="l00125"></a>00125         <span class="keywordflow">try</span> {
-<a name="l00126"></a>00126           filepos(ix, iy);
-<a name="l00127"></a>00127           <span class="keywordtype">char</span> a, b;
-<a name="l00128"></a>00128           _file.get(a);
-<a name="l00129"></a>00129           _file.get(b);
-<a name="l00130"></a>00130           <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(a) * 256u + (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(b));
-<a name="l00131"></a>00131         }
-<a name="l00132"></a>00132         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00133"></a>00133           <span class="comment">// throw GeographicErr("Error reading " + _filename + ": "</span>
-<a name="l00134"></a>00134           <span class="comment">//                      + e.what());</span>
-<a name="l00135"></a>00135           <span class="comment">// triggers complaints about the "binary '+'" under Visual Studio.</span>
-<a name="l00136"></a>00136           <span class="comment">// So use '+=' instead.</span>
-<a name="l00137"></a>00137           std::string err(<span class="stringliteral">"Error reading "</span>);
-<a name="l00138"></a>00138           err += _filename;
-<a name="l00139"></a>00139           err += <span class="stringliteral">": "</span>;
-<a name="l00140"></a>00140           err += e.what();
-<a name="l00141"></a>00141           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(err);
-<a name="l00142"></a>00142         }
-<a name="l00143"></a>00143       }
-<a name="l00144"></a>00144     }
-<a name="l00145"></a>00145     real height(real lat, real lon, <span class="keywordtype">bool</span> gradp,
-<a name="l00146"></a>00146                 real& grade, real& gradn) <span class="keyword">const</span>;
-<a name="l00147"></a>00147     <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>&);            <span class="comment">// copy constructor not allowed</span>
-<a name="l00148"></a>00148     <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>& operator=(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>&); <span class="comment">// copy assignment not allowed</span>
-<a name="l00149"></a>00149   <span class="keyword">public</span>:
-<a name="l00150"></a>00150 <span class="comment"></span>
-<a name="l00151"></a>00151 <span class="comment">    /**</span>
-<a name="l00152"></a>00152 <span class="comment">     * Flags indicating conversions between heights above the geoid and heights</span>
-<a name="l00153"></a>00153 <span class="comment">     * above the ellipsoid.</span>
-<a name="l00154"></a>00154 <span class="comment">     **********************************************************************/</span>
-<a name="l00155"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">00155</a>     <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> {<span class="comment"></span>
-<a name="l00156"></a>00156 <span class="comment">      /**</span>
-<a name="l00157"></a>00157 <span class="comment">       * The multiplier for converting from heights above the geoid to heights</span>
-<a name="l00158"></a>00158 <span class="comment">       * above the ellipsoid.</span>
-<a name="l00159"></a>00159 <span class="comment">       **********************************************************************/</span>
-<a name="l00160"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a4a1db06e9dcfa1ebb345c616151ab70d">00160</a>       ELLIPSOIDTOGEOID = -1,<span class="comment"></span>
-<a name="l00161"></a>00161 <span class="comment">      /**</span>
-<a name="l00162"></a>00162 <span class="comment">       * No conversion.</span>
-<a name="l00163"></a>00163 <span class="comment">       **********************************************************************/</span>
-<a name="l00164"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">00164</a>       NONE = 0,<span class="comment"></span>
-<a name="l00165"></a>00165 <span class="comment">      /**</span>
-<a name="l00166"></a>00166 <span class="comment">       * The multiplier for converting from heights above the ellipsoid to</span>
-<a name="l00167"></a>00167 <span class="comment">       * heights above the geoid.</span>
-<a name="l00168"></a>00168 <span class="comment">       **********************************************************************/</span>
-<a name="l00169"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">00169</a>       GEOIDTOELLIPSOID = 1,
-<a name="l00170"></a>00170     };
-<a name="l00171"></a>00171 <span class="comment"></span>
-<a name="l00172"></a>00172 <span class="comment">    /** \name Setting up the geoid</span>
-<a name="l00173"></a>00173 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00174"></a>00174 <span class="comment">    ///@{</span>
-<a name="l00175"></a>00175 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00176"></a>00176 <span class="comment">     * Construct a geoid.</span>
-<a name="l00177"></a>00177 <span class="comment">     *</span>
-<a name="l00178"></a>00178 <span class="comment">     * @param[in] name the name of the geoid.</span>
-<a name="l00179"></a>00179 <span class="comment">     * @param[in] path (optional) directory for data file.</span>
-<a name="l00180"></a>00180 <span class="comment">     * @param[in] cubic (optional) interpolation method; false means bilinear,</span>
-<a name="l00181"></a>00181 <span class="comment">     *   true (the default) means cubic.</span>
-<a name="l00182"></a>00182 <span class="comment">     * @param[in] threadsafe (optional), if true, construct a thread safe</span>
-<a name="l00183"></a>00183 <span class="comment">     *   object.  The default is false</span>
-<a name="l00184"></a>00184 <span class="comment">     *</span>
-<a name="l00185"></a>00185 <span class="comment">     * The data file is formed by appending ".pgm" to the name.  If \e path is</span>
-<a name="l00186"></a>00186 <span class="comment">     * specified (and is non-empty), then the file is loaded from directory, \e</span>
-<a name="l00187"></a>00187 <span class="comment">     * path.  Otherwise the path is given by DefaultGeoidPath().  This may</span>
-<a name="l00188"></a>00188 <span class="comment">     * throw an exception because the file does not exist, is unreadable, or is</span>
-<a name="l00189"></a>00189 <span class="comment">     * corrupt.  If the \e threadsafe parameter is true, the data set is read</span>
-<a name="l00190"></a>00190 <span class="comment">     * into memory (which this may also cause an exception to be thrown), the</span>
-<a name="l00191"></a>00191 <span class="comment">     * data file is closed, and single-cell caching is turned off; this results</span>
-<a name="l00192"></a>00192 <span class="comment">     * in a Geoid object which \e is thread safe.</span>
-<a name="l00193"></a>00193 <span class="comment">     **********************************************************************/</span>
-<a name="l00194"></a>00194     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
-<a name="l00195"></a>00195                    <span class="keywordtype">bool</span> cubic = <span class="keyword">true</span>, <span class="keywordtype">bool</span> threadsafe = <span class="keyword">false</span>);
-<a name="l00196"></a>00196 <span class="comment"></span>
-<a name="l00197"></a>00197 <span class="comment">    /**</span>
-<a name="l00198"></a>00198 <span class="comment">     * Set up a cache.</span>
-<a name="l00199"></a>00199 <span class="comment">     *</span>
-<a name="l00200"></a>00200 <span class="comment">     * @param[in] south latitude (degrees) of the south edge of the cached area.</span>
-<a name="l00201"></a>00201 <span class="comment">     * @param[in] west longitude (degrees) of the west edge of the cached area.</span>
-<a name="l00202"></a>00202 <span class="comment">     * @param[in] north latitude (degrees) of the north edge of the cached area.</span>
-<a name="l00203"></a>00203 <span class="comment">     * @param[in] east longitude (degrees) of the east edge of the cached area.</span>
-<a name="l00204"></a>00204 <span class="comment">     *</span>
-<a name="l00205"></a>00205 <span class="comment">     * Cache the data for the specified "rectangular" area bounded by the</span>
-<a name="l00206"></a>00206 <span class="comment">     * parallels \e south and \e north and the meridians \e west and \e east.</span>
-<a name="l00207"></a>00207 <span class="comment">     * \e east is always interpreted as being east of \e west, if necessary by</span>
-<a name="l00208"></a>00208 <span class="comment">     * adding 360<sup>o</sup> to its value.  This may throw an error because of</span>
-<a name="l00209"></a>00209 <span class="comment">     * insufficient memory or because of an error reading the data from the</span>
-<a name="l00210"></a>00210 <span class="comment">     * file.  In this case, you can catch the error and either do nothing (you</span>
-<a name="l00211"></a>00211 <span class="comment">     * will have no cache in this case) or try again with a smaller area.  \e</span>
-<a name="l00212"></a>00212 <span class="comment">     * south and \e north should be in the range [-90, 90]; \e west and \e east</span>
-<a name="l00213"></a>00213 <span class="comment">     * should be in the range [-180, 360].  An exception is thrown if this</span>
-<a name="l00214"></a>00214 <span class="comment">     * routine is called on a thread safe Geoid.</span>
-<a name="l00215"></a>00215 <span class="comment">     **********************************************************************/</span>
-<a name="l00216"></a>00216     <span class="keywordtype">void</span> CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> south, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> west, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> north, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> east) <span class="keyword">const</span>;
-<a name="l00217"></a>00217 <span class="comment"></span>
-<a name="l00218"></a>00218 <span class="comment">    /**</span>
-<a name="l00219"></a>00219 <span class="comment">     * Cache all the data.  On most computers, this is fast for data sets with</span>
-<a name="l00220"></a>00220 <span class="comment">     * grid resolution of 5' or coarser.  For a 1' grid, the required RAM is</span>
-<a name="l00221"></a>00221 <span class="comment">     * 450MB; a 2.5' grid needs 72MB; and a 5' grid needs 18MB.  This may throw</span>
-<a name="l00222"></a>00222 <span class="comment">     * an error because of insufficient memory or because of an error reading</span>
-<a name="l00223"></a>00223 <span class="comment">     * the data from the file.  In this case, you can catch the error and</span>
-<a name="l00224"></a>00224 <span class="comment">     * either do nothing (you will have no cache in this case) or try using</span>
-<a name="l00225"></a>00225 <span class="comment">     * Geoid::CacheArea on a specific area.  An exception is thrown if this</span>
-<a name="l00226"></a>00226 <span class="comment">     * routine is called on a thread safe Geoid.</span>
-<a name="l00227"></a>00227 <span class="comment">     **********************************************************************/</span>
-<a name="l00228"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">00228</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>()<span class="keyword"> const </span>{ CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
-<a name="l00229"></a>00229                                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360)); }
-<a name="l00230"></a>00230 <span class="comment"></span>
-<a name="l00231"></a>00231 <span class="comment">    /**</span>
-<a name="l00232"></a>00232 <span class="comment">     * Clear the cache.  This never throws an error.  (This does nothing with a</span>
-<a name="l00233"></a>00233 <span class="comment">     * thread safe Geoid.)</span>
-<a name="l00234"></a>00234 <span class="comment">     **********************************************************************/</span>
-<a name="l00235"></a>00235     <span class="keywordtype">void</span> CacheClear() <span class="keyword">const</span> throw();
-<a name="l00236"></a>00236 <span class="comment"></span>
-<a name="l00237"></a>00237 <span class="comment">    ///@}</span>
-<a name="l00238"></a>00238 <span class="comment"></span><span class="comment"></span>
-<a name="l00239"></a>00239 <span class="comment">    /** \name Compute geoid heights</span>
-<a name="l00240"></a>00240 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00241"></a>00241 <span class="comment">    ///@{</span>
-<a name="l00242"></a>00242 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00243"></a>00243 <span class="comment">     * Compute the geoid height at a point</span>
-<a name="l00244"></a>00244 <span class="comment">     *</span>
-<a name="l00245"></a>00245 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00246"></a>00246 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00247"></a>00247 <span class="comment">     * @return geoid height (meters).</span>
-<a name="l00248"></a>00248 <span class="comment">     *</span>
-<a name="l00249"></a>00249 <span class="comment">     * The latitude should be in [-90, 90] and longitude should be in</span>
-<a name="l00250"></a>00250 <span class="comment">     * [-180,360].  This may throw an error because of an error reading data</span>
-<a name="l00251"></a>00251 <span class="comment">     * from disk.  However, it will not throw if (\e lat, \e lon) is within a</span>
-<a name="l00252"></a>00252 <span class="comment">     * successfully cached area.</span>
-<a name="l00253"></a>00253 <span class="comment">     **********************************************************************/</span>
-<a name="l00254"></a><a class="code" href="classGeographicLib_1_1Geoid.html#accb63bfbbadae10af79b3a3028a3045a">00254</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real lat, real lon)<span class="keyword"> const </span>{
-<a name="l00255"></a>00255       real gradn, grade;
-<a name="l00256"></a>00256       <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">false</span>, gradn, grade);
-<a name="l00257"></a>00257     }
-<a name="l00258"></a>00258 <span class="comment"></span>
-<a name="l00259"></a>00259 <span class="comment">    /**</span>
-<a name="l00260"></a>00260 <span class="comment">     * Compute the geoid height and gradient at a point</span>
-<a name="l00261"></a>00261 <span class="comment">     *</span>
-<a name="l00262"></a>00262 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00263"></a>00263 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00264"></a>00264 <span class="comment">     * @param[out] gradn northerly gradient (dimensionless).</span>
-<a name="l00265"></a>00265 <span class="comment">     * @param[out] grade easterly gradient (dimensionless).</span>
-<a name="l00266"></a>00266 <span class="comment">     * @return geoid height (meters).</span>
-<a name="l00267"></a>00267 <span class="comment">     *</span>
-<a name="l00268"></a>00268 <span class="comment">     * The latitude should be in [-90, 90] and longitude should be in [-180,</span>
-<a name="l00269"></a>00269 <span class="comment">     * 360].  This may throw an error because of an error reading data from</span>
-<a name="l00270"></a>00270 <span class="comment">     * disk.  However, it will not throw if (\e lat, \e lon) is within a</span>
-<a name="l00271"></a>00271 <span class="comment">     * successfully cached area.</span>
-<a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">00273</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">operator()</a>(real lat, real lon, real& gradn, real& grade)<span class="keyword"> const </span>{
-<a name="l00274"></a>00274       <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">true</span>, gradn, grade);
-<a name="l00275"></a>00275     }
-<a name="l00276"></a>00276 <span class="comment"></span>
-<a name="l00277"></a>00277 <span class="comment">    /**</span>
-<a name="l00278"></a>00278 <span class="comment">     * Convert a height above the geoid to a height above the ellipsoid and</span>
-<a name="l00279"></a>00279 <span class="comment">     * vice versa.</span>
-<a name="l00280"></a>00280 <span class="comment">     *</span>
-<a name="l00281"></a>00281 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00282"></a>00282 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00283"></a>00283 <span class="comment">     * @param[in] h height of the point (degrees).</span>
-<a name="l00284"></a>00284 <span class="comment">     * @param[in] d a Geoid::convertflag specifying the direction of the</span>
-<a name="l00285"></a>00285 <span class="comment">     *   conversion; Geoid::GEOIDTOELLIPSOID means convert a height above the</span>
-<a name="l00286"></a>00286 <span class="comment">     *   geoid to a height above the ellipsoid; Geoid::ELLIPSOIDTOGEOID means</span>
-<a name="l00287"></a>00287 <span class="comment">     *   convert a height above the ellipsoid to a height above the geoid.</span>
-<a name="l00288"></a>00288 <span class="comment">     * @return converted height (meters).</span>
-<a name="l00289"></a>00289 <span class="comment">     **********************************************************************/</span>
-<a name="l00290"></a><a class="code" href="classGeographicLib_1_1Geoid.html#adf98d0f0d881893a4f5ff711a3be0e04">00290</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> ConvertHeight(real lat, real lon, real h,
-<a name="l00291"></a>00291                              <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> d)<span class="keyword"> const </span>{
-<a name="l00292"></a>00292       real gradn, grade;
-<a name="l00293"></a>00293       <span class="keywordflow">return</span> h + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(d) * height(lat, lon, <span class="keyword">true</span>, gradn, grade);
-<a name="l00294"></a>00294     }
-<a name="l00295"></a>00295 <span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment">    ///@}</span>
-<a name="l00297"></a>00297 <span class="comment"></span><span class="comment"></span>
-<a name="l00298"></a>00298 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00299"></a>00299 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00300"></a>00300 <span class="comment">    ///@{</span>
-<a name="l00301"></a>00301 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00302"></a>00302 <span class="comment">     * @return geoid description, if available, in the data file; if</span>
-<a name="l00303"></a>00303 <span class="comment">     *   absent, return "NONE".</span>
-<a name="l00304"></a>00304 <span class="comment">     **********************************************************************/</span>
-<a name="l00305"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">00305</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
-<a name="l00306"></a>00306 <span class="comment"></span>
-<a name="l00307"></a>00307 <span class="comment">    /**</span>
-<a name="l00308"></a>00308 <span class="comment">     * @return date of the data file; if absent, return "UNKNOWN".</span>
-<a name="l00309"></a>00309 <span class="comment">     **********************************************************************/</span>
-<a name="l00310"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">00310</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _datetime; }
+<a name="l00025"></a>00025 <span class="preprocessor">#if !defined(PGM_PIXEL_WIDTH)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="comment">/**</span>
+<a name="l00027"></a>00027 <span class="comment"> * The size of the pixel data in the pgm data files for the geoids.  2</span>
+<a name="l00028"></a>00028 <span class="comment"> * is the standard size corresponding to a maxval 2^16-1.  Setting it</span>
+<a name="l00029"></a>00029 <span class="comment"> * to 4 uses a maxval of 2^32-1 and changes the extension for the data</span>
+<a name="l00030"></a>00030 <span class="comment"> * files from .pgm to .pgm4.  Note that the format of these pgm4 files</span>
+<a name="l00031"></a>00031 <span class="comment"> * is a non-standard extension of the pgm format.</span>
+<a name="l00032"></a>00032 <span class="comment"> **********************************************************************/</span>
+<a name="l00033"></a><a class="code" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">00033</a> <span class="preprocessor">#define PGM_PIXEL_WIDTH 2</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>GeographicLib {
+<a name="l00037"></a>00037 <span class="comment"></span>
+<a name="l00038"></a>00038 <span class="comment">  /**</span>
+<a name="l00039"></a>00039 <span class="comment">   * \brief Looking up the height of the geoid</span>
+<a name="l00040"></a>00040 <span class="comment">   *</span>
+<a name="l00041"></a>00041 <span class="comment">   * This class evaluated the height of one of the standard geoids, EGM84,</span>
+<a name="l00042"></a>00042 <span class="comment">   * EGM96, or EGM2008 by bilinear or cubic interpolation into a rectangular</span>
+<a name="l00043"></a>00043 <span class="comment">   * grid of data.  These geoid models are documented in</span>
+<a name="l00044"></a>00044 <span class="comment">   * - EGM84:</span>
+<a name="l00045"></a>00045 <span class="comment">   *   http://earth-info.nga.mil/GandG/wgs84/gravitymod/wgs84_180/wgs84_180.html</span>
+<a name="l00046"></a>00046 <span class="comment">   * - EGM96:</span>
+<a name="l00047"></a>00047 <span class="comment">   *   http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html</span>
+<a name="l00048"></a>00048 <span class="comment">   * - EGM2008:</span>
+<a name="l00049"></a>00049 <span class="comment">   *   http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008</span>
+<a name="l00050"></a>00050 <span class="comment">   *</span>
+<a name="l00051"></a>00051 <span class="comment">   * The geoids are defined in terms of spherical harmonics.  However in order</span>
+<a name="l00052"></a>00052 <span class="comment">   * to provide a quick and flexible method of evaluating the geoid heights,</span>
+<a name="l00053"></a>00053 <span class="comment">   * this class evaluates the height by interpolation into a grid of</span>
+<a name="l00054"></a>00054 <span class="comment">   * precomputed values.</span>
+<a name="l00055"></a>00055 <span class="comment">   *</span>
+<a name="l00056"></a>00056 <span class="comment">   * See \ref geoid for details of how to install the data sets, the data</span>
+<a name="l00057"></a>00057 <span class="comment">   * format, estimates of the interpolation errors, and how to use caching.</span>
+<a name="l00058"></a>00058 <span class="comment">   *</span>
+<a name="l00059"></a>00059 <span class="comment">   * In addition to returning the geoid height, the gradient of the geoid can</span>
+<a name="l00060"></a>00060 <span class="comment">   * be calculated.  The gradient is defined as the rate of change of the geoid</span>
+<a name="l00061"></a>00061 <span class="comment">   * as a function of position on the ellipsoid.  This uses the parameters for</span>
+<a name="l00062"></a>00062 <span class="comment">   * the WGS84 ellipsoid.  The gradient defined in terms of the interpolated</span>
+<a name="l00063"></a>00063 <span class="comment">   * heights.  As a result of the way that the geoid data is stored, the</span>
+<a name="l00064"></a>00064 <span class="comment">   * calculation of gradients can result in large quantization errors.  This is</span>
+<a name="l00065"></a>00065 <span class="comment">   * particularly acute for fine grids, at high latitudes, and for the easterly</span>
+<a name="l00066"></a>00066 <span class="comment">   * gradient.</span>
+<a name="l00067"></a>00067 <span class="comment">   *</span>
+<a name="l00068"></a>00068 <span class="comment">   * This class is typically \e not thread safe in that a single instantiation</span>
+<a name="l00069"></a>00069 <span class="comment">   * cannot be safely used by multiple threads because of the way the object</span>
+<a name="l00070"></a>00070 <span class="comment">   * reads the data set and because it maintains a single-cell cache.  If</span>
+<a name="l00071"></a>00071 <span class="comment">   * multiple threads need to calculate geoid heights they should all construct</span>
+<a name="l00072"></a>00072 <span class="comment">   * thread-local instantiations.  Alternatively, set the optional \e</span>
+<a name="l00073"></a>00073 <span class="comment">   * threadsafe parameter to true in the constructor.  This causes the</span>
+<a name="l00074"></a>00074 <span class="comment">   * constructor to read all the data into memory and to turn off the</span>
+<a name="l00075"></a>00075 <span class="comment">   * single-cell caching which results in a Geoid object which \e is thread</span>
+<a name="l00076"></a>00076 <span class="comment">   * safe.</span>
+<a name="l00077"></a>00077 <span class="comment">   *</span>
+<a name="l00078"></a>00078 <span class="comment">   * Example of use:</span>
+<a name="l00079"></a>00079 <span class="comment">   * \include example-Geoid.cpp</span>
+<a name="l00080"></a>00080 <span class="comment">   *</span>
+<a name="l00081"></a>00081 <span class="comment">   * <a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility</span>
+<a name="l00082"></a>00082 <span class="comment">   * providing access to the functionality of Geoid.</span>
+<a name="l00083"></a>00083 <span class="comment">   **********************************************************************/</span>
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Geoid {
+<a name="l00086"></a>00086   <span class="keyword">private</span>:
+<a name="l00087"></a>00087     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00088"></a>00088 <span class="preprocessor">#if PGM_PIXEL_WIDTH != 4</span>
+<a name="l00089"></a>00089 <span class="preprocessor"></span>    <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> pixel_t;
+<a name="l00090"></a>00090     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_size_ = 2;
+<a name="l00091"></a>00091     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_max_ = 0xffffu;
+<a name="l00092"></a>00092 <span class="preprocessor">#else</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span>    <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> pixel_t;
+<a name="l00094"></a>00094     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_size_ = 4;
+<a name="l00095"></a>00095     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_max_ = 0xffffffffu;
+<a name="l00096"></a>00096 <span class="preprocessor">#endif</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> stencilsize_ = 12;
+<a name="l00098"></a>00098     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> nterms_ = ((3 + 1) * (3 + 2))/2; <span class="comment">// for a cubic fit</span>
+<a name="l00099"></a>00099     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0_;
+<a name="l00100"></a>00100     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0n_;
+<a name="l00101"></a>00101     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0s_;
+<a name="l00102"></a>00102     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c3_[stencilsize_ * nterms_];
+<a name="l00103"></a>00103     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c3n_[stencilsize_ * nterms_];
+<a name="l00104"></a>00104     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c3s_[stencilsize_ * nterms_];
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106     std::string _name, _dir, _filename;
+<a name="l00107"></a>00107     <span class="keyword">const</span> <span class="keywordtype">bool</span> _cubic;
+<a name="l00108"></a>00108     <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _e2, _degree, _eps;
+<a name="l00109"></a>00109     <span class="keyword">mutable</span> std::ifstream _file;
+<a name="l00110"></a>00110     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _rlonres, _rlatres;
+<a name="l00111"></a>00111     std::string _description, _datetime;
+<a name="l00112"></a>00112     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _offset, _scale, _maxerror, _rmserror;
+<a name="l00113"></a>00113     <span class="keywordtype">int</span> _width, _height;
+<a name="l00114"></a>00114     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> _datastart, _swidth;
+<a name="l00115"></a>00115     <span class="keywordtype">bool</span> _threadsafe;
+<a name="l00116"></a>00116     <span class="comment">// Area cache</span>
+<a name="l00117"></a>00117     <span class="keyword">mutable</span> std::vector< std::vector<pixel_t> > _data;
+<a name="l00118"></a>00118     <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _cache;
+<a name="l00119"></a>00119     <span class="comment">// NE corner and extent of cache</span>
+<a name="l00120"></a>00120     <span class="keyword">mutable</span> <span class="keywordtype">int</span> _xoffset, _yoffset, _xsize, _ysize;
+<a name="l00121"></a>00121     <span class="comment">// Cell cache</span>
+<a name="l00122"></a>00122     <span class="keyword">mutable</span> <span class="keywordtype">int</span> _ix, _iy;
+<a name="l00123"></a>00123     <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _v00, _v01, _v10, _v11;
+<a name="l00124"></a>00124     <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _t[nterms_];
+<a name="l00125"></a>00125     <span class="keywordtype">void</span> filepos(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
+<a name="l00126"></a>00126       _file.seekg(
+<a name="l00127"></a>00127 #<span class="keywordflow">if</span> !(defined(__GNUC__) && __GNUC__ < 4)
+<a name="l00128"></a>00128                   <span class="comment">// g++ 3.x doesn't know about the cast to streamoff.</span>
+<a name="l00129"></a>00129                   std::ios::streamoff
+<a name="l00130"></a>00130 #endif
+<a name="l00131"></a>00131                   (_datastart +
+<a name="l00132"></a>00132                    pixel_size_ * (<span class="keywordtype">unsigned</span>(iy)*_swidth + <span class="keywordtype">unsigned</span>(ix))));
+<a name="l00133"></a>00133     }
+<a name="l00134"></a>00134     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> rawval(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
+<a name="l00135"></a>00135       <span class="keywordflow">if</span> (ix < 0)
+<a name="l00136"></a>00136         ix += _width;
+<a name="l00137"></a>00137       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ix >= _width)
+<a name="l00138"></a>00138         ix -= _width;
+<a name="l00139"></a>00139       <span class="keywordflow">if</span> (_cache && iy >= _yoffset && iy < _yoffset + _ysize &&
+<a name="l00140"></a>00140           ((ix >= _xoffset && ix < _xoffset + _xsize) ||
+<a name="l00141"></a>00141            (ix + _width >= _xoffset && ix + _width < _xoffset + _xsize))) {
+<a name="l00142"></a>00142         <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(_data[iy - _yoffset]
+<a name="l00143"></a>00143                     [ix >= _xoffset ? ix - _xoffset : ix + _width - _xoffset]);
+<a name="l00144"></a>00144       } <span class="keywordflow">else</span> {
+<a name="l00145"></a>00145         <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
+<a name="l00146"></a>00146           iy = iy < 0 ? -iy : 2 * (_height - 1) - iy;
+<a name="l00147"></a>00147           ix += (ix < _width/2 ? 1 : -1) * _width/2;
+<a name="l00148"></a>00148         }
+<a name="l00149"></a>00149         <span class="keywordflow">try</span> {
+<a name="l00150"></a>00150           filepos(ix, iy);
+<a name="l00151"></a>00151           <span class="keywordtype">char</span> a, b;
+<a name="l00152"></a>00152           _file.get(a);
+<a name="l00153"></a>00153           _file.get(b);
+<a name="l00154"></a>00154           <span class="keywordtype">unsigned</span> r = ((<span class="keywordtype">unsigned</span> char)(a) << 8) | (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(b);
+<a name="l00155"></a>00155           <span class="keywordflow">if</span> (pixel_size_ == 4) {
+<a name="l00156"></a>00156             _file.get(a);
+<a name="l00157"></a>00157             _file.get(b);
+<a name="l00158"></a>00158             r = (r << 16) | ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(a) << 8) | (<span class="keywordtype">unsigned</span> char)(b);
+<a name="l00159"></a>00159           }
+<a name="l00160"></a>00160           <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(r);
+<a name="l00161"></a>00161         }
+<a name="l00162"></a>00162         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00163"></a>00163           <span class="comment">// throw GeographicErr("Error reading " + _filename + ": "</span>
+<a name="l00164"></a>00164           <span class="comment">//                      + e.what());</span>
+<a name="l00165"></a>00165           <span class="comment">// triggers complaints about the "binary '+'" under Visual Studio.</span>
+<a name="l00166"></a>00166           <span class="comment">// So use '+=' instead.</span>
+<a name="l00167"></a>00167           std::string err(<span class="stringliteral">"Error reading "</span>);
+<a name="l00168"></a>00168           err += _filename;
+<a name="l00169"></a>00169           err += <span class="stringliteral">": "</span>;
+<a name="l00170"></a>00170           err += e.what();
+<a name="l00171"></a>00171           <span class="keywordflow">throw</span> GeographicErr(err);
+<a name="l00172"></a>00172         }
+<a name="l00173"></a>00173       }
+<a name="l00174"></a>00174     }
+<a name="l00175"></a>00175     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> height(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> gradp,
+<a name="l00176"></a>00176                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grade, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradn) <span class="keyword">const</span>;
+<a name="l00177"></a>00177     Geoid(<span class="keyword">const</span> Geoid&);            <span class="comment">// copy constructor not allowed</span>
+<a name="l00178"></a>00178     Geoid& operator=(<span class="keyword">const</span> Geoid&); <span class="comment">// copy assignment not allowed</span>
+<a name="l00179"></a>00179   <span class="keyword">public</span>:
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment">    /**</span>
+<a name="l00182"></a>00182 <span class="comment">     * Flags indicating conversions between heights above the geoid and heights</span>
+<a name="l00183"></a>00183 <span class="comment">     * above the ellipsoid.</span>
+<a name="l00184"></a>00184 <span class="comment">     **********************************************************************/</span>
+<a name="l00185"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">00185</a>     <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> {<span class="comment"></span>
+<a name="l00186"></a>00186 <span class="comment">      /**</span>
+<a name="l00187"></a>00187 <span class="comment">       * The multiplier for converting from heights above the geoid to heights</span>
+<a name="l00188"></a>00188 <span class="comment">       * above the ellipsoid.</span>
+<a name="l00189"></a>00189 <span class="comment">       **********************************************************************/</span>
+<a name="l00190"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a4a1db06e9dcfa1ebb345c616151ab70d">00190</a>       ELLIPSOIDTOGEOID = -1,<span class="comment"></span>
+<a name="l00191"></a>00191 <span class="comment">      /**</span>
+<a name="l00192"></a>00192 <span class="comment">       * No conversion.</span>
+<a name="l00193"></a>00193 <span class="comment">       **********************************************************************/</span>
+<a name="l00194"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">00194</a>       NONE = 0,<span class="comment"></span>
+<a name="l00195"></a>00195 <span class="comment">      /**</span>
+<a name="l00196"></a>00196 <span class="comment">       * The multiplier for converting from heights above the ellipsoid to</span>
+<a name="l00197"></a>00197 <span class="comment">       * heights above the geoid.</span>
+<a name="l00198"></a>00198 <span class="comment">       **********************************************************************/</span>
+<a name="l00199"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">00199</a>       GEOIDTOELLIPSOID = 1,
+<a name="l00200"></a>00200     };
+<a name="l00201"></a>00201 <span class="comment"></span>
+<a name="l00202"></a>00202 <span class="comment">    /** \name Setting up the geoid</span>
+<a name="l00203"></a>00203 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00204"></a>00204 <span class="comment">    ///@{</span>
+<a name="l00205"></a>00205 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00206"></a>00206 <span class="comment">     * Construct a geoid.</span>
+<a name="l00207"></a>00207 <span class="comment">     *</span>
+<a name="l00208"></a>00208 <span class="comment">     * @param[in] name the name of the geoid.</span>
+<a name="l00209"></a>00209 <span class="comment">     * @param[in] path (optional) directory for data file.</span>
+<a name="l00210"></a>00210 <span class="comment">     * @param[in] cubic (optional) interpolation method; false means bilinear,</span>
+<a name="l00211"></a>00211 <span class="comment">     *   true (the default) means cubic.</span>
+<a name="l00212"></a>00212 <span class="comment">     * @param[in] threadsafe (optional), if true, construct a thread safe</span>
+<a name="l00213"></a>00213 <span class="comment">     *   object.  The default is false</span>
+<a name="l00214"></a>00214 <span class="comment">     *</span>
+<a name="l00215"></a>00215 <span class="comment">     * The data file is formed by appending ".pgm" to the name.  If \e path is</span>
+<a name="l00216"></a>00216 <span class="comment">     * specified (and is non-empty), then the file is loaded from directory, \e</span>
+<a name="l00217"></a>00217 <span class="comment">     * path.  Otherwise the path is given by DefaultGeoidPath().  This may</span>
+<a name="l00218"></a>00218 <span class="comment">     * throw an exception because the file does not exist, is unreadable, or is</span>
+<a name="l00219"></a>00219 <span class="comment">     * corrupt.  If the \e threadsafe parameter is true, the data set is read</span>
+<a name="l00220"></a>00220 <span class="comment">     * into memory (which this may also cause an exception to be thrown), the</span>
+<a name="l00221"></a>00221 <span class="comment">     * data file is closed, and single-cell caching is turned off; this results</span>
+<a name="l00222"></a>00222 <span class="comment">     * in a Geoid object which \e is thread safe.</span>
+<a name="l00223"></a>00223 <span class="comment">     **********************************************************************/</span>
+<a name="l00224"></a>00224     <span class="keyword">explicit</span> Geoid(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
+<a name="l00225"></a>00225                    <span class="keywordtype">bool</span> cubic = <span class="keyword">true</span>, <span class="keywordtype">bool</span> threadsafe = <span class="keyword">false</span>);
+<a name="l00226"></a>00226 <span class="comment"></span>
+<a name="l00227"></a>00227 <span class="comment">    /**</span>
+<a name="l00228"></a>00228 <span class="comment">     * Set up a cache.</span>
+<a name="l00229"></a>00229 <span class="comment">     *</span>
+<a name="l00230"></a>00230 <span class="comment">     * @param[in] south latitude (degrees) of the south edge of the cached area.</span>
+<a name="l00231"></a>00231 <span class="comment">     * @param[in] west longitude (degrees) of the west edge of the cached area.</span>
+<a name="l00232"></a>00232 <span class="comment">     * @param[in] north latitude (degrees) of the north edge of the cached area.</span>
+<a name="l00233"></a>00233 <span class="comment">     * @param[in] east longitude (degrees) of the east edge of the cached area.</span>
+<a name="l00234"></a>00234 <span class="comment">     *</span>
+<a name="l00235"></a>00235 <span class="comment">     * Cache the data for the specified "rectangular" area bounded by the</span>
+<a name="l00236"></a>00236 <span class="comment">     * parallels \e south and \e north and the meridians \e west and \e east.</span>
+<a name="l00237"></a>00237 <span class="comment">     * \e east is always interpreted as being east of \e west, if necessary by</span>
+<a name="l00238"></a>00238 <span class="comment">     * adding 360<sup>o</sup> to its value.  This may throw an error because of</span>
+<a name="l00239"></a>00239 <span class="comment">     * insufficient memory or because of an error reading the data from the</span>
+<a name="l00240"></a>00240 <span class="comment">     * file.  In this case, you can catch the error and either do nothing (you</span>
+<a name="l00241"></a>00241 <span class="comment">     * will have no cache in this case) or try again with a smaller area.  \e</span>
+<a name="l00242"></a>00242 <span class="comment">     * south and \e north should be in the range [-90, 90]; \e west and \e east</span>
+<a name="l00243"></a>00243 <span class="comment">     * should be in the range [-180, 360].  An exception is thrown if this</span>
+<a name="l00244"></a>00244 <span class="comment">     * routine is called on a thread safe Geoid.</span>
+<a name="l00245"></a>00245 <span class="comment">     **********************************************************************/</span>
+<a name="l00246"></a>00246     <span class="keywordtype">void</span> CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> south, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> west, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> north, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> east) <span class="keyword">const</span>;
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment">    /**</span>
+<a name="l00249"></a>00249 <span class="comment">     * Cache all the data.  On most computers, this is fast for data sets with</span>
+<a name="l00250"></a>00250 <span class="comment">     * grid resolution of 5' or coarser.  For a 1' grid, the required RAM is</span>
+<a name="l00251"></a>00251 <span class="comment">     * 450MB; a 2.5' grid needs 72MB; and a 5' grid needs 18MB.  This may throw</span>
+<a name="l00252"></a>00252 <span class="comment">     * an error because of insufficient memory or because of an error reading</span>
+<a name="l00253"></a>00253 <span class="comment">     * the data from the file.  In this case, you can catch the error and</span>
+<a name="l00254"></a>00254 <span class="comment">     * either do nothing (you will have no cache in this case) or try using</span>
+<a name="l00255"></a>00255 <span class="comment">     * Geoid::CacheArea on a specific area.  An exception is thrown if this</span>
+<a name="l00256"></a>00256 <span class="comment">     * routine is called on a thread safe Geoid.</span>
+<a name="l00257"></a>00257 <span class="comment">     **********************************************************************/</span>
+<a name="l00258"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">00258</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>()<span class="keyword"> const </span>{ CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
+<a name="l00259"></a>00259                                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360)); }
+<a name="l00260"></a>00260 <span class="comment"></span>
+<a name="l00261"></a>00261 <span class="comment">    /**</span>
+<a name="l00262"></a>00262 <span class="comment">     * Clear the cache.  This never throws an error.  (This does nothing with a</span>
+<a name="l00263"></a>00263 <span class="comment">     * thread safe Geoid.)</span>
+<a name="l00264"></a>00264 <span class="comment">     **********************************************************************/</span>
+<a name="l00265"></a>00265     <span class="keywordtype">void</span> CacheClear() <span class="keyword">const</span> throw();
+<a name="l00266"></a>00266 <span class="comment"></span>
+<a name="l00267"></a>00267 <span class="comment">    ///@}</span>
+<a name="l00268"></a>00268 <span class="comment"></span><span class="comment"></span>
+<a name="l00269"></a>00269 <span class="comment">    /** \name Compute geoid heights</span>
+<a name="l00270"></a>00270 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00271"></a>00271 <span class="comment">    ///@{</span>
+<a name="l00272"></a>00272 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00273"></a>00273 <span class="comment">     * Compute the geoid height at a point</span>
+<a name="l00274"></a>00274 <span class="comment">     *</span>
+<a name="l00275"></a>00275 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00276"></a>00276 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00277"></a>00277 <span class="comment">     * @return geoid height (meters).</span>
+<a name="l00278"></a>00278 <span class="comment">     *</span>
+<a name="l00279"></a>00279 <span class="comment">     * The latitude should be in [-90, 90] and longitude should be in</span>
+<a name="l00280"></a>00280 <span class="comment">     * [-180,360].  This may throw an error because of an error reading data</span>
+<a name="l00281"></a>00281 <span class="comment">     * from disk.  However, it will not throw if (\e lat, \e lon) is within a</span>
+<a name="l00282"></a>00282 <span class="comment">     * successfully cached area.</span>
+<a name="l00283"></a>00283 <span class="comment">     **********************************************************************/</span>
+<a name="l00284"></a><a class="code" href="classGeographicLib_1_1Geoid.html#accb63bfbbadae10af79b3a3028a3045a">00284</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real lat, real lon)<span class="keyword"> const </span>{
+<a name="l00285"></a>00285       real gradn, grade;
+<a name="l00286"></a>00286       <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">false</span>, gradn, grade);
+<a name="l00287"></a>00287     }
+<a name="l00288"></a>00288 <span class="comment"></span>
+<a name="l00289"></a>00289 <span class="comment">    /**</span>
+<a name="l00290"></a>00290 <span class="comment">     * Compute the geoid height and gradient at a point</span>
+<a name="l00291"></a>00291 <span class="comment">     *</span>
+<a name="l00292"></a>00292 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00293"></a>00293 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00294"></a>00294 <span class="comment">     * @param[out] gradn northerly gradient (dimensionless).</span>
+<a name="l00295"></a>00295 <span class="comment">     * @param[out] grade easterly gradient (dimensionless).</span>
+<a name="l00296"></a>00296 <span class="comment">     * @return geoid height (meters).</span>
+<a name="l00297"></a>00297 <span class="comment">     *</span>
+<a name="l00298"></a>00298 <span class="comment">     * The latitude should be in [-90, 90] and longitude should be in [-180,</span>
+<a name="l00299"></a>00299 <span class="comment">     * 360].  This may throw an error because of an error reading data from</span>
+<a name="l00300"></a>00300 <span class="comment">     * disk.  However, it will not throw if (\e lat, \e lon) is within a</span>
+<a name="l00301"></a>00301 <span class="comment">     * successfully cached area.  As a result of the way that the geoid data is</span>
+<a name="l00302"></a>00302 <span class="comment">     * stored, the calculation of gradients can result in large quantization</span>
+<a name="l00303"></a>00303 <span class="comment">     * errors.  This is particularly acute for fine grids, at high latitudes,</span>
+<a name="l00304"></a>00304 <span class="comment">     * and for the easterly gradient.  If you need to compute the direction of</span>
+<a name="l00305"></a>00305 <span class="comment">     * the acceleration due to gravity accurately, you should use</span>
+<a name="l00306"></a>00306 <span class="comment">     * GravityModel::Gravity.</span>
+<a name="l00307"></a>00307 <span class="comment">     **********************************************************************/</span>
+<a name="l00308"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">00308</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">operator()</a>(real lat, real lon, real& gradn, real& grade)<span class="keyword"> const </span>{
+<a name="l00309"></a>00309       <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">true</span>, gradn, grade);
+<a name="l00310"></a>00310     }
 <a name="l00311"></a>00311 <span class="comment"></span>
 <a name="l00312"></a>00312 <span class="comment">    /**</span>
-<a name="l00313"></a>00313 <span class="comment">     * @return full file name used to load the geoid data.</span>
-<a name="l00314"></a>00314 <span class="comment">     **********************************************************************/</span>
-<a name="l00315"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">00315</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
-<a name="l00316"></a>00316 <span class="comment"></span>
-<a name="l00317"></a>00317 <span class="comment">    /**</span>
-<a name="l00318"></a>00318 <span class="comment">     * @return "name" used to load the geoid data (from the first argument of</span>
-<a name="l00319"></a>00319 <span class="comment">     *   the constructor).</span>
-<a name="l00320"></a>00320 <span class="comment">     **********************************************************************/</span>
-<a name="l00321"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">00321</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">GeoidName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
-<a name="l00322"></a>00322 <span class="comment"></span>
-<a name="l00323"></a>00323 <span class="comment">    /**</span>
-<a name="l00324"></a>00324 <span class="comment">     * @return directory used to load the geoid data.</span>
-<a name="l00325"></a>00325 <span class="comment">     **********************************************************************/</span>
-<a name="l00326"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">00326</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">GeoidDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
-<a name="l00327"></a>00327 <span class="comment"></span>
-<a name="l00328"></a>00328 <span class="comment">    /**</span>
-<a name="l00329"></a>00329 <span class="comment">     * @return interpolation method ("cubic" or "bilinear").</span>
-<a name="l00330"></a>00330 <span class="comment">     **********************************************************************/</span>
-<a name="l00331"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">00331</a>     <span class="keyword">const</span> std::string Interpolation()<span class="keyword"> const</span>
-<a name="l00332"></a>00332 <span class="keyword">    </span>{ <span class="keywordflow">return</span> std::string(_cubic ? <span class="stringliteral">"cubic"</span> : <span class="stringliteral">"bilinear"</span>); }
-<a name="l00333"></a>00333 <span class="comment"></span>
-<a name="l00334"></a>00334 <span class="comment">    /**</span>
-<a name="l00335"></a>00335 <span class="comment">     * @return estimate of the maximum interpolation and quantization error</span>
-<a name="l00336"></a>00336 <span class="comment">     *   (meters).</span>
-<a name="l00337"></a>00337 <span class="comment">     *</span>
-<a name="l00338"></a>00338 <span class="comment">     * This relies on the value being stored in the data file.  If the value is</span>
-<a name="l00339"></a>00339 <span class="comment">     * absent, return -1.</span>
-<a name="l00340"></a>00340 <span class="comment">     **********************************************************************/</span>
-<a name="l00341"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">00341</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _maxerror; }
-<a name="l00342"></a>00342 <span class="comment"></span>
-<a name="l00343"></a>00343 <span class="comment">    /**</span>
-<a name="l00344"></a>00344 <span class="comment">     * @return estimate of the RMS interpolation and quantization error</span>
-<a name="l00345"></a>00345 <span class="comment">     *   (meters).</span>
-<a name="l00346"></a>00346 <span class="comment">     *</span>
-<a name="l00347"></a>00347 <span class="comment">     * This relies on the value being stored in the data file.  If the value is</span>
-<a name="l00348"></a>00348 <span class="comment">     * absent, return -1.</span>
+<a name="l00313"></a>00313 <span class="comment">     * Convert a height above the geoid to a height above the ellipsoid and</span>
+<a name="l00314"></a>00314 <span class="comment">     * vice versa.</span>
+<a name="l00315"></a>00315 <span class="comment">     *</span>
+<a name="l00316"></a>00316 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00317"></a>00317 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00318"></a>00318 <span class="comment">     * @param[in] h height of the point (degrees).</span>
+<a name="l00319"></a>00319 <span class="comment">     * @param[in] d a Geoid::convertflag specifying the direction of the</span>
+<a name="l00320"></a>00320 <span class="comment">     *   conversion; Geoid::GEOIDTOELLIPSOID means convert a height above the</span>
+<a name="l00321"></a>00321 <span class="comment">     *   geoid to a height above the ellipsoid; Geoid::ELLIPSOIDTOGEOID means</span>
+<a name="l00322"></a>00322 <span class="comment">     *   convert a height above the ellipsoid to a height above the geoid.</span>
+<a name="l00323"></a>00323 <span class="comment">     * @return converted height (meters).</span>
+<a name="l00324"></a>00324 <span class="comment">     **********************************************************************/</span>
+<a name="l00325"></a><a class="code" href="classGeographicLib_1_1Geoid.html#adf98d0f0d881893a4f5ff711a3be0e04">00325</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real ConvertHeight(real lat, real lon, real h,
+<a name="l00326"></a>00326                              <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> d)<span class="keyword"> const </span>{
+<a name="l00327"></a>00327       real gradn, grade;
+<a name="l00328"></a>00328       <span class="keywordflow">return</span> h + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(d) * height(lat, lon, <span class="keyword">true</span>, gradn, grade);
+<a name="l00329"></a>00329     }
+<a name="l00330"></a>00330 <span class="comment"></span>
+<a name="l00331"></a>00331 <span class="comment">    ///@}</span>
+<a name="l00332"></a>00332 <span class="comment"></span><span class="comment"></span>
+<a name="l00333"></a>00333 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00334"></a>00334 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00335"></a>00335 <span class="comment">    ///@{</span>
+<a name="l00336"></a>00336 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00337"></a>00337 <span class="comment">     * @return geoid description, if available, in the data file; if</span>
+<a name="l00338"></a>00338 <span class="comment">     *   absent, return "NONE".</span>
+<a name="l00339"></a>00339 <span class="comment">     **********************************************************************/</span>
+<a name="l00340"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">00340</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
+<a name="l00341"></a>00341 <span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment">    /**</span>
+<a name="l00343"></a>00343 <span class="comment">     * @return date of the data file; if absent, return "UNKNOWN".</span>
+<a name="l00344"></a>00344 <span class="comment">     **********************************************************************/</span>
+<a name="l00345"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">00345</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _datetime; }
+<a name="l00346"></a>00346 <span class="comment"></span>
+<a name="l00347"></a>00347 <span class="comment">    /**</span>
+<a name="l00348"></a>00348 <span class="comment">     * @return full file name used to load the geoid data.</span>
 <a name="l00349"></a>00349 <span class="comment">     **********************************************************************/</span>
-<a name="l00350"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">00350</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _rmserror; }
+<a name="l00350"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">00350</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
 <a name="l00351"></a>00351 <span class="comment"></span>
 <a name="l00352"></a>00352 <span class="comment">    /**</span>
-<a name="l00353"></a>00353 <span class="comment">     * @return offset (meters).</span>
-<a name="l00354"></a>00354 <span class="comment">     *</span>
-<a name="l00355"></a>00355 <span class="comment">     * This in used in converting from the pixel values in the data file to</span>
-<a name="l00356"></a>00356 <span class="comment">     * geoid heights.</span>
-<a name="l00357"></a>00357 <span class="comment">     **********************************************************************/</span>
-<a name="l00358"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">00358</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _offset; }
-<a name="l00359"></a>00359 <span class="comment"></span>
-<a name="l00360"></a>00360 <span class="comment">    /**</span>
-<a name="l00361"></a>00361 <span class="comment">     * @return scale (meters).</span>
-<a name="l00362"></a>00362 <span class="comment">     *</span>
-<a name="l00363"></a>00363 <span class="comment">     * This in used in converting from the pixel values in the data file to</span>
-<a name="l00364"></a>00364 <span class="comment">     * geoid heights.</span>
+<a name="l00353"></a>00353 <span class="comment">     * @return "name" used to load the geoid data (from the first argument of</span>
+<a name="l00354"></a>00354 <span class="comment">     *   the constructor).</span>
+<a name="l00355"></a>00355 <span class="comment">     **********************************************************************/</span>
+<a name="l00356"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">00356</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">GeoidName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
+<a name="l00357"></a>00357 <span class="comment"></span>
+<a name="l00358"></a>00358 <span class="comment">    /**</span>
+<a name="l00359"></a>00359 <span class="comment">     * @return directory used to load the geoid data.</span>
+<a name="l00360"></a>00360 <span class="comment">     **********************************************************************/</span>
+<a name="l00361"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">00361</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">GeoidDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
+<a name="l00362"></a>00362 <span class="comment"></span>
+<a name="l00363"></a>00363 <span class="comment">    /**</span>
+<a name="l00364"></a>00364 <span class="comment">     * @return interpolation method ("cubic" or "bilinear").</span>
 <a name="l00365"></a>00365 <span class="comment">     **********************************************************************/</span>
-<a name="l00366"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">00366</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _scale; }
-<a name="l00367"></a>00367 <span class="comment"></span>
-<a name="l00368"></a>00368 <span class="comment">    /**</span>
-<a name="l00369"></a>00369 <span class="comment">     * @return true if the object is constructed to be thread safe.</span>
-<a name="l00370"></a>00370 <span class="comment">     **********************************************************************/</span>
-<a name="l00371"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">00371</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">ThreadSafe</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _threadsafe; }
-<a name="l00372"></a>00372 <span class="comment"></span>
-<a name="l00373"></a>00373 <span class="comment">    /**</span>
-<a name="l00374"></a>00374 <span class="comment">     * @return true if a data cache is active.</span>
+<a name="l00366"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">00366</a>     <span class="keyword">const</span> std::string Interpolation()<span class="keyword"> const</span>
+<a name="l00367"></a>00367 <span class="keyword">    </span>{ <span class="keywordflow">return</span> std::string(_cubic ? <span class="stringliteral">"cubic"</span> : <span class="stringliteral">"bilinear"</span>); }
+<a name="l00368"></a>00368 <span class="comment"></span>
+<a name="l00369"></a>00369 <span class="comment">    /**</span>
+<a name="l00370"></a>00370 <span class="comment">     * @return estimate of the maximum interpolation and quantization error</span>
+<a name="l00371"></a>00371 <span class="comment">     *   (meters).</span>
+<a name="l00372"></a>00372 <span class="comment">     *</span>
+<a name="l00373"></a>00373 <span class="comment">     * This relies on the value being stored in the data file.  If the value is</span>
+<a name="l00374"></a>00374 <span class="comment">     * absent, return -1.</span>
 <a name="l00375"></a>00375 <span class="comment">     **********************************************************************/</span>
-<a name="l00376"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">00376</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _cache; }
+<a name="l00376"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">00376</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _maxerror; }
 <a name="l00377"></a>00377 <span class="comment"></span>
 <a name="l00378"></a>00378 <span class="comment">    /**</span>
-<a name="l00379"></a>00379 <span class="comment">     * @return west edge of the cached area; the cache includes this edge.</span>
-<a name="l00380"></a>00380 <span class="comment">     **********************************************************************/</span>
-<a name="l00381"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">00381</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>() <span class="keyword">const</span> throw() {
-<a name="l00382"></a>00382       <span class="keywordflow">return</span> _cache ? ((_xoffset + (_xsize == _width ? 0 : _cubic)
-<a name="l00383"></a>00383                         + _width/2) % _width - _width/2) / _rlonres :
-<a name="l00384"></a>00384         0;
-<a name="l00385"></a>00385     }
+<a name="l00379"></a>00379 <span class="comment">     * @return estimate of the RMS interpolation and quantization error</span>
+<a name="l00380"></a>00380 <span class="comment">     *   (meters).</span>
+<a name="l00381"></a>00381 <span class="comment">     *</span>
+<a name="l00382"></a>00382 <span class="comment">     * This relies on the value being stored in the data file.  If the value is</span>
+<a name="l00383"></a>00383 <span class="comment">     * absent, return -1.</span>
+<a name="l00384"></a>00384 <span class="comment">     **********************************************************************/</span>
+<a name="l00385"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">00385</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _rmserror; }
 <a name="l00386"></a>00386 <span class="comment"></span>
 <a name="l00387"></a>00387 <span class="comment">    /**</span>
-<a name="l00388"></a>00388 <span class="comment">     * @return east edge of the cached area; the cache excludes this edge.</span>
-<a name="l00389"></a>00389 <span class="comment">     **********************************************************************/</span>
-<a name="l00390"></a><a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">00390</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>() <span class="keyword">const</span> throw() {
-<a name="l00391"></a>00391       <span class="keywordflow">return</span>  _cache ?
-<a name="l00392"></a>00392         CacheWest() +
-<a name="l00393"></a>00393         (_xsize - (_xsize == _width ? 0 : 1 + 2 * _cubic)) / _rlonres :
-<a name="l00394"></a>00394         0;
-<a name="l00395"></a>00395     }
-<a name="l00396"></a>00396 <span class="comment"></span>
-<a name="l00397"></a>00397 <span class="comment">    /**</span>
-<a name="l00398"></a>00398 <span class="comment">     * @return north edge of the cached area; the cache includes this edge.</span>
-<a name="l00399"></a>00399 <span class="comment">     **********************************************************************/</span>
-<a name="l00400"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">00400</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() <span class="keyword">const</span> throw() {
-<a name="l00401"></a>00401       <span class="keywordflow">return</span> _cache ? 90 - (_yoffset + _cubic) / _rlatres : 0;
-<a name="l00402"></a>00402     }
-<a name="l00403"></a>00403 <span class="comment"></span>
-<a name="l00404"></a>00404 <span class="comment">    /**</span>
-<a name="l00405"></a>00405 <span class="comment">     * @return south edge of the cached area; the cache excludes this edge</span>
-<a name="l00406"></a>00406 <span class="comment">     *   unless it's the south pole.</span>
-<a name="l00407"></a>00407 <span class="comment">     **********************************************************************/</span>
-<a name="l00408"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">00408</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() <span class="keyword">const</span> throw() {
-<a name="l00409"></a>00409       <span class="keywordflow">return</span> _cache ? 90 - ( _yoffset + _ysize - 1 - _cubic) / _rlatres : 0;
-<a name="l00410"></a>00410     }
-<a name="l00411"></a>00411 <span class="comment"></span>
-<a name="l00412"></a>00412 <span class="comment">    /**</span>
-<a name="l00413"></a>00413 <span class="comment">     * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
-<a name="l00414"></a>00414 <span class="comment">     *</span>
-<a name="l00415"></a>00415 <span class="comment">     * (The WGS84 value is returned because the supported geoid models are all</span>
-<a name="l00416"></a>00416 <span class="comment">     * based on this ellipsoid.)</span>
-<a name="l00417"></a>00417 <span class="comment">     **********************************************************************/</span>
-<a name="l00418"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">00418</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00419"></a>00419     { <span class="keywordflow">return</span> Constants::WGS84_a<real>(); }
-<a name="l00420"></a>00420 <span class="comment"></span>
-<a name="l00421"></a>00421 <span class="comment">    /**</span>
-<a name="l00422"></a>00422 <span class="comment">     * @return \e f the flattening of the WGS84 ellipsoid.</span>
-<a name="l00423"></a>00423 <span class="comment">     *</span>
-<a name="l00424"></a>00424 <span class="comment">     * (The WGS84 value is returned because the supported geoid models are all</span>
-<a name="l00425"></a>00425 <span class="comment">     * based on this ellipsoid.)</span>
-<a name="l00426"></a>00426 <span class="comment">     **********************************************************************/</span>
-<a name="l00427"></a><a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">00427</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> Constants::WGS84_f<real>(); }
-<a name="l00428"></a>00428 <span class="comment"></span>
-<a name="l00429"></a>00429 <span class="comment">    /**</span>
-<a name="l00430"></a>00430 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00431"></a>00431 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00432"></a>00432 <span class="comment">     **********************************************************************/</span>
-<a name="l00433"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">00433</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00434"></a>00434     { <span class="keywordflow">return</span> 1/Constants::WGS84_f<real>(); }<span class="comment"></span>
-<a name="l00435"></a>00435 <span class="comment">    ///@}</span>
-<a name="l00436"></a>00436 <span class="comment"></span><span class="comment"></span>
-<a name="l00437"></a>00437 <span class="comment">    /**</span>
-<a name="l00438"></a>00438 <span class="comment">     * @return the default path for geoid data files.</span>
-<a name="l00439"></a>00439 <span class="comment">     *</span>
-<a name="l00440"></a>00440 <span class="comment">     * This is the value of the environment variable GEOID_PATH, if set;</span>
-<a name="l00441"></a>00441 <span class="comment">     * otherwise, it is $GEOGRAPHICLIB_DATA/geoids if the environment variable</span>
-<a name="l00442"></a>00442 <span class="comment">     * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
-<a name="l00443"></a>00443 <span class="comment">     * (/usr/local/share/GeographicLib/geoids on non-Windows systems and</span>
-<a name="l00444"></a>00444 <span class="comment">     * C:/Documents and Settings/All Users/Application</span>
-<a name="l00445"></a>00445 <span class="comment">     * Data/GeographicLib/geoids on Windows systems).</span>
-<a name="l00446"></a>00446 <span class="comment">     **********************************************************************/</span>
-<a name="l00447"></a>00447     <span class="keyword">static</span> std::string DefaultGeoidPath();
-<a name="l00448"></a>00448 <span class="comment"></span>
-<a name="l00449"></a>00449 <span class="comment">    /**</span>
-<a name="l00450"></a>00450 <span class="comment">     * @return the default name for the geoid.</span>
-<a name="l00451"></a>00451 <span class="comment">     *</span>
-<a name="l00452"></a>00452 <span class="comment">     * This is the value of the environment variable GEOID_NAME, if set,</span>
-<a name="l00453"></a>00453 <span class="comment">     * otherwise, it is "egm96-5".  The Geoid class does not use this function;</span>
-<a name="l00454"></a>00454 <span class="comment">     * it is just provided as a convenience for a calling program when</span>
-<a name="l00455"></a>00455 <span class="comment">     * constructing a Geoid object.</span>
-<a name="l00456"></a>00456 <span class="comment">     **********************************************************************/</span>
-<a name="l00457"></a>00457     <span class="keyword">static</span> std::string DefaultGeoidName();
-<a name="l00458"></a>00458 
-<a name="l00459"></a>00459   };
-<a name="l00460"></a>00460 
-<a name="l00461"></a>00461 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00462"></a>00462 
-<a name="l00463"></a>00463 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00464"></a>00464 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00465"></a>00465 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00466"></a>00466 <span class="preprocessor"></span>
-<a name="l00467"></a>00467 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEOID_HPP</span>
+<a name="l00388"></a>00388 <span class="comment">     * @return offset (meters).</span>
+<a name="l00389"></a>00389 <span class="comment">     *</span>
+<a name="l00390"></a>00390 <span class="comment">     * This in used in converting from the pixel values in the data file to</span>
+<a name="l00391"></a>00391 <span class="comment">     * geoid heights.</span>
+<a name="l00392"></a>00392 <span class="comment">     **********************************************************************/</span>
+<a name="l00393"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">00393</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _offset; }
+<a name="l00394"></a>00394 <span class="comment"></span>
+<a name="l00395"></a>00395 <span class="comment">    /**</span>
+<a name="l00396"></a>00396 <span class="comment">     * @return scale (meters).</span>
+<a name="l00397"></a>00397 <span class="comment">     *</span>
+<a name="l00398"></a>00398 <span class="comment">     * This in used in converting from the pixel values in the data file to</span>
+<a name="l00399"></a>00399 <span class="comment">     * geoid heights.</span>
+<a name="l00400"></a>00400 <span class="comment">     **********************************************************************/</span>
+<a name="l00401"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">00401</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _scale; }
+<a name="l00402"></a>00402 <span class="comment"></span>
+<a name="l00403"></a>00403 <span class="comment">    /**</span>
+<a name="l00404"></a>00404 <span class="comment">     * @return true if the object is constructed to be thread safe.</span>
+<a name="l00405"></a>00405 <span class="comment">     **********************************************************************/</span>
+<a name="l00406"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">00406</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">ThreadSafe</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _threadsafe; }
+<a name="l00407"></a>00407 <span class="comment"></span>
+<a name="l00408"></a>00408 <span class="comment">    /**</span>
+<a name="l00409"></a>00409 <span class="comment">     * @return true if a data cache is active.</span>
+<a name="l00410"></a>00410 <span class="comment">     **********************************************************************/</span>
+<a name="l00411"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">00411</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _cache; }
+<a name="l00412"></a>00412 <span class="comment"></span>
+<a name="l00413"></a>00413 <span class="comment">    /**</span>
+<a name="l00414"></a>00414 <span class="comment">     * @return west edge of the cached area; the cache includes this edge.</span>
+<a name="l00415"></a>00415 <span class="comment">     **********************************************************************/</span>
+<a name="l00416"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">00416</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>() <span class="keyword">const</span> throw() {
+<a name="l00417"></a>00417       <span class="keywordflow">return</span> _cache ? ((_xoffset + (_xsize == _width ? 0 : _cubic)
+<a name="l00418"></a>00418                         + _width/2) % _width - _width/2) / _rlonres :
+<a name="l00419"></a>00419         0;
+<a name="l00420"></a>00420     }
+<a name="l00421"></a>00421 <span class="comment"></span>
+<a name="l00422"></a>00422 <span class="comment">    /**</span>
+<a name="l00423"></a>00423 <span class="comment">     * @return east edge of the cached area; the cache excludes this edge.</span>
+<a name="l00424"></a>00424 <span class="comment">     **********************************************************************/</span>
+<a name="l00425"></a><a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">00425</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>() <span class="keyword">const</span> throw() {
+<a name="l00426"></a>00426       <span class="keywordflow">return</span>  _cache ?
+<a name="l00427"></a>00427         CacheWest() +
+<a name="l00428"></a>00428         (_xsize - (_xsize == _width ? 0 : 1 + 2 * _cubic)) / _rlonres :
+<a name="l00429"></a>00429         0;
+<a name="l00430"></a>00430     }
+<a name="l00431"></a>00431 <span class="comment"></span>
+<a name="l00432"></a>00432 <span class="comment">    /**</span>
+<a name="l00433"></a>00433 <span class="comment">     * @return north edge of the cached area; the cache includes this edge.</span>
+<a name="l00434"></a>00434 <span class="comment">     **********************************************************************/</span>
+<a name="l00435"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">00435</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() <span class="keyword">const</span> throw() {
+<a name="l00436"></a>00436       <span class="keywordflow">return</span> _cache ? 90 - (_yoffset + _cubic) / _rlatres : 0;
+<a name="l00437"></a>00437     }
+<a name="l00438"></a>00438 <span class="comment"></span>
+<a name="l00439"></a>00439 <span class="comment">    /**</span>
+<a name="l00440"></a>00440 <span class="comment">     * @return south edge of the cached area; the cache excludes this edge</span>
+<a name="l00441"></a>00441 <span class="comment">     *   unless it's the south pole.</span>
+<a name="l00442"></a>00442 <span class="comment">     **********************************************************************/</span>
+<a name="l00443"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">00443</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() <span class="keyword">const</span> throw() {
+<a name="l00444"></a>00444       <span class="keywordflow">return</span> _cache ? 90 - ( _yoffset + _ysize - 1 - _cubic) / _rlatres : 0;
+<a name="l00445"></a>00445     }
+<a name="l00446"></a>00446 <span class="comment"></span>
+<a name="l00447"></a>00447 <span class="comment">    /**</span>
+<a name="l00448"></a>00448 <span class="comment">     * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
+<a name="l00449"></a>00449 <span class="comment">     *</span>
+<a name="l00450"></a>00450 <span class="comment">     * (The WGS84 value is returned because the supported geoid models are all</span>
+<a name="l00451"></a>00451 <span class="comment">     * based on this ellipsoid.)</span>
+<a name="l00452"></a>00452 <span class="comment">     **********************************************************************/</span>
+<a name="l00453"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">00453</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00454"></a>00454     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(); }
+<a name="l00455"></a>00455 <span class="comment"></span>
+<a name="l00456"></a>00456 <span class="comment">    /**</span>
+<a name="l00457"></a>00457 <span class="comment">     * @return \e f the flattening of the WGS84 ellipsoid.</span>
+<a name="l00458"></a>00458 <span class="comment">     *</span>
+<a name="l00459"></a>00459 <span class="comment">     * (The WGS84 value is returned because the supported geoid models are all</span>
+<a name="l00460"></a>00460 <span class="comment">     * based on this ellipsoid.)</span>
+<a name="l00461"></a>00461 <span class="comment">     **********************************************************************/</span>
+<a name="l00462"></a><a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">00462</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Const [...]
+<a name="l00463"></a>00463 <span class="comment">    ///@}</span>
+<a name="l00464"></a>00464 <span class="comment"></span><span class="comment"></span>
+<a name="l00465"></a>00465 <span class="comment">    /// \cond SKIP</span>
+<a name="l00466"></a>00466 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00467"></a>00467 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00468"></a>00468 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
+<a name="l00469"></a>00469 <span class="comment">     **********************************************************************/</span>
+<a name="l00470"></a>00470     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00471"></a>00471     { <span class="keywordflow">return</span> 1/<a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>(); }<span class="comment"></span>
+<a name="l00472"></a>00472 <span class="comment">    /// \endcond</span>
+<a name="l00473"></a>00473 <span class="comment"></span><span class="comment"></span>
+<a name="l00474"></a>00474 <span class="comment">    /**</span>
+<a name="l00475"></a>00475 <span class="comment">     * @return the default path for geoid data files.</span>
+<a name="l00476"></a>00476 <span class="comment">     *</span>
+<a name="l00477"></a>00477 <span class="comment">     * This is the value of the environment variable GEOID_PATH, if set;</span>
+<a name="l00478"></a>00478 <span class="comment">     * otherwise, it is $GEOGRAPHICLIB_DATA/geoids if the environment variable</span>
+<a name="l00479"></a>00479 <span class="comment">     * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
+<a name="l00480"></a>00480 <span class="comment">     * (/usr/local/share/GeographicLib/geoids on non-Windows systems and</span>
+<a name="l00481"></a>00481 <span class="comment">     * C:/Documents and Settings/All Users/Application</span>
+<a name="l00482"></a>00482 <span class="comment">     * Data/GeographicLib/geoids on Windows systems).</span>
+<a name="l00483"></a>00483 <span class="comment">     **********************************************************************/</span>
+<a name="l00484"></a>00484     <span class="keyword">static</span> std::string DefaultGeoidPath();
+<a name="l00485"></a>00485 <span class="comment"></span>
+<a name="l00486"></a>00486 <span class="comment">    /**</span>
+<a name="l00487"></a>00487 <span class="comment">     * @return the default name for the geoid.</span>
+<a name="l00488"></a>00488 <span class="comment">     *</span>
+<a name="l00489"></a>00489 <span class="comment">     * This is the value of the environment variable GEOID_NAME, if set,</span>
+<a name="l00490"></a>00490 <span class="comment">     * otherwise, it is "egm96-5".  The Geoid class does not use this function;</span>
+<a name="l00491"></a>00491 <span class="comment">     * it is just provided as a convenience for a calling program when</span>
+<a name="l00492"></a>00492 <span class="comment">     * constructing a Geoid object.</span>
+<a name="l00493"></a>00493 <span class="comment">     **********************************************************************/</span>
+<a name="l00494"></a>00494     <span class="keyword">static</span> std::string DefaultGeoidName();
+<a name="l00495"></a>00495 
+<a name="l00496"></a>00496   };
+<a name="l00497"></a>00497 
+<a name="l00498"></a>00498 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00499"></a>00499 
+<a name="l00500"></a>00500 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00501"></a>00501 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00502"></a>00502 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00503"></a>00503 <span class="preprocessor"></span>
+<a name="l00504"></a>00504 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GEOID_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gnomonic_8cpp.html b/doc/html/Gnomonic_8cpp.html
index 7a7d510..097ca39 100644
--- a/doc/html/Gnomonic_8cpp.html
+++ b/doc/html/Gnomonic_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gnomonic.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8cpp.html#ad62c02d3264b4069476f2f1aa21f223e">GEOGRAPHICLIB_GNOMONIC_CPP</a>   "$Id: 1abf2f2ebdc8a805d0d205051120809f0c0e6071 $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gnomonic_8cpp_source.html b/doc/html/Gnomonic_8cpp_source.html
index b9461b3..1e406ae 100644
--- a/doc/html/Gnomonic_8cpp_source.html
+++ b/doc/html/Gnomonic_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gnomonic.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,8 +83,8 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Gnomonic::eps0_ = numeric_limits<real>::epsilon();
-<a name="l00023"></a>00023   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Gnomonic::eps_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(eps0_);
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gnomonic::eps0_ = numeric_limits<real>::epsilon();
+<a name="l00023"></a>00023   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gnomonic::eps_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(eps0_);
 <a name="l00024"></a>00024 
 <a name="l00025"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">00025</a>   <span class="keywordtype">void</span> Gnomonic::Forward(real lat0, real lon0, real lat, real lon,
 <a name="l00026"></a>00026                          real& x, real& y, real& azi, real& rk)
@@ -81,10 +96,10 @@
 <a name="l00032"></a>00032                       t, azi0, azi, m, M, t, t);
 <a name="l00033"></a>00033     rk = M;
 <a name="l00034"></a>00034     <span class="keywordflow">if</span> (M <= 0)
-<a name="l00035"></a>00035       x = y = Math::NaN<real>();
+<a name="l00035"></a>00035       x = y = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00036"></a>00036     <span class="keywordflow">else</span> {
 <a name="l00037"></a>00037       real rho = m/M;
-<a name="l00038"></a>00038       azi0 *= Math::degree<real>();
+<a name="l00038"></a>00038       azi0 *= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00039"></a>00039       x = rho * sin(azi0);
 <a name="l00040"></a>00040       y = rho * cos(azi0);
 <a name="l00041"></a>00041     }
@@ -94,7 +109,7 @@
 <a name="l00045"></a>00045                          real& lat, real& lon, real& azi, real& rk)
 <a name="l00046"></a>00046     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00047"></a>00047     real
-<a name="l00048"></a>00048       azi0 = atan2(x, y) / Math::degree<real>(),
+<a name="l00048"></a>00048       azi0 = atan2(x, y) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00049"></a>00049       rho = Math::hypot(x, y),
 <a name="l00050"></a>00050       s = _a * atan(rho/_a);
 <a name="l00051"></a>00051     <span class="keywordtype">bool</span> little = rho <= _a;
@@ -122,15 +137,20 @@
 <a name="l00073"></a>00073     <span class="keywordflow">if</span> (trip) {
 <a name="l00074"></a>00074       lat = lat1; lon = lon1; azi = azi1; rk = M;
 <a name="l00075"></a>00075     } <span class="keywordflow">else</span>
-<a name="l00076"></a>00076       lat = lon = azi = rk = Math::NaN<real>();
+<a name="l00076"></a>00076       lat = lon = azi = rk = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00077"></a>00077     <span class="keywordflow">return</span>;
 <a name="l00078"></a>00078   }
 <a name="l00079"></a>00079 
 <a name="l00080"></a>00080 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gnomonic_8hpp.html b/doc/html/Gnomonic_8hpp.html
index f9fe7b0..1625eda 100644
--- a/doc/html/Gnomonic_8hpp.html
+++ b/doc/html/Gnomonic_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gnomonic.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,13 +83,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8hpp.html#af85f3f443620d568666f526ee193308a">GEOGRAPHICLIB_GNOMONIC_HPP</a>   "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8hpp.html#af85f3f443620d568666f526ee193308a">GEOGRAPHICLIB_GNOMONIC_HPP</a>   "$Id: f2e7e429e56165c314a518fada607c225132b945 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GNOMONIC_HPP   "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GNOMONIC_HPP   "$Id: f2e7e429e56165c314a518fada607c225132b945 $"</td>
         </tr>
       </table>
 </div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gnomonic_8hpp_source.html b/doc/html/Gnomonic_8hpp_source.html
index 1955842..7634c07 100644
--- a/doc/html/Gnomonic_8hpp_source.html
+++ b/doc/html/Gnomonic_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gnomonic.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GNOMONIC_HPP)</span>
 <a name="l00011"></a><a class="code" href="Gnomonic_8hpp.html#af85f3f443620d568666f526ee193308a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GNOMONIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: f2e7e429e56165c314a518fada607c225132b945 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
@@ -148,131 +163,142 @@
 <a name="l00098"></a>00098 <span class="comment">   *</span>
 <a name="l00099"></a>00099 <span class="comment">   * Example of use:</span>
 <a name="l00100"></a>00100 <span class="comment">   * \include example-Gnomonic.cpp</span>
-<a name="l00101"></a>00101 <span class="comment">   **********************************************************************/</span>
-<a name="l00102"></a>00102 
-<a name="l00103"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html">00103</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> {
-<a name="l00104"></a>00104   <span class="keyword">private</span>:
-<a name="l00105"></a>00105     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00106"></a>00106     <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00107"></a>00107     real _a, _f;
-<a name="l00108"></a>00108     <span class="keyword">static</span> <span class="keyword">const</span> real eps0_;
-<a name="l00109"></a>00109     <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00110"></a>00110     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
-<a name="l00111"></a>00111   <span class="keyword">public</span>:
-<a name="l00112"></a>00112 <span class="comment"></span>
-<a name="l00113"></a>00113 <span class="comment">    /**</span>
-<a name="l00114"></a>00114 <span class="comment">     * Constructor for Gnomonic.</span>
-<a name="l00115"></a>00115 <span class="comment">     *</span>
-<a name="l00116"></a>00116 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00117"></a>00117 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
-<a name="l00118"></a>00118 <span class="comment">     **********************************************************************/</span>
-<a name="l00119"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">00119</a>     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba3 [...]
-<a name="l00120"></a>00120       throw()
-<a name="l00121"></a>00121       : _earth(earth)
-<a name="l00122"></a>00122       , _a(_earth.MajorRadius())
-<a name="l00123"></a>00123       , _f(_earth.Flattening())
-<a name="l00124"></a>00124     {}
-<a name="l00125"></a>00125 <span class="comment"></span>
-<a name="l00126"></a>00126 <span class="comment">    /**</span>
-<a name="l00127"></a>00127 <span class="comment">     * Forward projection, from geographic to gnomonic.</span>
-<a name="l00128"></a>00128 <span class="comment">     *</span>
-<a name="l00129"></a>00129 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00130"></a>00130 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00131"></a>00131 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00132"></a>00132 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00133"></a>00133 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00134"></a>00134 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00135"></a>00135 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00136"></a>00136 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00137"></a>00137 <span class="comment">     *</span>
-<a name="l00138"></a>00138 <span class="comment">     * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
-<a name="l00139"></a>00139 <span class="comment">     * lon should be in the range [-180, 360].  The scale of the projection is</span>
-<a name="l00140"></a>00140 <span class="comment">     * 1/<i>rk</i><sup>2</sup> in the "radial" direction, \e azi clockwise from</span>
-<a name="l00141"></a>00141 <span class="comment">     * true north, and is 1/\e rk in the direction perpendicular to this.  If</span>
-<a name="l00142"></a>00142 <span class="comment">     * the point lies "over the horizon", i.e., if \e rk <= 0, then NaNs are</span>
-<a name="l00143"></a>00143 <span class="comment">     * returned for \e x and \e y (the correct values are returned for \e azi</span>
-<a name="l00144"></a>00144 <span class="comment">     * and \e rk).  A call to Forward followed by a call to Reverse will return</span>
-<a name="l00145"></a>00145 <span class="comment">     * the original (\e lat, \e lon) (to within roundoff) provided the point in</span>
-<a name="l00146"></a>00146 <span class="comment">     * not over the horizon.</span>
-<a name="l00147"></a>00147 <span class="comment">     **********************************************************************/</span>
-<a name="l00148"></a>00148     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
-<a name="l00149"></a>00149                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00150"></a>00150 <span class="comment"></span>
-<a name="l00151"></a>00151 <span class="comment">    /**</span>
-<a name="l00152"></a>00152 <span class="comment">     * Reverse projection, from gnomonic to geographic.</span>
-<a name="l00153"></a>00153 <span class="comment">     *</span>
-<a name="l00154"></a>00154 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00155"></a>00155 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00156"></a>00156 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00157"></a>00157 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00158"></a>00158 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00159"></a>00159 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00160"></a>00160 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00161"></a>00161 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00162"></a>00162 <span class="comment">     *</span>
-<a name="l00163"></a>00163 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00164"></a>00164 <span class="comment">     * range [-180, 360].  \e lat will be in the range [-90, 90] and \e lon</span>
-<a name="l00165"></a>00165 <span class="comment">     * will be in the range [-180, 180).  The scale of the projection is 1/\e</span>
-<a name="l00166"></a>00166 <span class="comment">     * rk<sup>2</sup> in the "radial" direction, \e azi clockwise from true</span>
-<a name="l00167"></a>00167 <span class="comment">     * north, and is 1/\e rk in the direction perpendicular to this.  Even</span>
-<a name="l00168"></a>00168 <span class="comment">     * though all inputs should return a valid \e lat and \e lon, it's possible</span>
-<a name="l00169"></a>00169 <span class="comment">     * that the procedure fails to converge for very large \e x or \e y; in</span>
-<a name="l00170"></a>00170 <span class="comment">     * this case NaNs are returned for all the output arguments.  A call to</span>
-<a name="l00171"></a>00171 <span class="comment">     * Reverse followed by a call to Forward will return the original (\e x, \e</span>
-<a name="l00172"></a>00172 <span class="comment">     * y) (to roundoff).</span>
-<a name="l00173"></a>00173 <span class="comment">     **********************************************************************/</span>
-<a name="l00174"></a>00174     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
-<a name="l00175"></a>00175                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00176"></a>00176 <span class="comment"></span>
-<a name="l00177"></a>00177 <span class="comment">    /**</span>
-<a name="l00178"></a>00178 <span class="comment">     * Gnomonic::Forward without returning the azimuth and scale.</span>
-<a name="l00179"></a>00179 <span class="comment">     **********************************************************************/</span>
-<a name="l00180"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2c08cf2bad190ee9ab88f7d877223208">00180</a>     <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
-<a name="l00181"></a>00181                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00182"></a>00182       real azi, rk;
-<a name="l00183"></a>00183       Forward(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00184"></a>00184     }
-<a name="l00185"></a>00185 <span class="comment"></span>
-<a name="l00186"></a>00186 <span class="comment">    /**</span>
-<a name="l00187"></a>00187 <span class="comment">     * Gnomonic::Reverse without returning the azimuth and scale.</span>
-<a name="l00188"></a>00188 <span class="comment">     **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8700d59a1e244f8dd211e344587dfed3">00189</a>     <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
-<a name="l00190"></a>00190                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00191"></a>00191       real azi, rk;
-<a name="l00192"></a>00192       Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00193"></a>00193     }
-<a name="l00194"></a>00194 <span class="comment"></span>
-<a name="l00195"></a>00195 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00196"></a>00196 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00197"></a>00197 <span class="comment">    ///@{</span>
-<a name="l00198"></a>00198 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00199"></a>00199 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00200"></a>00200 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00201"></a>00201 <span class="comment">     **********************************************************************/</span>
-<a name="l00202"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">00202</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00203"></a>00203 <span class="comment"></span>
-<a name="l00204"></a>00204 <span class="comment">    /**</span>
-<a name="l00205"></a>00205 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00206"></a>00206 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
-<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
-<a name="l00208"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">00208</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00209"></a>00209 <span class="comment"></span>
-<a name="l00210"></a>00210 <span class="comment">    /**</span>
-<a name="l00211"></a>00211 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00212"></a>00212 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00213"></a>00213 <span class="comment">     **********************************************************************/</span>
-<a name="l00214"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">00214</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00215"></a>00215     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00216"></a>00216 <span class="comment">    ///@}</span>
-<a name="l00217"></a>00217 <span class="comment"></span>  };
-<a name="l00218"></a>00218 
-<a name="l00219"></a>00219 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00220"></a>00220 
-<a name="l00221"></a>00221 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GNOMONIC_HPP</span>
+<a name="l00101"></a>00101 <span class="comment">   *</span>
+<a name="l00102"></a>00102 <span class="comment">   * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility</span>
+<a name="l00103"></a>00103 <span class="comment">   * providing access to the functionality of AzimuthalEquidistant, Gnomonic,</span>
+<a name="l00104"></a>00104 <span class="comment">   * and CassiniSoldner.</span>
+<a name="l00105"></a>00105 <span class="comment">   **********************************************************************/</span>
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Gnomonic {
+<a name="l00108"></a>00108   <span class="keyword">private</span>:
+<a name="l00109"></a>00109     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00110"></a>00110     Geodesic _earth;
+<a name="l00111"></a>00111     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f;
+<a name="l00112"></a>00112     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps0_;
+<a name="l00113"></a>00113     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00114"></a>00114     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
+<a name="l00115"></a>00115   <span class="keyword">public</span>:
+<a name="l00116"></a>00116 <span class="comment"></span>
+<a name="l00117"></a>00117 <span class="comment">    /**</span>
+<a name="l00118"></a>00118 <span class="comment">     * Constructor for Gnomonic.</span>
+<a name="l00119"></a>00119 <span class="comment">     *</span>
+<a name="l00120"></a>00120 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00121"></a>00121 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
+<a name="l00122"></a>00122 <span class="comment">     **********************************************************************/</span>
+<a name="l00123"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">00123</a>     <span class="keyword">explicit</span> Gnomonic(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>)
+<a name="l00124"></a>00124       throw()
+<a name="l00125"></a>00125       : _earth(earth)
+<a name="l00126"></a>00126       , _a(_earth.MajorRadius())
+<a name="l00127"></a>00127       , _f(_earth.Flattening())
+<a name="l00128"></a>00128     {}
+<a name="l00129"></a>00129 <span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment">    /**</span>
+<a name="l00131"></a>00131 <span class="comment">     * Forward projection, from geographic to gnomonic.</span>
+<a name="l00132"></a>00132 <span class="comment">     *</span>
+<a name="l00133"></a>00133 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00134"></a>00134 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00135"></a>00135 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00136"></a>00136 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00137"></a>00137 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00138"></a>00138 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00139"></a>00139 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00140"></a>00140 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00141"></a>00141 <span class="comment">     *</span>
+<a name="l00142"></a>00142 <span class="comment">     * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
+<a name="l00143"></a>00143 <span class="comment">     * lon should be in the range [-180, 360].  The scale of the projection is</span>
+<a name="l00144"></a>00144 <span class="comment">     * 1/<i>rk</i><sup>2</sup> in the "radial" direction, \e azi clockwise from</span>
+<a name="l00145"></a>00145 <span class="comment">     * true north, and is 1/\e rk in the direction perpendicular to this.  If</span>
+<a name="l00146"></a>00146 <span class="comment">     * the point lies "over the horizon", i.e., if \e rk <= 0, then NaNs are</span>
+<a name="l00147"></a>00147 <span class="comment">     * returned for \e x and \e y (the correct values are returned for \e azi</span>
+<a name="l00148"></a>00148 <span class="comment">     * and \e rk).  A call to Forward followed by a call to Reverse will return</span>
+<a name="l00149"></a>00149 <span class="comment">     * the original (\e lat, \e lon) (to within roundoff) provided the point in</span>
+<a name="l00150"></a>00150 <span class="comment">     * not over the horizon.</span>
+<a name="l00151"></a>00151 <span class="comment">     **********************************************************************/</span>
+<a name="l00152"></a>00152     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00153"></a>00153                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00154"></a>00154 <span class="comment"></span>
+<a name="l00155"></a>00155 <span class="comment">    /**</span>
+<a name="l00156"></a>00156 <span class="comment">     * Reverse projection, from gnomonic to geographic.</span>
+<a name="l00157"></a>00157 <span class="comment">     *</span>
+<a name="l00158"></a>00158 <span class="comment">     * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00159"></a>00159 <span class="comment">     * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00160"></a>00160 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00161"></a>00161 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00162"></a>00162 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00163"></a>00163 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00164"></a>00164 <span class="comment">     * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00165"></a>00165 <span class="comment">     * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00166"></a>00166 <span class="comment">     *</span>
+<a name="l00167"></a>00167 <span class="comment">     * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00168"></a>00168 <span class="comment">     * range [-180, 360].  \e lat will be in the range [-90, 90] and \e lon</span>
+<a name="l00169"></a>00169 <span class="comment">     * will be in the range [-180, 180).  The scale of the projection is 1/\e</span>
+<a name="l00170"></a>00170 <span class="comment">     * rk<sup>2</sup> in the "radial" direction, \e azi clockwise from true</span>
+<a name="l00171"></a>00171 <span class="comment">     * north, and is 1/\e rk in the direction perpendicular to this.  Even</span>
+<a name="l00172"></a>00172 <span class="comment">     * though all inputs should return a valid \e lat and \e lon, it's possible</span>
+<a name="l00173"></a>00173 <span class="comment">     * that the procedure fails to converge for very large \e x or \e y; in</span>
+<a name="l00174"></a>00174 <span class="comment">     * this case NaNs are returned for all the output arguments.  A call to</span>
+<a name="l00175"></a>00175 <span class="comment">     * Reverse followed by a call to Forward will return the original (\e x, \e</span>
+<a name="l00176"></a>00176 <span class="comment">     * y) (to roundoff).</span>
+<a name="l00177"></a>00177 <span class="comment">     **********************************************************************/</span>
+<a name="l00178"></a>00178     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00179"></a>00179                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment">    /**</span>
+<a name="l00182"></a>00182 <span class="comment">     * Gnomonic::Forward without returning the azimuth and scale.</span>
+<a name="l00183"></a>00183 <span class="comment">     **********************************************************************/</span>
+<a name="l00184"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2c08cf2bad190ee9ab88f7d877223208">00184</a>     <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
+<a name="l00185"></a>00185                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00186"></a>00186       real azi, rk;
+<a name="l00187"></a>00187       Forward(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00188"></a>00188     }
+<a name="l00189"></a>00189 <span class="comment"></span>
+<a name="l00190"></a>00190 <span class="comment">    /**</span>
+<a name="l00191"></a>00191 <span class="comment">     * Gnomonic::Reverse without returning the azimuth and scale.</span>
+<a name="l00192"></a>00192 <span class="comment">     **********************************************************************/</span>
+<a name="l00193"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8700d59a1e244f8dd211e344587dfed3">00193</a>     <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
+<a name="l00194"></a>00194                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00195"></a>00195       real azi, rk;
+<a name="l00196"></a>00196       Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00197"></a>00197     }
+<a name="l00198"></a>00198 <span class="comment"></span>
+<a name="l00199"></a>00199 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00200"></a>00200 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00201"></a>00201 <span class="comment">    ///@{</span>
+<a name="l00202"></a>00202 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00203"></a>00203 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00204"></a>00204 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00205"></a>00205 <span class="comment">     **********************************************************************/</span>
+<a name="l00206"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">00206</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment">    /**</span>
+<a name="l00209"></a>00209 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00210"></a>00210 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
+<a name="l00211"></a>00211 <span class="comment">     **********************************************************************/</span>
+<a name="l00212"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">00212</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment" [...]
+<a name="l00213"></a>00213 <span class="comment">    ///@}</span>
+<a name="l00214"></a>00214 <span class="comment"></span><span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment">    /// \cond SKIP</span>
+<a name="l00216"></a>00216 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00217"></a>00217 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00218"></a>00218 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00219"></a>00219 <span class="comment">     **********************************************************************/</span>
+<a name="l00220"></a>00220     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00221"></a>00221     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment">    /// \endcond</span>
+<a name="l00223"></a>00223 <span class="comment"></span>  };
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GNOMONIC_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gravity.1.html b/doc/html/Gravity.1.html
index c052100..d929096 100644
--- a/doc/html/Gravity.1.html
+++ b/doc/html/Gravity.1.html
@@ -48,8 +48,11 @@
 <p><strong>Gravity</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
 [ <strong>-G</strong> | <strong>-D</strong> | <strong>-A</strong> | <strong>-H</strong> ] [ <strong>-c</strong> <em>lat</em> <em>h</em> ]
 [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -150,6 +153,15 @@ and 4 for the geoid height.</p>
 <p>print information about the gravity model on standard error before
 processing the input.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -175,8 +187,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -257,7 +275,7 @@ terminate; following lines will be converted.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>The gravity field from EGM2008 at the top of Mount Everest</p>
 <pre>
-    echo "27d59'17N" "86d55'32E" 8820 | Gravity -n egm2008
+    echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008
     => -0.00001 0.00103 -9.76782</pre>
 <p>
 </p>
diff --git a/doc/html/GravityCircle_8cpp.html b/doc/html/GravityCircle_8cpp.html
index 2b0c81b..a65abf6 100644
--- a/doc/html/GravityCircle_8cpp.html
+++ b/doc/html/GravityCircle_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityCircle.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -63,10 +78,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8cpp.html#a57d7b0412922810faed5fb35173f561c">GEOGRAPHICLIB_GRAVITYCIRCLE_CPP</a>   "$Id: 94c2bce8fa9f379b5e3d0e176c89b4989762ef3a $"</td></tr>
@@ -109,8 +122,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityCircle_8cpp_source.html b/doc/html/GravityCircle_8cpp_source.html
index 4b271ac..b80904b 100644
--- a/doc/html/GravityCircle_8cpp_source.html
+++ b/doc/html/GravityCircle_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityCircle.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,9 +88,9 @@
 <a name="l00024"></a>00024 
 <a name="l00025"></a>00025   <span class="keyword">using namespace </span>std;
 <a name="l00026"></a>00026 
-<a name="l00027"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">00027</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">GravityCircle::Gravity</a>(real lon, real& gx, real& gy, real& gz)
+<a name="l00027"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">00027</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">GravityCircle::Gravity</a>(real lon, real& gx, real& gy, real& gz)
 <a name="l00028"></a>00028     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00029"></a>00029     real clam, slam, M[Geocentric::dim2_];
+<a name="l00029"></a>00029     real clam, slam, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00030"></a>00030     CircularEngine::cossin(lon, clam, slam);
 <a name="l00031"></a>00031     real Wres = W(clam, slam, gx, gy, gz);
 <a name="l00032"></a>00032     Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
@@ -83,9 +98,9 @@
 <a name="l00034"></a>00034     <span class="keywordflow">return</span> Wres;
 <a name="l00035"></a>00035   }
 <a name="l00036"></a>00036 
-<a name="l00037"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">00037</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GravityCircle::Disturbance</a>(real lon, real& deltax, real& deltay,
+<a name="l00037"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">00037</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GravityCircle::Disturbance</a>(real lon, real& deltax, real& deltay,
 <a name="l00038"></a>00038                                         real& deltaz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00039"></a>00039     real clam, slam, M[Geocentric::dim2_];
+<a name="l00039"></a>00039     real clam, slam, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00040"></a>00040     CircularEngine::cossin(lon, clam, slam);
 <a name="l00041"></a>00041     real Tres = InternalT(clam, slam, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">true</span>);
 <a name="l00042"></a>00042     Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
@@ -93,9 +108,9 @@
 <a name="l00044"></a>00044     <span class="keywordflow">return</span> Tres;
 <a name="l00045"></a>00045   }
 <a name="l00046"></a>00046 
-<a name="l00047"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">00047</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">GravityCircle::GeoidHeight</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00047"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">00047</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">GravityCircle::GeoidHeight</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00048"></a>00048     <span class="keywordflow">if</span> ((_caps & GEOID_HEIGHT) != GEOID_HEIGHT)
-<a name="l00049"></a>00049       <span class="keywordflow">return</span> Math::NaN<real>();
+<a name="l00049"></a>00049       <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00050"></a>00050     real clam, slam, dummy;
 <a name="l00051"></a>00051     CircularEngine::cossin(lon, clam, slam);
 <a name="l00052"></a>00052     real T = InternalT(clam, slam, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">false</span>);
@@ -107,7 +122,7 @@
 <a name="l00058"></a>00058                                        real& Dg01, real& xi, real& eta)
 <a name="l00059"></a>00059     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00060"></a>00060     <span class="keywordflow">if</span> ((_caps & SPHERICAL_ANOMALY) != SPHERICAL_ANOMALY) {
-<a name="l00061"></a>00061       Dg01 = xi = eta = Math::NaN<real>();
+<a name="l00061"></a>00061       Dg01 = xi = eta = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00062"></a>00062       <span class="keywordflow">return</span>;
 <a name="l00063"></a>00063     }
 <a name="l00064"></a>00064     real clam, slam;
@@ -116,7 +131,7 @@
 <a name="l00067"></a>00067       deltax, deltay, deltaz,
 <a name="l00068"></a>00068       T = InternalT(clam, slam, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">false</span>);
 <a name="l00069"></a>00069     <span class="comment">// Rotate cartesian into spherical coordinates</span>
-<a name="l00070"></a>00070     real MC[Geocentric::dim2_];
+<a name="l00070"></a>00070     real MC[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00071"></a>00071     Geocentric::Rotation(_spsi, _cpsi, slam, clam, MC);
 <a name="l00072"></a>00072     Geocentric::Unrotate(MC, deltax, deltay, deltaz, deltax, deltay, deltaz);
 <a name="l00073"></a>00073     <span class="comment">// H+M, Eq 2-151c</span>
@@ -125,7 +140,7 @@
 <a name="l00076"></a>00076     eta = -(deltax/_gamma) / Math::degree<real>();
 <a name="l00077"></a>00077   }
 <a name="l00078"></a>00078 
-<a name="l00079"></a>00079   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityCircle::W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
+<a name="l00079"></a>00079   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityCircle::W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
 <a name="l00080"></a>00080                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00081"></a>00081     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Wres = V(clam, slam, gX, gY, gZ) + _frot * _P / 2;
 <a name="l00082"></a>00082     gX += _frot * clam;
@@ -133,7 +148,7 @@
 <a name="l00084"></a>00084     <span class="keywordflow">return</span> Wres;
 <a name="l00085"></a>00085   }
 <a name="l00086"></a>00086 
-<a name="l00087"></a>00087   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityCircle::V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
+<a name="l00087"></a>00087   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityCircle::V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
 <a name="l00088"></a>00088                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GZ)
 <a name="l00089"></a>00089     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00090"></a>00090     <span class="keywordflow">if</span> ((_caps & GRAVITY) != GRAVITY) {
@@ -150,7 +165,7 @@
 <a name="l00101"></a>00101     <span class="keywordflow">return</span> Vres;
 <a name="l00102"></a>00102   }
 <a name="l00103"></a>00103 
-<a name="l00104"></a>00104   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityCircle::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
+<a name="l00104"></a>00104   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityCircle::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
 <a name="l00105"></a>00105                                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaZ,
 <a name="l00106"></a>00106                                       <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00107"></a>00107     <span class="keywordflow">if</span> (gradp) {
@@ -186,8 +201,13 @@
 <a name="l00137"></a>00137 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityCircle_8hpp.html b/doc/html/GravityCircle_8hpp.html
index 156b05d..a25f4b4 100644
--- a/doc/html/GravityCircle_8hpp.html
+++ b/doc/html/GravityCircle_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityCircle.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,13 +85,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8hpp.html#a07d4fadabf913f2115556a6de80f6115">GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</a>   "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8hpp.html#a07d4fadabf913f2115556a6de80f6115">GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</a>   "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
@@ -89,7 +102,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP   "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP   "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"</td>
         </tr>
       </table>
 </div>
@@ -100,8 +113,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityCircle_8hpp_source.html b/doc/html/GravityCircle_8hpp_source.html
index 78be361..1683687 100644
--- a/doc/html/GravityCircle_8hpp_source.html
+++ b/doc/html/GravityCircle_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityCircle.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GRAVITYCIRCLE_HPP)</span>
 <a name="l00011"></a><a class="code" href="GravityCircle_8hpp.html#a07d4fadabf913f2115556a6de80f6115">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <vector></span>
@@ -85,274 +100,282 @@
 <a name="l00035"></a>00035 <span class="comment">   *</span>
 <a name="l00036"></a>00036 <span class="comment">   * Example of use:</span>
 <a name="l00037"></a>00037 <span class="comment">   * \include example-GravityCircle.cpp</span>
-<a name="l00038"></a>00038 <span class="comment">   **********************************************************************/</span>
-<a name="l00039"></a>00039 
-<a name="l00040"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html">00040</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> {
-<a name="l00041"></a>00041   <span class="keyword">private</span>:
-<a name="l00042"></a>00042     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00043"></a>00043     <span class="keyword">enum</span> mask {
-<a name="l00044"></a>00044       NONE                 = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365add4ee1aa94e38a8283826704105dc2e1">GravityModel::NONE</a>,
-<a name="l00045"></a>00045       GRAVITY              = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">GravityModel::GRAVITY</a>,
-<a name="l00046"></a>00046       DISTURBANCE          = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">GravityModel::DISTURBANCE</a>,
-<a name="l00047"></a>00047       DISTURBING_POTENTIAL = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">GravityModel::DISTURBING_POTENTIAL</a>,
-<a name="l00048"></a>00048       GEOID_HEIGHT         = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">GravityModel::GEOID_HEIGHT</a>,
-<a name="l00049"></a>00049       SPHERICAL_ANOMALY    = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">GravityModel::SPHERICAL_ANOMALY</a>,
-<a name="l00050"></a>00050       ALL                  = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a8e0e6b9a6d629d05f22f41996fe98068">GravityModel::ALL</a>,
-<a name="l00051"></a>00051     };
-<a name="l00052"></a>00052 
-<a name="l00053"></a>00053     <span class="keywordtype">unsigned</span> _caps;
-<a name="l00054"></a>00054     real _a, _f, _lat, _h, _Z, _P, _invR, _cpsi, _spsi,
-<a name="l00055"></a>00055       _cphi, _sphi, _amodel, _GMmodel, _dzonal0,
-<a name="l00056"></a>00056       _corrmult, _gamma0, _gamma, _frot;
-<a name="l00057"></a>00057     <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> _gravitational, _disturbing, _correction;
-<a name="l00058"></a>00058 
-<a name="l00059"></a>00059     <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>(mask caps, real a, real f, real lat, real h,
-<a name="l00060"></a>00060                   real Z, real P, real cphi, real sphi,
-<a name="l00061"></a>00061                   real amodel, real GMmodel, real dzonal0, real corrmult,
-<a name="l00062"></a>00062                   real gamma0, real gamma, real frot,
-<a name="l00063"></a>00063                   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& gravitational,
-<a name="l00064"></a>00064                   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& disturbing,
-<a name="l00065"></a>00065                   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& correction)
-<a name="l00066"></a>00066       : _caps(caps)
-<a name="l00067"></a>00067       , _a(a)
-<a name="l00068"></a>00068       , _f(f)
-<a name="l00069"></a>00069       , _lat(lat)
-<a name="l00070"></a>00070       , _h(h)
-<a name="l00071"></a>00071       , _Z(Z)
-<a name="l00072"></a>00072       , _P(P)
-<a name="l00073"></a>00073       , _invR(<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(_P, _Z))
-<a name="l00074"></a>00074       , _cpsi(_P * _invR)
-<a name="l00075"></a>00075       , _spsi(_Z * _invR)
-<a name="l00076"></a>00076       , _cphi(cphi)
-<a name="l00077"></a>00077       , _sphi(sphi)
-<a name="l00078"></a>00078       , _amodel(amodel)
-<a name="l00079"></a>00079       , _GMmodel(GMmodel)
-<a name="l00080"></a>00080       , _dzonal0(dzonal0)
-<a name="l00081"></a>00081       , _corrmult(corrmult)
-<a name="l00082"></a>00082       , _gamma0(gamma0)
-<a name="l00083"></a>00083       , _gamma(gamma)
-<a name="l00084"></a>00084       , _frot(frot)
-<a name="l00085"></a>00085       , _gravitational(gravitational)
-<a name="l00086"></a>00086       , _disturbing(disturbing)
-<a name="l00087"></a>00087       , _correction(correction)
-<a name="l00088"></a>00088     {}
-<a name="l00089"></a>00089 
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ada1db1d9f480d8044753ed869c995519">00090</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>; <span class="comment">// GravityModel calls the private constructor</span>
-<a name="l00091"></a>00091     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> W(real clam, real slam,
-<a name="l00092"></a>00092                  real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00093"></a>00093     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> V(real clam, real slam,
-<a name="l00094"></a>00094                  real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00095"></a>00095     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InternalT(real clam, real slam,
-<a name="l00096"></a>00096                          real& deltaX, real& deltaY, real& deltaZ,
-<a name="l00097"></a>00097                          <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00098"></a>00098   <span class="keyword">public</span>:<span class="comment"></span>
-<a name="l00099"></a>00099 <span class="comment">    /**</span>
-<a name="l00100"></a>00100 <span class="comment">     * A default constructor for the normal gravity.  This sets up an</span>
-<a name="l00101"></a>00101 <span class="comment">     * uninitialized object which can be later replaced by the</span>
-<a name="l00102"></a>00102 <span class="comment">     * GravityModel::Circle.</span>
-<a name="l00103"></a>00103 <span class="comment">     **********************************************************************/</span>
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">00104</a>     <a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">GravityCircle</a>() : _a(-1) {}
-<a name="l00105"></a>00105 <span class="comment"></span>
-<a name="l00106"></a>00106 <span class="comment">    /** \name Compute the gravitational field</span>
-<a name="l00107"></a>00107 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00108"></a>00108 <span class="comment">    ///@{</span>
-<a name="l00109"></a>00109 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00110"></a>00110 <span class="comment">     * Evaluate the gravity.</span>
-<a name="l00111"></a>00111 <span class="comment">     *</span>
-<a name="l00112"></a>00112 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00113"></a>00113 <span class="comment">     * @param[out] gx the easterly component of the acceleration</span>
-<a name="l00114"></a>00114 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00115"></a>00115 <span class="comment">     * @param[out] gy the northerly component of the acceleration</span>
-<a name="l00116"></a>00116 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00117"></a>00117 <span class="comment">     * @param[out] gz the upward component of the acceleration</span>
-<a name="l00118"></a>00118 <span class="comment">     *   (m s<sup>-2</sup>); this is usually negative.</span>
-<a name="l00119"></a>00119 <span class="comment">     * @return \e W the sum of the gravitational and centrifugal potentials.</span>
-<a name="l00120"></a>00120 <span class="comment">     *</span>
-<a name="l00121"></a>00121 <span class="comment">     * The function includes the effects of the earth's rotation.</span>
-<a name="l00122"></a>00122 <span class="comment">     **********************************************************************/</span>
-<a name="l00123"></a>00123     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gy, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>&am [...]
-<a name="l00124"></a>00124 <span class="comment"></span>
-<a name="l00125"></a>00125 <span class="comment">    /**</span>
-<a name="l00126"></a>00126 <span class="comment">     * Evaluate the gravity disturbance vector.</span>
-<a name="l00127"></a>00127 <span class="comment">     *</span>
-<a name="l00128"></a>00128 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00129"></a>00129 <span class="comment">     * @param[out] deltax the easterly component of the disturbance vector</span>
-<a name="l00130"></a>00130 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00131"></a>00131 <span class="comment">     * @param[out] deltay the northerly component of the disturbance vector</span>
-<a name="l00132"></a>00132 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00133"></a>00133 <span class="comment">     * @param[out] deltaz the upward component of the disturbance vector</span>
-<a name="l00134"></a>00134 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00135"></a>00135 <span class="comment">     * @return \e T the corresponding disturbing potential.</span>
-<a name="l00136"></a>00136 <span class="comment">     **********************************************************************/</span>
-<a name="l00137"></a>00137     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9" [...]
-<a name="l00138"></a>00138       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00139"></a>00139 <span class="comment"></span>
-<a name="l00140"></a>00140 <span class="comment">    /**</span>
-<a name="l00141"></a>00141 <span class="comment">     * Evaluate the geoid height.</span>
-<a name="l00142"></a>00142 <span class="comment">     *</span>
-<a name="l00143"></a>00143 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00144"></a>00144 <span class="comment">     * @return \e N the height of the geoid above the reference ellipsoid</span>
-<a name="l00145"></a>00145 <span class="comment">     *   (meters).</span>
-<a name="l00146"></a>00146 <span class="comment">     *</span>
-<a name="l00147"></a>00147 <span class="comment">     * Some approximations are made in computing the geoid height so that the</span>
-<a name="l00148"></a>00148 <span class="comment">     * results of the NGA codes are reproduced accurately.  Details are given</span>
-<a name="l00149"></a>00149 <span class="comment">     * in \ref gravitygeoid.</span>
-<a name="l00150"></a>00150 <span class="comment">     **********************************************************************/</span>
-<a name="l00151"></a>00151     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00152"></a>00152 <span class="comment"></span>
-<a name="l00153"></a>00153 <span class="comment">    /**</span>
-<a name="l00154"></a>00154 <span class="comment">     * Evaluate the components of the gravity anomaly vector using the</span>
-<a name="l00155"></a>00155 <span class="comment">     * spherical approximation.</span>
-<a name="l00156"></a>00156 <span class="comment">     *</span>
-<a name="l00157"></a>00157 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00158"></a>00158 <span class="comment">     * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
-<a name="l00159"></a>00159 <span class="comment">     * @param[out] xi the northerly component of the deflection of the vertical</span>
-<a name="l00160"></a>00160 <span class="comment">     *  (degrees).</span>
-<a name="l00161"></a>00161 <span class="comment">     * @param[out] eta the easterly component of the deflection of the vertical</span>
-<a name="l00162"></a>00162 <span class="comment">     *  (degrees).</span>
-<a name="l00163"></a>00163 <span class="comment">     *</span>
-<a name="l00164"></a>00164 <span class="comment">     * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
-<a name="l00165"></a>00165 <span class="comment">     * so that the results of the NGA codes are reproduced accurately.</span>
-<a name="l00166"></a>00166 <span class="comment">     * approximations used here.  Details are given in \ref gravitygeoid.</span>
-<a name="l00167"></a>00167 <span class="comment">     **********************************************************************/</span>
-<a name="l00168"></a>00168     <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta)
-<a name="l00169"></a>00169       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00170"></a>00170 <span class="comment"></span>
-<a name="l00171"></a>00171 <span class="comment">    /**</span>
-<a name="l00172"></a>00172 <span class="comment">     * Evaluate the components of the acceleration due to gravity and the</span>
-<a name="l00173"></a>00173 <span class="comment">     * centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00174"></a>00174 <span class="comment">     *</span>
-<a name="l00175"></a>00175 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00176"></a>00176 <span class="comment">     * @param[out] gX the \e X component of the acceleration</span>
-<a name="l00177"></a>00177 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00178"></a>00178 <span class="comment">     * @param[out] gY the \e Y component of the acceleration</span>
-<a name="l00179"></a>00179 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00180"></a>00180 <span class="comment">     * @param[out] gZ the \e Z component of the acceleration</span>
-<a name="l00181"></a>00181 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00182"></a>00182 <span class="comment">     * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
-<a name="l00183"></a>00183 <span class="comment">     *   centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00184"></a>00184 <span class="comment">     **********************************************************************/</span>
-<a name="l00185"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">00185</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">W</a>(real lon, real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00186"></a>00186       real clam, slam;
-<a name="l00187"></a>00187       CircularEngine::cossin(lon, clam, slam);
-<a name="l00188"></a>00188       <span class="keywordflow">return</span> W(clam, slam, gX, gY, gZ);
-<a name="l00189"></a>00189     }
-<a name="l00190"></a>00190 <span class="comment"></span>
-<a name="l00191"></a>00191 <span class="comment">    /**</span>
-<a name="l00192"></a>00192 <span class="comment">     * Evaluate the components of the acceleration due to gravity in geocentric</span>
-<a name="l00193"></a>00193 <span class="comment">     * coordinates.</span>
-<a name="l00194"></a>00194 <span class="comment">     *</span>
-<a name="l00195"></a>00195 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00196"></a>00196 <span class="comment">     * @param[out] GX the \e X component of the acceleration</span>
-<a name="l00197"></a>00197 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00198"></a>00198 <span class="comment">     * @param[out] GY the \e Y component of the acceleration</span>
-<a name="l00199"></a>00199 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00200"></a>00200 <span class="comment">     * @param[out] GZ the \e Z component of the acceleration</span>
-<a name="l00201"></a>00201 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00202"></a>00202 <span class="comment">     * @return \e V = \e W - \e Phi the gravitational potential</span>
-<a name="l00203"></a>00203 <span class="comment">     *   (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00204"></a>00204 <span class="comment">     **********************************************************************/</span>
-<a name="l00205"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">00205</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">V</a>(real lon, real& GX, real& GY, real& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00206"></a>00206       real clam, slam;
-<a name="l00207"></a>00207       CircularEngine::cossin(lon, clam, slam);
-<a name="l00208"></a>00208       <span class="keywordflow">return</span> V(clam, slam, GX, GY, GZ);
-<a name="l00209"></a>00209     }
-<a name="l00210"></a>00210 
-<a name="l00211"></a>00211 <span class="comment"></span>
-<a name="l00212"></a>00212 <span class="comment">    /**</span>
-<a name="l00213"></a>00213 <span class="comment">     * Evaluate the components of the gravity disturbance in geocentric</span>
-<a name="l00214"></a>00214 <span class="comment">     * coordinates.</span>
-<a name="l00215"></a>00215 <span class="comment">     *</span>
-<a name="l00216"></a>00216 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00217"></a>00217 <span class="comment">     * @param[out] deltaX the \e X component of the gravity disturbance</span>
-<a name="l00218"></a>00218 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00219"></a>00219 <span class="comment">     * @param[out] deltaY the \e Y component of the gravity disturbance</span>
-<a name="l00220"></a>00220 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00221"></a>00221 <span class="comment">     * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
-<a name="l00222"></a>00222 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00223"></a>00223 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00224"></a>00224 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00225"></a>00225 <span class="comment">     **********************************************************************/</span>
-<a name="l00226"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#afae12e4bbf17809f1dd6c32b41dfde03">00226</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> T(real lon, real& deltaX, real& deltaY, real& deltaZ)
-<a name="l00227"></a>00227       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00228"></a>00228       real clam, slam;
-<a name="l00229"></a>00229       CircularEngine::cossin(lon, clam, slam);
-<a name="l00230"></a>00230       <span class="keywordflow">return</span> InternalT(clam, slam, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>);
-<a name="l00231"></a>00231     }
-<a name="l00232"></a>00232 <span class="comment"></span>
-<a name="l00233"></a>00233 <span class="comment">    /**</span>
-<a name="l00234"></a>00234 <span class="comment">     * Evaluate disturbing potential in geocentric coordinates.</span>
-<a name="l00235"></a>00235 <span class="comment">     *</span>
-<a name="l00236"></a>00236 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00237"></a>00237 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00238"></a>00238 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00239"></a>00239 <span class="comment">     **********************************************************************/</span>
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">00240</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">T</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00241"></a>00241       real clam, slam, dummy;
-<a name="l00242"></a>00242       CircularEngine::cossin(lon, clam, slam);
-<a name="l00243"></a>00243       <span class="keywordflow">return</span> InternalT(clam, slam, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
-<a name="l00244"></a>00244     }
-<a name="l00245"></a>00245 <span class="comment"></span>
-<a name="l00246"></a>00246 <span class="comment">    ///@}</span>
-<a name="l00247"></a>00247 <span class="comment"></span><span class="comment"></span>
-<a name="l00248"></a>00248 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00249"></a>00249 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment">    ///@{</span>
-<a name="l00251"></a>00251 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00252"></a>00252 <span class="comment">     * @return true if the object has been initialized.</span>
-<a name="l00253"></a>00253 <span class="comment">     **********************************************************************/</span>
-<a name="l00254"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">00254</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }
-<a name="l00255"></a>00255 <span class="comment"></span>
-<a name="l00256"></a>00256 <span class="comment">    /**</span>
-<a name="l00257"></a>00257 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00258"></a>00258 <span class="comment">     *   the value inherited from the GravityModel object used in the</span>
-<a name="l00259"></a>00259 <span class="comment">     *   constructor.</span>
-<a name="l00260"></a>00260 <span class="comment">     **********************************************************************/</span>
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a19c5d003a9981cb3ece5b44ee836553a">00261</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00262"></a>00262     { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
-<a name="l00263"></a>00263 <span class="comment"></span>
-<a name="l00264"></a>00264 <span class="comment">    /**</span>
-<a name="l00265"></a>00265 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00266"></a>00266 <span class="comment">     *   inherited from the GravityModel object used in the constructor.</span>
-<a name="l00267"></a>00267 <span class="comment">     **********************************************************************/</span>
-<a name="l00268"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ad9bfc60d802b662ffc1a41566882b743">00268</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00269"></a>00269     { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
-<a name="l00270"></a>00270 <span class="comment"></span>
-<a name="l00271"></a>00271 <span class="comment">    /**</span>
-<a name="l00272"></a>00272 <span class="comment">     * @return the latitude of the circle (degrees).</span>
-<a name="l00273"></a>00273 <span class="comment">     **********************************************************************/</span>
-<a name="l00274"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a9628e97c53a2532959c5c8af75e1c14b">00274</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Latitude() <span class="keyword">const</span> throw()
-<a name="l00275"></a>00275     { <span class="keywordflow">return</span> Init() ? _lat : Math::NaN<real>(); }
-<a name="l00276"></a>00276 <span class="comment"></span>
-<a name="l00277"></a>00277 <span class="comment">    /**</span>
-<a name="l00278"></a>00278 <span class="comment">     * @return the height of the circle (meters).</span>
-<a name="l00279"></a>00279 <span class="comment">     **********************************************************************/</span>
-<a name="l00280"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a026b2b79ff3ae70b4fee5d9c4d1ffb70">00280</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Height() <span class="keyword">const</span> throw()
-<a name="l00281"></a>00281     { <span class="keywordflow">return</span> Init() ? _h : Math::NaN<real>(); }
-<a name="l00282"></a>00282 <span class="comment"></span>
-<a name="l00283"></a>00283 <span class="comment">    /**</span>
-<a name="l00284"></a>00284 <span class="comment">     * @return \e caps the computational capabilities that this object was</span>
-<a name="l00285"></a>00285 <span class="comment">     *   constructed with.</span>
-<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">00287</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
-<a name="l00288"></a>00288 <span class="comment"></span>
-<a name="l00289"></a>00289 <span class="comment">    /**</span>
-<a name="l00290"></a>00290 <span class="comment">     * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
-<a name="l00291"></a>00291 <span class="comment">     * @return true if the GeodesicLine object has all these capabilities.</span>
-<a name="l00292"></a>00292 <span class="comment">     **********************************************************************/</span>
-<a name="l00293"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">00293</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00294"></a>00294       <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
-<a name="l00295"></a>00295     }<span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment">    ///@}</span>
-<a name="l00297"></a>00297 <span class="comment"></span>  };
-<a name="l00298"></a>00298 
-<a name="l00299"></a>00299 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00300"></a>00300 
-<a name="l00301"></a>00301 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</span>
+<a name="l00038"></a>00038 <span class="comment">   *</span>
+<a name="l00039"></a>00039 <span class="comment">   * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing</span>
+<a name="l00040"></a>00040 <span class="comment">   * access to the functionality of GravityModel and GravityCircle.</span>
+<a name="l00041"></a>00041 <span class="comment">   **********************************************************************/</span>
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GravityCircle {
+<a name="l00044"></a>00044   <span class="keyword">private</span>:
+<a name="l00045"></a>00045     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00046"></a>00046     <span class="keyword">enum</span> mask {
+<a name="l00047"></a>00047       NONE                 = GravityModel::NONE,
+<a name="l00048"></a>00048       GRAVITY              = GravityModel::GRAVITY,
+<a name="l00049"></a>00049       DISTURBANCE          = GravityModel::DISTURBANCE,
+<a name="l00050"></a>00050       DISTURBING_POTENTIAL = GravityModel::DISTURBING_POTENTIAL,
+<a name="l00051"></a>00051       GEOID_HEIGHT         = GravityModel::GEOID_HEIGHT,
+<a name="l00052"></a>00052       SPHERICAL_ANOMALY    = GravityModel::SPHERICAL_ANOMALY,
+<a name="l00053"></a>00053       ALL                  = GravityModel::ALL,
+<a name="l00054"></a>00054     };
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056     <span class="keywordtype">unsigned</span> _caps;
+<a name="l00057"></a>00057     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _lat, _h, _Z, _P, _invR, _cpsi, _spsi,
+<a name="l00058"></a>00058       _cphi, _sphi, _amodel, _GMmodel, _dzonal0,
+<a name="l00059"></a>00059       _corrmult, _gamma0, _gamma, _frot;
+<a name="l00060"></a>00060     CircularEngine _gravitational, _disturbing, _correction;
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062     GravityCircle(mask caps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
+<a name="l00063"></a>00063                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> P, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi,
+<a name="l00064"></a>00064                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> amodel, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> GMmodel, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dzonal0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> corrmult,
+<a name="l00065"></a>00065                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> frot,
+<a name="l00066"></a>00066                   <span class="keyword">const</span> CircularEngine& gravitational,
+<a name="l00067"></a>00067                   <span class="keyword">const</span> CircularEngine& disturbing,
+<a name="l00068"></a>00068                   <span class="keyword">const</span> CircularEngine& correction)
+<a name="l00069"></a>00069       : _caps(caps)
+<a name="l00070"></a>00070       , _a(a)
+<a name="l00071"></a>00071       , _f(f)
+<a name="l00072"></a>00072       , _lat(lat)
+<a name="l00073"></a>00073       , _h(h)
+<a name="l00074"></a>00074       , _Z(Z)
+<a name="l00075"></a>00075       , _P(P)
+<a name="l00076"></a>00076       , _invR(<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(_P, _Z))
+<a name="l00077"></a>00077       , _cpsi(_P * _invR)
+<a name="l00078"></a>00078       , _spsi(_Z * _invR)
+<a name="l00079"></a>00079       , _cphi(cphi)
+<a name="l00080"></a>00080       , _sphi(sphi)
+<a name="l00081"></a>00081       , _amodel(amodel)
+<a name="l00082"></a>00082       , _GMmodel(GMmodel)
+<a name="l00083"></a>00083       , _dzonal0(dzonal0)
+<a name="l00084"></a>00084       , _corrmult(corrmult)
+<a name="l00085"></a>00085       , _gamma0(gamma0)
+<a name="l00086"></a>00086       , _gamma(gamma)
+<a name="l00087"></a>00087       , _frot(frot)
+<a name="l00088"></a>00088       , _gravitational(gravitational)
+<a name="l00089"></a>00089       , _disturbing(disturbing)
+<a name="l00090"></a>00090       , _correction(correction)
+<a name="l00091"></a>00091     {}
+<a name="l00092"></a>00092 
+<a name="l00093"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ada1db1d9f480d8044753ed869c995519">00093</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>; <span class="comment">// GravityModel calls the private constructor</span>
+<a name="l00094"></a>00094     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real W(real clam, real slam,
+<a name="l00095"></a>00095                  real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00096"></a>00096     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real V(real clam, real slam,
+<a name="l00097"></a>00097                  real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00098"></a>00098     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real InternalT(real clam, real slam,
+<a name="l00099"></a>00099                          real& deltaX, real& deltaY, real& deltaZ,
+<a name="l00100"></a>00100                          <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00101"></a>00101   <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00102"></a>00102 <span class="comment">    /**</span>
+<a name="l00103"></a>00103 <span class="comment">     * A default constructor for the normal gravity.  This sets up an</span>
+<a name="l00104"></a>00104 <span class="comment">     * uninitialized object which can be later replaced by the</span>
+<a name="l00105"></a>00105 <span class="comment">     * GravityModel::Circle.</span>
+<a name="l00106"></a>00106 <span class="comment">     **********************************************************************/</span>
+<a name="l00107"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">00107</a>     <a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">GravityCircle</a>() : _a(-1) {}
+<a name="l00108"></a>00108 <span class="comment"></span>
+<a name="l00109"></a>00109 <span class="comment">    /** \name Compute the gravitational field</span>
+<a name="l00110"></a>00110 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00111"></a>00111 <span class="comment">    ///@{</span>
+<a name="l00112"></a>00112 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00113"></a>00113 <span class="comment">     * Evaluate the gravity.</span>
+<a name="l00114"></a>00114 <span class="comment">     *</span>
+<a name="l00115"></a>00115 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00116"></a>00116 <span class="comment">     * @param[out] gx the easterly component of the acceleration</span>
+<a name="l00117"></a>00117 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00118"></a>00118 <span class="comment">     * @param[out] gy the northerly component of the acceleration</span>
+<a name="l00119"></a>00119 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00120"></a>00120 <span class="comment">     * @param[out] gz the upward component of the acceleration</span>
+<a name="l00121"></a>00121 <span class="comment">     *   (m s<sup>-2</sup>); this is usually negative.</span>
+<a name="l00122"></a>00122 <span class="comment">     * @return \e W the sum of the gravitational and centrifugal potentials.</span>
+<a name="l00123"></a>00123 <span class="comment">     *</span>
+<a name="l00124"></a>00124 <span class="comment">     * The function includes the effects of the earth's rotation.</span>
+<a name="l00125"></a>00125 <span class="comment">     **********************************************************************/</span>
+<a name="l00126"></a>00126     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">rea [...]
+<a name="l00127"></a>00127 <span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">    /**</span>
+<a name="l00129"></a>00129 <span class="comment">     * Evaluate the gravity disturbance vector.</span>
+<a name="l00130"></a>00130 <span class="comment">     *</span>
+<a name="l00131"></a>00131 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00132"></a>00132 <span class="comment">     * @param[out] deltax the easterly component of the disturbance vector</span>
+<a name="l00133"></a>00133 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00134"></a>00134 <span class="comment">     * @param[out] deltay the northerly component of the disturbance vector</span>
+<a name="l00135"></a>00135 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00136"></a>00136 <span class="comment">     * @param[out] deltaz the upward component of the disturbance vector</span>
+<a name="l00137"></a>00137 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00138"></a>00138 <span class="comment">     * @return \e T the corresponding disturbing potential.</span>
+<a name="l00139"></a>00139 <span class="comment">     **********************************************************************/</span>
+<a name="l00140"></a>00140     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
+<a name="l00141"></a>00141       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00142"></a>00142 <span class="comment"></span>
+<a name="l00143"></a>00143 <span class="comment">    /**</span>
+<a name="l00144"></a>00144 <span class="comment">     * Evaluate the geoid height.</span>
+<a name="l00145"></a>00145 <span class="comment">     *</span>
+<a name="l00146"></a>00146 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00147"></a>00147 <span class="comment">     * @return \e N the height of the geoid above the reference ellipsoid</span>
+<a name="l00148"></a>00148 <span class="comment">     *   (meters).</span>
+<a name="l00149"></a>00149 <span class="comment">     *</span>
+<a name="l00150"></a>00150 <span class="comment">     * Some approximations are made in computing the geoid height so that the</span>
+<a name="l00151"></a>00151 <span class="comment">     * results of the NGA codes are reproduced accurately.  Details are given</span>
+<a name="l00152"></a>00152 <span class="comment">     * in \ref gravitygeoid.</span>
+<a name="l00153"></a>00153 <span class="comment">     **********************************************************************/</span>
+<a name="l00154"></a>00154     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment">    /**</span>
+<a name="l00157"></a>00157 <span class="comment">     * Evaluate the components of the gravity anomaly vector using the</span>
+<a name="l00158"></a>00158 <span class="comment">     * spherical approximation.</span>
+<a name="l00159"></a>00159 <span class="comment">     *</span>
+<a name="l00160"></a>00160 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00161"></a>00161 <span class="comment">     * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
+<a name="l00162"></a>00162 <span class="comment">     * @param[out] xi the northerly component of the deflection of the vertical</span>
+<a name="l00163"></a>00163 <span class="comment">     *  (degrees).</span>
+<a name="l00164"></a>00164 <span class="comment">     * @param[out] eta the easterly component of the deflection of the vertical</span>
+<a name="l00165"></a>00165 <span class="comment">     *  (degrees).</span>
+<a name="l00166"></a>00166 <span class="comment">     *</span>
+<a name="l00167"></a>00167 <span class="comment">     * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
+<a name="l00168"></a>00168 <span class="comment">     * so that the results of the NGA codes are reproduced accurately.</span>
+<a name="l00169"></a>00169 <span class="comment">     * approximations used here.  Details are given in \ref gravitygeoid.</span>
+<a name="l00170"></a>00170 <span class="comment">     **********************************************************************/</span>
+<a name="l00171"></a>00171     <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta)
+<a name="l00172"></a>00172       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00173"></a>00173 <span class="comment"></span>
+<a name="l00174"></a>00174 <span class="comment">    /**</span>
+<a name="l00175"></a>00175 <span class="comment">     * Evaluate the components of the acceleration due to gravity and the</span>
+<a name="l00176"></a>00176 <span class="comment">     * centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00177"></a>00177 <span class="comment">     *</span>
+<a name="l00178"></a>00178 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00179"></a>00179 <span class="comment">     * @param[out] gX the \e X component of the acceleration</span>
+<a name="l00180"></a>00180 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00181"></a>00181 <span class="comment">     * @param[out] gY the \e Y component of the acceleration</span>
+<a name="l00182"></a>00182 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00183"></a>00183 <span class="comment">     * @param[out] gZ the \e Z component of the acceleration</span>
+<a name="l00184"></a>00184 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00185"></a>00185 <span class="comment">     * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
+<a name="l00186"></a>00186 <span class="comment">     *   centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00187"></a>00187 <span class="comment">     **********************************************************************/</span>
+<a name="l00188"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">00188</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">W</a>(real lon, real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00189"></a>00189       real clam, slam;
+<a name="l00190"></a>00190       CircularEngine::cossin(lon, clam, slam);
+<a name="l00191"></a>00191       <span class="keywordflow">return</span> W(clam, slam, gX, gY, gZ);
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193 <span class="comment"></span>
+<a name="l00194"></a>00194 <span class="comment">    /**</span>
+<a name="l00195"></a>00195 <span class="comment">     * Evaluate the components of the acceleration due to gravity in geocentric</span>
+<a name="l00196"></a>00196 <span class="comment">     * coordinates.</span>
+<a name="l00197"></a>00197 <span class="comment">     *</span>
+<a name="l00198"></a>00198 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00199"></a>00199 <span class="comment">     * @param[out] GX the \e X component of the acceleration</span>
+<a name="l00200"></a>00200 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00201"></a>00201 <span class="comment">     * @param[out] GY the \e Y component of the acceleration</span>
+<a name="l00202"></a>00202 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00203"></a>00203 <span class="comment">     * @param[out] GZ the \e Z component of the acceleration</span>
+<a name="l00204"></a>00204 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00205"></a>00205 <span class="comment">     * @return \e V = \e W - \e Phi the gravitational potential</span>
+<a name="l00206"></a>00206 <span class="comment">     *   (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">00208</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">V</a>(real lon, real& GX, real& GY, real& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00209"></a>00209       real clam, slam;
+<a name="l00210"></a>00210       CircularEngine::cossin(lon, clam, slam);
+<a name="l00211"></a>00211       <span class="keywordflow">return</span> V(clam, slam, GX, GY, GZ);
+<a name="l00212"></a>00212     }
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214 <span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment">    /**</span>
+<a name="l00216"></a>00216 <span class="comment">     * Evaluate the components of the gravity disturbance in geocentric</span>
+<a name="l00217"></a>00217 <span class="comment">     * coordinates.</span>
+<a name="l00218"></a>00218 <span class="comment">     *</span>
+<a name="l00219"></a>00219 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00220"></a>00220 <span class="comment">     * @param[out] deltaX the \e X component of the gravity disturbance</span>
+<a name="l00221"></a>00221 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00222"></a>00222 <span class="comment">     * @param[out] deltaY the \e Y component of the gravity disturbance</span>
+<a name="l00223"></a>00223 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00224"></a>00224 <span class="comment">     * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
+<a name="l00225"></a>00225 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00226"></a>00226 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00227"></a>00227 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00228"></a>00228 <span class="comment">     **********************************************************************/</span>
+<a name="l00229"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#afae12e4bbf17809f1dd6c32b41dfde03">00229</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real T(real lon, real& deltaX, real& deltaY, real& deltaZ)
+<a name="l00230"></a>00230       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00231"></a>00231       real clam, slam;
+<a name="l00232"></a>00232       CircularEngine::cossin(lon, clam, slam);
+<a name="l00233"></a>00233       <span class="keywordflow">return</span> InternalT(clam, slam, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>);
+<a name="l00234"></a>00234     }
+<a name="l00235"></a>00235 <span class="comment"></span>
+<a name="l00236"></a>00236 <span class="comment">    /**</span>
+<a name="l00237"></a>00237 <span class="comment">     * Evaluate disturbing potential in geocentric coordinates.</span>
+<a name="l00238"></a>00238 <span class="comment">     *</span>
+<a name="l00239"></a>00239 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00240"></a>00240 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00241"></a>00241 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00242"></a>00242 <span class="comment">     **********************************************************************/</span>
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">00243</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">T</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00244"></a>00244       real clam, slam, dummy;
+<a name="l00245"></a>00245       CircularEngine::cossin(lon, clam, slam);
+<a name="l00246"></a>00246       <span class="keywordflow">return</span> InternalT(clam, slam, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
+<a name="l00247"></a>00247     }
+<a name="l00248"></a>00248 <span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment">    ///@}</span>
+<a name="l00250"></a>00250 <span class="comment"></span><span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00252"></a>00252 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment">    ///@{</span>
+<a name="l00254"></a>00254 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00255"></a>00255 <span class="comment">     * @return true if the object has been initialized.</span>
+<a name="l00256"></a>00256 <span class="comment">     **********************************************************************/</span>
+<a name="l00257"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">00257</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }
+<a name="l00258"></a>00258 <span class="comment"></span>
+<a name="l00259"></a>00259 <span class="comment">    /**</span>
+<a name="l00260"></a>00260 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00261"></a>00261 <span class="comment">     *   the value inherited from the GravityModel object used in the</span>
+<a name="l00262"></a>00262 <span class="comment">     *   constructor.</span>
+<a name="l00263"></a>00263 <span class="comment">     **********************************************************************/</span>
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a19c5d003a9981cb3ece5b44ee836553a">00264</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00265"></a>00265     { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00266"></a>00266 <span class="comment"></span>
+<a name="l00267"></a>00267 <span class="comment">    /**</span>
+<a name="l00268"></a>00268 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00269"></a>00269 <span class="comment">     *   inherited from the GravityModel object used in the constructor.</span>
+<a name="l00270"></a>00270 <span class="comment">     **********************************************************************/</span>
+<a name="l00271"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ad9bfc60d802b662ffc1a41566882b743">00271</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00272"></a>00272     { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00273"></a>00273 <span class="comment"></span>
+<a name="l00274"></a>00274 <span class="comment">    /**</span>
+<a name="l00275"></a>00275 <span class="comment">     * @return the latitude of the circle (degrees).</span>
+<a name="l00276"></a>00276 <span class="comment">     **********************************************************************/</span>
+<a name="l00277"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a9628e97c53a2532959c5c8af75e1c14b">00277</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Latitude() <span class="keyword">const</span> throw()
+<a name="l00278"></a>00278     { <span class="keywordflow">return</span> Init() ? _lat : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00279"></a>00279 <span class="comment"></span>
+<a name="l00280"></a>00280 <span class="comment">    /**</span>
+<a name="l00281"></a>00281 <span class="comment">     * @return the height of the circle (meters).</span>
+<a name="l00282"></a>00282 <span class="comment">     **********************************************************************/</span>
+<a name="l00283"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a026b2b79ff3ae70b4fee5d9c4d1ffb70">00283</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Height() <span class="keyword">const</span> throw()
+<a name="l00284"></a>00284     { <span class="keywordflow">return</span> Init() ? _h : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment">    /**</span>
+<a name="l00287"></a>00287 <span class="comment">     * @return \e caps the computational capabilities that this object was</span>
+<a name="l00288"></a>00288 <span class="comment">     *   constructed with.</span>
+<a name="l00289"></a>00289 <span class="comment">     **********************************************************************/</span>
+<a name="l00290"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">00290</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
+<a name="l00291"></a>00291 <span class="comment"></span>
+<a name="l00292"></a>00292 <span class="comment">    /**</span>
+<a name="l00293"></a>00293 <span class="comment">     * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
+<a name="l00294"></a>00294 <span class="comment">     * @return true if the GeodesicLine object has all these capabilities.</span>
+<a name="l00295"></a>00295 <span class="comment">     **********************************************************************/</span>
+<a name="l00296"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">00296</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00297"></a>00297       <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
+<a name="l00298"></a>00298     }<span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment">    ///@}</span>
+<a name="l00300"></a>00300 <span class="comment"></span>  };
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityModel_8cpp.html b/doc/html/GravityModel_8cpp.html
index 71e0c51..5a327b6 100644
--- a/doc/html/GravityModel_8cpp.html
+++ b/doc/html/GravityModel_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityModel.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -64,19 +79,17 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">GEOGRAPHICLIB_GRAVITYMODEL_CPP</a>   "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">GEOGRAPHICLIB_GRAVITYMODEL_CPP</a>   "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a45687ef771d809c1c369daea074cc109">GEOGRAPHICLIB_DATA</a>   "/usr/local/share/GeographicLib"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a05d4f5b688275acf184933e85a0063bd">GRAVITY_DEFAULT_NAME</a>   "egm96"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
-<p>Copyright (c) Charles Karney (2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_CPP   "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_CPP   "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"</td>
         </tr>
       </table>
 </div>
@@ -130,8 +143,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityModel_8cpp_source.html b/doc/html/GravityModel_8cpp_source.html
index de7326c..4f60780 100644
--- a/doc/html/GravityModel_8cpp_source.html
+++ b/doc/html/GravityModel_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityModel.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file GravityModel.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::GravityModel class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under</span>
-<a name="l00006"></a>00006 <span class="comment"> * the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
@@ -62,7 +77,7 @@
 <a name="l00013"></a>00013 <span class="preprocessor">#include <<a class="code" href="GravityCircle_8hpp.html" title="Header for GeographicLib::GravityCircle class.">GeographicLib/GravityCircle.hpp</a>></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00015"></a><a class="code" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">00015</a> <span class="preprocessor">#define GEOGRAPHICLIB_GRAVITYMODEL_CPP \</span>
-<a name="l00016"></a>00016 <span class="preprocessor">  "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">  "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"</span>
 <a name="l00017"></a>00017 <span class="preprocessor"></span>
 <a name="l00018"></a>00018 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">GEOGRAPHICLIB_GRAVITYMODEL_CPP</a>)
 <a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">GEOGRAPHICLIB_GRAVITYMODEL_HPP</a>)
@@ -131,12 +146,12 @@
 <a name="l00082"></a>00082       <span class="keywordtype">int</span> pos = int(coeffstr.tellg());
 <a name="l00083"></a>00083       coeffstr.seekg(0, ios::end);
 <a name="l00084"></a>00084       <span class="keywordflow">if</span> (pos != coeffstr.tellg())
-<a name="l00085"></a>00085         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in  "</span> + coeff);
+<a name="l00085"></a>00085         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in "</span> + coeff);
 <a name="l00086"></a>00086     }
 <a name="l00087"></a>00087     <span class="keywordtype">int</span> nmx = _gravitational.<a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#ac8886de1d1400ecf6482f6441c76a8a0">Coefficients</a>().<a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a96467118f9c16c16259d4fbbed3917ff">nmx</a>();
 <a name="l00088"></a>00088     <span class="comment">// Adjust the normalization of the normal potential to match the model.</span>
 <a name="l00089"></a>00089     real mult = _earth._GM / _GMmodel;
-<a name="l00090"></a>00090     real amult = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_earth._a / _amodel);
+<a name="l00090"></a>00090     real amult = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_earth._a / _amodel);
 <a name="l00091"></a>00091     <span class="comment">// The 0th term in _zonal should be is 1 + _dzonal0.  Instead set it to 1</span>
 <a name="l00092"></a>00092     <span class="comment">// to give exact cancellation with the (0,0) term in the model and account</span>
 <a name="l00093"></a>00093     <span class="comment">// for _dzonal0 separately.</span>
@@ -179,14 +194,14 @@
 <a name="l00130"></a>00130     getline(metastr, line);
 <a name="l00131"></a>00131     <span class="keywordflow">if</span> (!(line.size() >= 6 && line.substr(0,5) == <span class="stringliteral">"EGMF-"</span>))
 <a name="l00132"></a>00132       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(_filename + <span class="stringliteral">" does not contain EGMF-n signature"</span>);
-<a name="l00133"></a>00133     string::size_type n = line.find_first_of(spaces, 5);
+<a name="l00133"></a>00133     <span class="keywordtype">string</span>::size_type n = line.find_first_of(spaces, 5);
 <a name="l00134"></a>00134     <span class="keywordflow">if</span> (n != string::npos)
 <a name="l00135"></a>00135       n -= 5;
 <a name="l00136"></a>00136     <span class="keywordtype">string</span> version = line.substr(5, n);
 <a name="l00137"></a>00137     <span class="keywordflow">if</span> (version != <span class="stringliteral">"1"</span>)
 <a name="l00138"></a>00138       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Unknown version in "</span> + _filename + <span class="stringliteral">": "</span> + version);
 <a name="l00139"></a>00139     <span class="keywordtype">string</span> key, val;
-<a name="l00140"></a>00140     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a = Math::NaN<real>(), GM = a, omega = a, f = a, J2 = a;
+<a name="l00140"></a>00140     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(), GM = a, omega = a, f = a, J2 = a;
 <a name="l00141"></a>00141     <span class="keywordflow">while</span> (getline(metastr, line)) {
 <a name="l00142"></a>00142       <span class="keywordflow">if</span> (!<a class="code" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">Utility::ParseLine</a>(line, key, val))
 <a name="l00143"></a>00143         <span class="keywordflow">continue</span>;
@@ -198,28 +213,28 @@
 <a name="l00149"></a>00149       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReleaseDate"</span>)
 <a name="l00150"></a>00150         _date = val;
 <a name="l00151"></a>00151       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ModelRadius"</span>)
-<a name="l00152"></a>00152         _amodel = Utility::num<real>(val);
+<a name="l00152"></a>00152         _amodel = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
 <a name="l00153"></a>00153       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ModelMass"</span>)
-<a name="l00154"></a>00154         _GMmodel = Utility::num<real>(val);
+<a name="l00154"></a>00154         _GMmodel = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
 <a name="l00155"></a>00155       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"AngularVelocity"</span>)
-<a name="l00156"></a>00156         omega = Utility::num<real>(val);
+<a name="l00156"></a>00156         omega = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
 <a name="l00157"></a>00157       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReferenceRadius"</span>)
-<a name="l00158"></a>00158         a = Utility::num<real>(val);
+<a name="l00158"></a>00158         a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
 <a name="l00159"></a>00159       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReferenceMass"</span>)
-<a name="l00160"></a>00160         GM = Utility::num<real>(val);
+<a name="l00160"></a>00160         GM = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
 <a name="l00161"></a>00161       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Flattening"</span>)
-<a name="l00162"></a>00162         f = Utility::fract<real>(val);
+<a name="l00162"></a>00162         f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
 <a name="l00163"></a>00163       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"DynamicalFormFactor"</span>)
-<a name="l00164"></a>00164         J2 = Utility::fract<real>(val);
+<a name="l00164"></a>00164         J2 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
 <a name="l00165"></a>00165       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"HeightOffset"</span>)
-<a name="l00166"></a>00166         _zeta0 = Utility::fract<real>(val);
+<a name="l00166"></a>00166         _zeta0 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
 <a name="l00167"></a>00167       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"CorrectionMultiplier"</span>)
-<a name="l00168"></a>00168         _corrmult = Utility::fract<real>(val);
+<a name="l00168"></a>00168         _corrmult = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
 <a name="l00169"></a>00169       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Normalization"</span>) {
 <a name="l00170"></a>00170         <span class="keywordflow">if</span> (val == <span class="stringliteral">"FULL"</span> || val == <span class="stringliteral">"Full"</span> || val == <span class="stringliteral">"full"</span>)
-<a name="l00171"></a>00171           _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">SphericalHarmonic::FULL</a>;
+<a name="l00171"></a>00171           _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>::FULL;
 <a name="l00172"></a>00172         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val == <span class="stringliteral">"SCHMIDT"</span> || val == <span class="stringliteral">"Schmidt"</span> || val == <span class="stringliteral">"schmidt"</span>)
-<a name="l00173"></a>00173           _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">SphericalHarmonic::SCHMIDT</a>;
+<a name="l00173"></a>00173           _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>::SCHMIDT;
 <a name="l00174"></a>00174         <span class="keywordflow">else</span>
 <a name="l00175"></a>00175           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Unknown normalization "</span> + val);
 <a name="l00176"></a>00176       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ByteOrder"</span>) {
@@ -232,20 +247,20 @@
 <a name="l00183"></a>00183       <span class="comment">// else unrecognized keywords are skipped</span>
 <a name="l00184"></a>00184     }
 <a name="l00185"></a>00185     <span class="comment">// Check values</span>
-<a name="l00186"></a>00186     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_amodel) && _amodel > 0))
+<a name="l00186"></a>00186     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_amodel) && _amodel > 0))
 <a name="l00187"></a>00187       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Model radius must be positive"</span>);
-<a name="l00188"></a>00188     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_GMmodel) && _GMmodel > 0))
+<a name="l00188"></a>00188     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_GMmodel) && _GMmodel > 0))
 <a name="l00189"></a>00189       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Model mass constant must be positive"</span>);
-<a name="l00190"></a>00190     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_corrmult) && _corrmult > 0))
+<a name="l00190"></a>00190     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_corrmult) && _corrmult > 0))
 <a name="l00191"></a>00191       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Correction multiplier must be positive"</span>);
-<a name="l00192"></a>00192     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_zeta0)))
+<a name="l00192"></a>00192     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_zeta0)))
 <a name="l00193"></a>00193       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Height offset must be finite"</span>);
 <a name="l00194"></a>00194     <span class="keywordflow">if</span> (<span class="keywordtype">int</span>(_id.size()) != idlength_)
 <a name="l00195"></a>00195       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Invalid ID"</span>);
 <a name="l00196"></a>00196     _earth = NormalGravity(a, GM, omega, f, J2);
 <a name="l00197"></a>00197   }
 <a name="l00198"></a>00198 
-<a name="l00199"></a>00199   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityModel::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00199"></a>00199   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityModel::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
 <a name="l00200"></a>00200                                      <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaZ,
 <a name="l00201"></a>00201                                      <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00202"></a>00202     <span class="comment">// If correct, then produce the correct T = W - U.  Otherwise, neglect the</span>
@@ -255,7 +270,7 @@
 <a name="l00206"></a>00206       <span class="comment">// No need to do the correction</span>
 <a name="l00207"></a>00207       correct = <span class="keyword">false</span>;
 <a name="l00208"></a>00208     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00209"></a>00209       invR = correct ? 1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),  Z) : 1,
+<a name="l00209"></a>00209       invR = correct ? 1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y), Z) : 1,
 <a name="l00210"></a>00210       T = (gradp
 <a name="l00211"></a>00211            ? _disturbing(-1, X, Y, Z, deltaX, deltaY, deltaZ)
 <a name="l00212"></a>00212            : _disturbing(-1, X, Y, Z));
@@ -275,7 +290,7 @@
 <a name="l00226"></a>00226     <span class="keywordflow">return</span> T;
 <a name="l00227"></a>00227   }
 <a name="l00228"></a>00228 
-<a name="l00229"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">00229</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">GravityModel::V</a>(real X, real Y, real Z,
+<a name="l00229"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">00229</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">GravityModel::V</a>(real X, real Y, real Z,
 <a name="l00230"></a>00230                              real& GX, real& GY, real& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00231"></a>00231     real
 <a name="l00232"></a>00232       Vres = _gravitational(X, Y, Z, GX, GY, GZ),
@@ -287,7 +302,7 @@
 <a name="l00238"></a>00238     <span class="keywordflow">return</span> Vres;
 <a name="l00239"></a>00239   }
 <a name="l00240"></a>00240 
-<a name="l00241"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">00241</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">GravityModel::W</a>(real X, real Y, real Z,
+<a name="l00241"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">00241</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">GravityModel::W</a>(real X, real Y, real Z,
 <a name="l00242"></a>00242                              real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00243"></a>00243     real fX, fY,
 <a name="l00244"></a>00244       Wres = V(X, Y, Z, gX, gY, gZ) + _earth.Phi(X, Y, fX, fY);
@@ -299,31 +314,31 @@
 <a name="l00250"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">00250</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">GravityModel::SphericalAnomaly</a>(real lat, real lon, real h,
 <a name="l00251"></a>00251                                       real& Dg01, real& xi, real& eta)
 <a name="l00252"></a>00252     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00253"></a>00253     real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00253"></a>00253     real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00254"></a>00254     _earth.Earth().IntForward(lat, lon, h, X, Y, Z, M);
 <a name="l00255"></a>00255     real
 <a name="l00256"></a>00256       deltax, deltay, deltaz,
 <a name="l00257"></a>00257       T = InternalT(X, Y, Z, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">false</span>),
 <a name="l00258"></a>00258       clam = M[3], slam = -M[0],
-<a name="l00259"></a>00259       P = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),
-<a name="l00260"></a>00260       R = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(P, Z),
+<a name="l00259"></a>00259       P = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y),
+<a name="l00260"></a>00260       R = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(P, Z),
 <a name="l00261"></a>00261       <span class="comment">// psi is geocentric latitude</span>
 <a name="l00262"></a>00262       cpsi = R ? P / R : M[7],
 <a name="l00263"></a>00263       spsi = R ? Z / R : M[8];
 <a name="l00264"></a>00264     <span class="comment">// Rotate cartesian into spherical coordinates</span>
-<a name="l00265"></a>00265     real MC[Geocentric::dim2_];
+<a name="l00265"></a>00265     real MC[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00266"></a>00266     Geocentric::Rotation(spsi, cpsi, slam, clam, MC);
 <a name="l00267"></a>00267     Geocentric::Unrotate(MC, deltax, deltay, deltaz, deltax, deltay, deltaz);
 <a name="l00268"></a>00268     <span class="comment">// H+M, Eq 2-151c</span>
 <a name="l00269"></a>00269     Dg01 = - deltaz - 2 * T / R;
 <a name="l00270"></a>00270     real gammaX, gammaY, gammaZ;
 <a name="l00271"></a>00271     _earth.U(X, Y, Z, gammaX, gammaY, gammaZ);
-<a name="l00272"></a>00272     real gamma = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>( <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(gammaX, gammaY), gammaZ);
+<a name="l00272"></a>00272     real gamma = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>( <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(gammaX, gammaY), gammaZ);
 <a name="l00273"></a>00273     xi  = -(deltay/gamma) / Math::degree<real>();
 <a name="l00274"></a>00274     eta = -(deltax/gamma) / Math::degree<real>();
 <a name="l00275"></a>00275   }
 <a name="l00276"></a>00276 
-<a name="l00277"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">00277</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GravityModel::GeoidHeight</a>(real lat, real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00277"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">00277</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GravityModel::GeoidHeight</a>(real lat, real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
 <a name="l00278"></a>00278   {
 <a name="l00279"></a>00279     real X, Y, Z;
 <a name="l00280"></a>00280     _earth.Earth().IntForward(lat, lon, 0, X, Y, Z, NULL);
@@ -331,24 +346,24 @@
 <a name="l00282"></a>00282       gamma0 = _earth.SurfaceGravity(lat),
 <a name="l00283"></a>00283       dummy,
 <a name="l00284"></a>00284       T = InternalT(X, Y, Z, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">false</span>),
-<a name="l00285"></a>00285       invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),  Z),
+<a name="l00285"></a>00285       invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y), Z),
 <a name="l00286"></a>00286       correction = _corrmult * _correction(invR * X, invR * Y, invR * Z);
 <a name="l00287"></a>00287     <span class="comment">// _zeta0 has been included in _correction</span>
 <a name="l00288"></a>00288     <span class="keywordflow">return</span> T/gamma0 + correction;
 <a name="l00289"></a>00289   }
 <a name="l00290"></a>00290 
-<a name="l00291"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">00291</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">GravityModel::Gravity</a>(real lat, real lon, real h,
+<a name="l00291"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">00291</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">GravityModel::Gravity</a>(real lat, real lon, real h,
 <a name="l00292"></a>00292                                    real& gx, real& gy, real& gz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00293"></a>00293     real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00293"></a>00293     real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00294"></a>00294     _earth.Earth().IntForward(lat, lon, h, X, Y, Z, M);
 <a name="l00295"></a>00295     real Wres = W(X, Y, Z, gx, gy, gz);
 <a name="l00296"></a>00296     Geocentric::Unrotate(M, gx, gy, gz, gx, gy, gz);
 <a name="l00297"></a>00297     <span class="keywordflow">return</span> Wres;
 <a name="l00298"></a>00298   }
-<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">00299</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GravityModel::Disturbance</a>(real lat, real lon, real h,
+<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">00299</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GravityModel::Disturbance</a>(real lat, real lon, real h,
 <a name="l00300"></a>00300                                        real& deltax, real& deltay, real& deltaz)
 <a name="l00301"></a>00301     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00302"></a>00302     real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00302"></a>00302     real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00303"></a>00303     _earth.Earth().IntForward(lat, lon, h, X, Y, Z, M);
 <a name="l00304"></a>00304     real Tres = InternalT(X, Y, Z, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">true</span>);
 <a name="l00305"></a>00305     Geocentric::Unrotate(M, deltax, deltay, deltaz, deltax, deltay, deltaz);
@@ -359,19 +374,19 @@
 <a name="l00310"></a>00310     <span class="keywordflow">if</span> (h != 0)
 <a name="l00311"></a>00311       <span class="comment">// Disallow invoking GeoidHeight unless h is zero.</span>
 <a name="l00312"></a>00312       caps &= ~(CAP_GAMMA0 | CAP_C);
-<a name="l00313"></a>00313     real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00313"></a>00313     real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00314"></a>00314     _earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#ab15ded1ab7ec9a30e8053fc330ed76ac">Earth</a>().IntForward(lat, 0, h, X, Y, Z, M);
 <a name="l00315"></a>00315     <span class="comment">// Y = 0, cphi = M[7], sphi = M[8];</span>
 <a name="l00316"></a>00316     real
-<a name="l00317"></a>00317       invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X,  Z),
+<a name="l00317"></a>00317       invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Z),
 <a name="l00318"></a>00318       gamma0 = (caps & CAP_GAMMA0 ?_earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">SurfaceGravity</a>(lat)
-<a name="l00319"></a>00319                 : Math::NaN<real>()),
+<a name="l00319"></a>00319                 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>()),
 <a name="l00320"></a>00320       fx, fy, fz, gamma;
 <a name="l00321"></a>00321     <span class="keywordflow">if</span> (caps & CAP_GAMMA) {
 <a name="l00322"></a>00322       _earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">U</a>(X, Y, Z, fx, fy, fz); <span class="comment">// fy = 0</span>
-<a name="l00323"></a>00323       gamma = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(fx, fz);
+<a name="l00323"></a>00323       gamma = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(fx, fz);
 <a name="l00324"></a>00324     } <span class="keywordflow">else</span>
-<a name="l00325"></a>00325       gamma = Math::NaN<real>();
+<a name="l00325"></a>00325       gamma = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00326"></a>00326     _earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">Phi</a>(X, Y, fx, fy);
 <a name="l00327"></a>00327     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#a243c90a7f9bf3f7aa96877a4b0667a89">GravityCircle</a>(GravityCircle::mask(caps),
 <a name="l00328"></a>00328                          _earth._a, _earth._f, lat, h, Z, X, M[7], M[8],
@@ -413,8 +428,13 @@
 <a name="l00364"></a>00364 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityModel_8hpp.html b/doc/html/GravityModel_8hpp.html
index 9b511df..cf0fe69 100644
--- a/doc/html/GravityModel_8hpp.html
+++ b/doc/html/GravityModel_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityModel.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,13 +87,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">GEOGRAPHICLIB_GRAVITYMODEL_HPP</a>   "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">GEOGRAPHICLIB_GRAVITYMODEL_HPP</a>   "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
@@ -91,7 +104,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_HPP   "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_HPP   "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"</td>
         </tr>
       </table>
 </div>
@@ -102,8 +115,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/GravityModel_8hpp_source.html b/doc/html/GravityModel_8hpp_source.html
index 464867a..df21718 100644
--- a/doc/html/GravityModel_8hpp_source.html
+++ b/doc/html/GravityModel_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GravityModel.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GRAVITYMODEL_HPP)</span>
 <a name="l00011"></a><a class="code" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GRAVITYMODEL_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <sstream></span>
@@ -129,440 +144,448 @@
 <a name="l00079"></a>00079 <span class="comment">   *</span>
 <a name="l00080"></a>00080 <span class="comment">   * Example of use:</span>
 <a name="l00081"></a>00081 <span class="comment">   * \include example-GravityModel.cpp</span>
-<a name="l00082"></a>00082 <span class="comment">   **********************************************************************/</span>
-<a name="l00083"></a>00083 
-<a name="l00084"></a><a class="code" href="classGeographicLib_1_1GravityModel.html">00084</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> {
-<a name="l00085"></a>00085   <span class="keyword">private</span>:
-<a name="l00086"></a>00086     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00087"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a243c90a7f9bf3f7aa96877a4b0667a89">00087</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;
-<a name="l00088"></a>00088     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
-<a name="l00089"></a>00089     std::string _name, _dir, _description, _date, _filename, _id;
-<a name="l00090"></a>00090     real _amodel, _GMmodel, _zeta0, _corrmult;
-<a name="l00091"></a>00091     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eb">SphericalHarmonic::normalization</a> _norm;
-<a name="l00092"></a>00092     <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> _earth;
-<a name="l00093"></a>00093     std::vector<real> _C, _S, _CC, _CS, _zonal;
-<a name="l00094"></a>00094     real _dzonal0;              <span class="comment">// A left over contribution to _zonal.</span>
-<a name="l00095"></a>00095     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _gravitational;
-<a name="l00096"></a>00096     <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a> _disturbing;
-<a name="l00097"></a>00097     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _correction;
-<a name="l00098"></a>00098     <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
-<a name="l00099"></a>00099     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InternalT(real X, real Y, real Z,
-<a name="l00100"></a>00100                          real& deltaX, real& deltaY, real& deltaZ,
-<a name="l00101"></a>00101                          <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00102"></a>00102     <span class="keyword">enum</span> captype {
-<a name="l00103"></a>00103       CAP_NONE   = 0U,
-<a name="l00104"></a>00104       CAP_G      = 1U<<0,       <span class="comment">// implies potentials W and V</span>
-<a name="l00105"></a>00105       CAP_T      = 1U<<1,
-<a name="l00106"></a>00106       CAP_DELTA  = 1U<<2 | CAP_T, <span class="comment">// delta implies T?</span>
-<a name="l00107"></a>00107       CAP_C      = 1U<<3,
-<a name="l00108"></a>00108       CAP_GAMMA0 = 1U<<4,
-<a name="l00109"></a>00109       CAP_GAMMA  = 1U<<5,
-<a name="l00110"></a>00110       CAP_ALL    = 0x3FU,
-<a name="l00111"></a>00111     };
-<a name="l00112"></a>00112 
-<a name="l00113"></a>00113   <span class="keyword">public</span>:
-<a name="l00114"></a>00114 <span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment">    /**</span>
-<a name="l00116"></a>00116 <span class="comment">     * Bit masks for the capabilities to be given to the GravityCircle object</span>
-<a name="l00117"></a>00117 <span class="comment">     * produced by Circle.</span>
-<a name="l00118"></a>00118 <span class="comment">     **********************************************************************/</span>
-<a name="l00119"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">00119</a>     <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">mask</a> {<span class="comment"></span>
-<a name="l00120"></a>00120 <span class="comment">      /**</span>
-<a name="l00121"></a>00121 <span class="comment">       * No capabilities.</span>
-<a name="l00122"></a>00122 <span class="comment">       * @hideinitializer</span>
-<a name="l00123"></a>00123 <span class="comment">       **********************************************************************/</span>
-<a name="l00124"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365add4ee1aa94e38a8283826704105dc2e1">00124</a>       NONE = 0U,<span class="comment"></span>
-<a name="l00125"></a>00125 <span class="comment">      /**</span>
-<a name="l00126"></a>00126 <span class="comment">       * Allow calls to GravityCircle::Gravity, GravityCircle::W, and</span>
-<a name="l00127"></a>00127 <span class="comment">       * GravityCircle::V.</span>
-<a name="l00128"></a>00128 <span class="comment">       * @hideinitializer</span>
-<a name="l00129"></a>00129 <span class="comment">       **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">00130</a>       GRAVITY = CAP_G,<span class="comment"></span>
-<a name="l00131"></a>00131 <span class="comment">      /**</span>
-<a name="l00132"></a>00132 <span class="comment">       * Allow calls to GravityCircle::Disturbance and GravityCircle::T.</span>
-<a name="l00133"></a>00133 <span class="comment">       * @hideinitializer</span>
-<a name="l00134"></a>00134 <span class="comment">       **********************************************************************/</span>
-<a name="l00135"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">00135</a>       DISTURBANCE = CAP_DELTA,<span class="comment"></span>
-<a name="l00136"></a>00136 <span class="comment">      /**</span>
-<a name="l00137"></a>00137 <span class="comment">       * Allow calls to GravityCircle::T(real lon) (i.e., computing the</span>
-<a name="l00138"></a>00138 <span class="comment">       * disturbing potential and not the gravity disturbance vector).</span>
-<a name="l00139"></a>00139 <span class="comment">       * @hideinitializer</span>
-<a name="l00140"></a>00140 <span class="comment">       **********************************************************************/</span>
-<a name="l00141"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">00141</a>       DISTURBING_POTENTIAL = CAP_T,<span class="comment"></span>
-<a name="l00142"></a>00142 <span class="comment">      /**</span>
-<a name="l00143"></a>00143 <span class="comment">       * Allow calls to GravityCircle::SphericalAnomaly.</span>
-<a name="l00144"></a>00144 <span class="comment">       * @hideinitializer</span>
-<a name="l00145"></a>00145 <span class="comment">       **********************************************************************/</span>
-<a name="l00146"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">00146</a>       SPHERICAL_ANOMALY = CAP_DELTA | CAP_GAMMA,<span class="comment"></span>
-<a name="l00147"></a>00147 <span class="comment">      /**</span>
-<a name="l00148"></a>00148 <span class="comment">       * Allow calls to GravityCircle::GeoidHeight.</span>
-<a name="l00149"></a>00149 <span class="comment">       * @hideinitializer</span>
-<a name="l00150"></a>00150 <span class="comment">       **********************************************************************/</span>
-<a name="l00151"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">00151</a>       GEOID_HEIGHT = CAP_T | CAP_C | CAP_GAMMA0,<span class="comment"></span>
-<a name="l00152"></a>00152 <span class="comment">      /**</span>
-<a name="l00153"></a>00153 <span class="comment">       * All capabilities.</span>
-<a name="l00154"></a>00154 <span class="comment">       * @hideinitializer</span>
-<a name="l00155"></a>00155 <span class="comment">       **********************************************************************/</span>
-<a name="l00156"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a8e0e6b9a6d629d05f22f41996fe98068">00156</a>       ALL = CAP_ALL,
-<a name="l00157"></a>00157     };<span class="comment"></span>
-<a name="l00158"></a>00158 <span class="comment">    /** \name Setting up the gravity model</span>
-<a name="l00159"></a>00159 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00160"></a>00160 <span class="comment">    ///@{</span>
-<a name="l00161"></a>00161 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00162"></a>00162 <span class="comment">     * Construct a gravity model.</span>
-<a name="l00163"></a>00163 <span class="comment">     *</span>
-<a name="l00164"></a>00164 <span class="comment">     * @param[in] name the name of the model.</span>
-<a name="l00165"></a>00165 <span class="comment">     * @param[in] path (optional) directory for data file.</span>
+<a name="l00082"></a>00082 <span class="comment">   *</span>
+<a name="l00083"></a>00083 <span class="comment">   * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing</span>
+<a name="l00084"></a>00084 <span class="comment">   * access to the functionality of GravityModel and GravityCircle.</span>
+<a name="l00085"></a>00085 <span class="comment">   **********************************************************************/</span>
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GravityModel {
+<a name="l00088"></a>00088   <span class="keyword">private</span>:
+<a name="l00089"></a>00089     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00090"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a243c90a7f9bf3f7aa96877a4b0667a89">00090</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;
+<a name="l00091"></a>00091     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
+<a name="l00092"></a>00092     std::string _name, _dir, _description, _date, _filename, _id;
+<a name="l00093"></a>00093     real _amodel, _GMmodel, _zeta0, _corrmult;
+<a name="l00094"></a>00094     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>::normalization _norm;
+<a name="l00095"></a>00095     <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> _earth;
+<a name="l00096"></a>00096     std::vector<real> _C, _S, _CC, _CS, _zonal;
+<a name="l00097"></a>00097     real _dzonal0;              <span class="comment">// A left over contribution to _zonal.</span>
+<a name="l00098"></a>00098     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _gravitational;
+<a name="l00099"></a>00099     <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a> _disturbing;
+<a name="l00100"></a>00100     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _correction;
+<a name="l00101"></a>00101     <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
+<a name="l00102"></a>00102     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real InternalT(real X, real Y, real Z,
+<a name="l00103"></a>00103                          real& deltaX, real& deltaY, real& deltaZ,
+<a name="l00104"></a>00104                          <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00105"></a>00105     <span class="keyword">enum</span> captype {
+<a name="l00106"></a>00106       CAP_NONE   = 0U,
+<a name="l00107"></a>00107       CAP_G      = 1U<<0,       <span class="comment">// implies potentials W and V</span>
+<a name="l00108"></a>00108       CAP_T      = 1U<<1,
+<a name="l00109"></a>00109       CAP_DELTA  = 1U<<2 | CAP_T, <span class="comment">// delta implies T?</span>
+<a name="l00110"></a>00110       CAP_C      = 1U<<3,
+<a name="l00111"></a>00111       CAP_GAMMA0 = 1U<<4,
+<a name="l00112"></a>00112       CAP_GAMMA  = 1U<<5,
+<a name="l00113"></a>00113       CAP_ALL    = 0x3FU,
+<a name="l00114"></a>00114     };
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116   <span class="keyword">public</span>:
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment">    /**</span>
+<a name="l00119"></a>00119 <span class="comment">     * Bit masks for the capabilities to be given to the GravityCircle object</span>
+<a name="l00120"></a>00120 <span class="comment">     * produced by Circle.</span>
+<a name="l00121"></a>00121 <span class="comment">     **********************************************************************/</span>
+<a name="l00122"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">00122</a>     <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">mask</a> {<span class="comment"></span>
+<a name="l00123"></a>00123 <span class="comment">      /**</span>
+<a name="l00124"></a>00124 <span class="comment">       * No capabilities.</span>
+<a name="l00125"></a>00125 <span class="comment">       * @hideinitializer</span>
+<a name="l00126"></a>00126 <span class="comment">       **********************************************************************/</span>
+<a name="l00127"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365add4ee1aa94e38a8283826704105dc2e1">00127</a>       NONE = 0U,<span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">      /**</span>
+<a name="l00129"></a>00129 <span class="comment">       * Allow calls to GravityCircle::Gravity, GravityCircle::W, and</span>
+<a name="l00130"></a>00130 <span class="comment">       * GravityCircle::V.</span>
+<a name="l00131"></a>00131 <span class="comment">       * @hideinitializer</span>
+<a name="l00132"></a>00132 <span class="comment">       **********************************************************************/</span>
+<a name="l00133"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">00133</a>       GRAVITY = CAP_G,<span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment">      /**</span>
+<a name="l00135"></a>00135 <span class="comment">       * Allow calls to GravityCircle::Disturbance and GravityCircle::T.</span>
+<a name="l00136"></a>00136 <span class="comment">       * @hideinitializer</span>
+<a name="l00137"></a>00137 <span class="comment">       **********************************************************************/</span>
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">00138</a>       DISTURBANCE = CAP_DELTA,<span class="comment"></span>
+<a name="l00139"></a>00139 <span class="comment">      /**</span>
+<a name="l00140"></a>00140 <span class="comment">       * Allow calls to GravityCircle::T(real lon) (i.e., computing the</span>
+<a name="l00141"></a>00141 <span class="comment">       * disturbing potential and not the gravity disturbance vector).</span>
+<a name="l00142"></a>00142 <span class="comment">       * @hideinitializer</span>
+<a name="l00143"></a>00143 <span class="comment">       **********************************************************************/</span>
+<a name="l00144"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">00144</a>       DISTURBING_POTENTIAL = CAP_T,<span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment">      /**</span>
+<a name="l00146"></a>00146 <span class="comment">       * Allow calls to GravityCircle::SphericalAnomaly.</span>
+<a name="l00147"></a>00147 <span class="comment">       * @hideinitializer</span>
+<a name="l00148"></a>00148 <span class="comment">       **********************************************************************/</span>
+<a name="l00149"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">00149</a>       SPHERICAL_ANOMALY = CAP_DELTA | CAP_GAMMA,<span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment">      /**</span>
+<a name="l00151"></a>00151 <span class="comment">       * Allow calls to GravityCircle::GeoidHeight.</span>
+<a name="l00152"></a>00152 <span class="comment">       * @hideinitializer</span>
+<a name="l00153"></a>00153 <span class="comment">       **********************************************************************/</span>
+<a name="l00154"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">00154</a>       GEOID_HEIGHT = CAP_T | CAP_C | CAP_GAMMA0,<span class="comment"></span>
+<a name="l00155"></a>00155 <span class="comment">      /**</span>
+<a name="l00156"></a>00156 <span class="comment">       * All capabilities.</span>
+<a name="l00157"></a>00157 <span class="comment">       * @hideinitializer</span>
+<a name="l00158"></a>00158 <span class="comment">       **********************************************************************/</span>
+<a name="l00159"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a8e0e6b9a6d629d05f22f41996fe98068">00159</a>       ALL = CAP_ALL,
+<a name="l00160"></a>00160     };<span class="comment"></span>
+<a name="l00161"></a>00161 <span class="comment">    /** \name Setting up the gravity model</span>
+<a name="l00162"></a>00162 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00163"></a>00163 <span class="comment">    ///@{</span>
+<a name="l00164"></a>00164 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00165"></a>00165 <span class="comment">     * Construct a gravity model.</span>
 <a name="l00166"></a>00166 <span class="comment">     *</span>
-<a name="l00167"></a>00167 <span class="comment">     * A filename is formed by appending ".egm" (World Gravity Model) to the</span>
-<a name="l00168"></a>00168 <span class="comment">     * name.  If \e path is specified (and is non-empty), then the file is</span>
-<a name="l00169"></a>00169 <span class="comment">     * loaded from directory, \e path.  Otherwise the path is given by</span>
-<a name="l00170"></a>00170 <span class="comment">     * DefaultGravityPath().  This may throw an exception because the file does</span>
-<a name="l00171"></a>00171 <span class="comment">     * not exist, is unreadable, or is corrupt.</span>
-<a name="l00172"></a>00172 <span class="comment">     *</span>
-<a name="l00173"></a>00173 <span class="comment">     * This file contains the metadata which specifies the properties of the</span>
-<a name="l00174"></a>00174 <span class="comment">     * model.  The coefficients for the spherical harmonic sums are obtained</span>
-<a name="l00175"></a>00175 <span class="comment">     * from a file obtained by appending ".cof" to metadata file (so the</span>
-<a name="l00176"></a>00176 <span class="comment">     * filename ends in ".egm.cof").</span>
-<a name="l00177"></a>00177 <span class="comment">     **********************************************************************/</span>
-<a name="l00178"></a>00178     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>(<span class="keyword">const</span> std::string& name,
-<a name="l00179"></a>00179                           <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>);<span class="comment"></span>
-<a name="l00180"></a>00180 <span class="comment">    ///@}</span>
-<a name="l00181"></a>00181 <span class="comment"></span><span class="comment"></span>
-<a name="l00182"></a>00182 <span class="comment">    /** \name Compute gravity in geodetic coordinates</span>
-<a name="l00183"></a>00183 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00184"></a>00184 <span class="comment">    ///@{</span>
-<a name="l00185"></a>00185 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00186"></a>00186 <span class="comment">     * Evaluate the gravity at an arbitrary point above (or below) the</span>
-<a name="l00187"></a>00187 <span class="comment">     * ellipsoid.</span>
-<a name="l00188"></a>00188 <span class="comment">     *</span>
-<a name="l00189"></a>00189 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00190"></a>00190 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00191"></a>00191 <span class="comment">     * @param[in] h the height above the ellipsoid (meters).</span>
-<a name="l00192"></a>00192 <span class="comment">     * @param[out] gx the easterly component of the acceleration</span>
-<a name="l00193"></a>00193 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00194"></a>00194 <span class="comment">     * @param[out] gy the northerly component of the acceleration</span>
-<a name="l00195"></a>00195 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00196"></a>00196 <span class="comment">     * @param[out] gz the upward component of the acceleration</span>
-<a name="l00197"></a>00197 <span class="comment">     *   (m s<sup>-2</sup>); this is usually negative.</span>
-<a name="l00198"></a>00198 <span class="comment">     * @return \e W the sum of the gravitational and centrifugal potentials.</span>
-<a name="l00199"></a>00199 <span class="comment">     *</span>
-<a name="l00200"></a>00200 <span class="comment">     * The function includes the effects of the earth's rotation.</span>
-<a name="l00201"></a>00201 <span class="comment">     **********************************************************************/</span>
-<a name="l00202"></a>00202     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
-<a name="l00203"></a>00203                        <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gy, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00204"></a>00204 <span class="comment"></span>
-<a name="l00205"></a>00205 <span class="comment">    /**</span>
-<a name="l00206"></a>00206 <span class="comment">     * Evaluate the gravity disturbance vector at an arbitrary point above (or</span>
-<a name="l00207"></a>00207 <span class="comment">     * below) the ellipsoid.</span>
-<a name="l00208"></a>00208 <span class="comment">     *</span>
-<a name="l00209"></a>00209 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00210"></a>00210 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00211"></a>00211 <span class="comment">     * @param[in] h the height above the ellipsoid (meters).</span>
-<a name="l00212"></a>00212 <span class="comment">     * @param[out] deltax the easterly component of the disturbance vector</span>
-<a name="l00213"></a>00213 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00214"></a>00214 <span class="comment">     * @param[out] deltay the northerly component of the disturbance vector</span>
-<a name="l00215"></a>00215 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00216"></a>00216 <span class="comment">     * @param[out] deltaz the upward component of the disturbance vector</span>
-<a name="l00217"></a>00217 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00218"></a>00218 <span class="comment">     * @return \e T the corresponding disturbing potential.</span>
-<a name="l00219"></a>00219 <span class="comment">     **********************************************************************/</span>
-<a name="l00220"></a>00220     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
-<a name="l00221"></a>00221                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaz)
-<a name="l00222"></a>00222       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00223"></a>00223 <span class="comment"></span>
-<a name="l00224"></a>00224 <span class="comment">    /**</span>
-<a name="l00225"></a>00225 <span class="comment">     * Evaluate the geoid height.</span>
-<a name="l00226"></a>00226 <span class="comment">     *</span>
-<a name="l00227"></a>00227 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00228"></a>00228 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00229"></a>00229 <span class="comment">     * @return \e N the height of the geoid above the ReferenceEllipsoid()</span>
-<a name="l00230"></a>00230 <span class="comment">     *   (meters).</span>
-<a name="l00231"></a>00231 <span class="comment">     *</span>
-<a name="l00232"></a>00232 <span class="comment">     * This calls NormalGravity::U for ReferenceEllipsoid().  Some</span>
-<a name="l00233"></a>00233 <span class="comment">     * approximations are made in computing the geoid height so that the</span>
-<a name="l00234"></a>00234 <span class="comment">     * results of the NGA codes are reproduced accurately.  Details are given</span>
-<a name="l00235"></a>00235 <span class="comment">     * in \ref gravitygeoid.</span>
-<a name="l00236"></a>00236 <span class="comment">     **********************************************************************/</span>
-<a name="l00237"></a>00237     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00238"></a>00238 <span class="comment"></span>
-<a name="l00239"></a>00239 <span class="comment">    /**</span>
-<a name="l00240"></a>00240 <span class="comment">     * Evaluate the components of the gravity anomaly vector using the</span>
-<a name="l00241"></a>00241 <span class="comment">     * spherical approximation.</span>
-<a name="l00242"></a>00242 <span class="comment">     *</span>
-<a name="l00243"></a>00243 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00244"></a>00244 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00245"></a>00245 <span class="comment">     * @param[in] h the height above the ellipsoid (meters).</span>
-<a name="l00246"></a>00246 <span class="comment">     * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
-<a name="l00247"></a>00247 <span class="comment">     * @param[out] xi the northerly component of the deflection of the vertical</span>
-<a name="l00248"></a>00248 <span class="comment">     *  (degrees).</span>
-<a name="l00249"></a>00249 <span class="comment">     * @param[out] eta the easterly component of the deflection of the vertical</span>
-<a name="l00250"></a>00250 <span class="comment">     *  (degrees).</span>
-<a name="l00251"></a>00251 <span class="comment">     *</span>
-<a name="l00252"></a>00252 <span class="comment">     * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
-<a name="l00253"></a>00253 <span class="comment">     * so that the results of the NGA codes are reproduced accurately.</span>
-<a name="l00254"></a>00254 <span class="comment">     * approximations used here.  Details are given in \ref gravitygeoid.</span>
-<a name="l00255"></a>00255 <span class="comment">     **********************************************************************/</span>
-<a name="l00256"></a>00256     <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
-<a name="l00257"></a>00257                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00258"></a>00258 <span class="comment">    ///@}</span>
-<a name="l00259"></a>00259 <span class="comment"></span><span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment">    /** \name Compute gravity in geocentric coordinates</span>
-<a name="l00261"></a>00261 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00262"></a>00262 <span class="comment">    ///@{</span>
-<a name="l00263"></a>00263 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00264"></a>00264 <span class="comment">     * Evaluate the components of the acceleration due to gravity and the</span>
-<a name="l00265"></a>00265 <span class="comment">     * centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00266"></a>00266 <span class="comment">     *</span>
-<a name="l00267"></a>00267 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00268"></a>00268 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00269"></a>00269 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00270"></a>00270 <span class="comment">     * @param[out] gX the \e X component of the acceleration</span>
-<a name="l00271"></a>00271 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00272"></a>00272 <span class="comment">     * @param[out] gY the \e Y component of the acceleration</span>
-<a name="l00273"></a>00273 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00274"></a>00274 <span class="comment">     * @param[out] gZ the \e Z component of the acceleration</span>
-<a name="l00275"></a>00275 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00276"></a>00276 <span class="comment">     * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
-<a name="l00277"></a>00277 <span class="comment">     *   centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00278"></a>00278 <span class="comment">     *</span>
-<a name="l00279"></a>00279 <span class="comment">     * This calls NormalGravity::U for  ReferenceEllipsoid().</span>
-<a name="l00280"></a>00280 <span class="comment">     **********************************************************************/</span>
-<a name="l00281"></a>00281     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
-<a name="l00282"></a>00282                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00283"></a>00283 <span class="comment"></span>
-<a name="l00284"></a>00284 <span class="comment">    /**</span>
-<a name="l00285"></a>00285 <span class="comment">     * Evaluate the components of the acceleration due to gravity in geocentric</span>
-<a name="l00286"></a>00286 <span class="comment">     * coordinates.</span>
-<a name="l00287"></a>00287 <span class="comment">     *</span>
-<a name="l00288"></a>00288 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00289"></a>00289 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00290"></a>00290 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00291"></a>00291 <span class="comment">     * @param[out] GX the \e X component of the acceleration</span>
-<a name="l00292"></a>00292 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00293"></a>00293 <span class="comment">     * @param[out] GY the \e Y component of the acceleration</span>
-<a name="l00294"></a>00294 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00295"></a>00295 <span class="comment">     * @param[out] GZ the \e Z component of the acceleration</span>
-<a name="l00296"></a>00296 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00297"></a>00297 <span class="comment">     * @return \e V = \e W - \e Phi the gravitational potential</span>
-<a name="l00298"></a>00298 <span class="comment">     *   (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00299"></a>00299 <span class="comment">     **********************************************************************/</span>
-<a name="l00300"></a>00300     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
-<a name="l00301"></a>00301                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00302"></a>00302 <span class="comment"></span>
-<a name="l00303"></a>00303 <span class="comment">    /**</span>
-<a name="l00304"></a>00304 <span class="comment">     * Evaluate the components of the gravity disturbance in geocentric</span>
-<a name="l00305"></a>00305 <span class="comment">     * coordinates.</span>
-<a name="l00306"></a>00306 <span class="comment">     *</span>
-<a name="l00307"></a>00307 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00308"></a>00308 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00309"></a>00309 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00310"></a>00310 <span class="comment">     * @param[out] deltaX the \e X component of the gravity disturbance</span>
-<a name="l00311"></a>00311 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00312"></a>00312 <span class="comment">     * @param[out] deltaY the \e Y component of the gravity disturbance</span>
-<a name="l00313"></a>00313 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00314"></a>00314 <span class="comment">     * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
-<a name="l00315"></a>00315 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00316"></a>00316 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00317"></a>00317 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00318"></a>00318 <span class="comment">     **********************************************************************/</span>
-<a name="l00319"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a257022f1f125d88b0a6efdccfc5e7a41">00319</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> T(real X, real Y, real Z,
-<a name="l00320"></a>00320                  real& deltaX, real& deltaY, real& deltaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00321"></a>00321     { <span class="keywordflow">return</span> InternalT(X, Y, Z, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>); }
-<a name="l00322"></a>00322 <span class="comment"></span>
-<a name="l00323"></a>00323 <span class="comment">    /**</span>
-<a name="l00324"></a>00324 <span class="comment">     * Evaluate disturbing potential in geocentric coordinates.</span>
-<a name="l00325"></a>00325 <span class="comment">     *</span>
-<a name="l00326"></a>00326 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00327"></a>00327 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00328"></a>00328 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00329"></a>00329 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00330"></a>00330 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00331"></a>00331 <span class="comment">     **********************************************************************/</span>
-<a name="l00332"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">00332</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">T</a>(real X, real Y, real Z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00333"></a>00333       real dummy;
-<a name="l00334"></a>00334       <span class="keywordflow">return</span> InternalT(X, Y, Z, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
-<a name="l00335"></a>00335     }
-<a name="l00336"></a>00336 <span class="comment"></span>
-<a name="l00337"></a>00337 <span class="comment">    /**</span>
-<a name="l00338"></a>00338 <span class="comment">     * Evaluate the components of the acceleration due to normal gravity and the</span>
-<a name="l00339"></a>00339 <span class="comment">     * centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00340"></a>00340 <span class="comment">     *</span>
-<a name="l00341"></a>00341 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00342"></a>00342 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00343"></a>00343 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00344"></a>00344 <span class="comment">     * @param[out] gammaX the \e X component of the normal acceleration</span>
-<a name="l00345"></a>00345 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00346"></a>00346 <span class="comment">     * @param[out] gammaY the \e Y component of the normal acceleration</span>
-<a name="l00347"></a>00347 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00348"></a>00348 <span class="comment">     * @param[out] gammaZ the \e Z component of the normal acceleration</span>
-<a name="l00349"></a>00349 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00350"></a>00350 <span class="comment">     * @return \e U = <i>V</i><sub>0</sub> + \e Phi the sum of the</span>
-<a name="l00351"></a>00351 <span class="comment">     *   normal gravitational and centrifugal potentials</span>
-<a name="l00352"></a>00352 <span class="comment">     *   (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00353"></a>00353 <span class="comment">     *</span>
-<a name="l00354"></a>00354 <span class="comment">     * This calls NormalGravity::U for  ReferenceEllipsoid().</span>
-<a name="l00355"></a>00355 <span class="comment">     **********************************************************************/</span>
-<a name="l00356"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af368d4f9015e076e5cc57ad87b8a185f">00356</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> U(real X, real Y, real Z,
-<a name="l00357"></a>00357                  real& gammaX, real& gammaY, real& gammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00358"></a>00358     { <span class="keywordflow">return</span> _earth.U(X, Y, Z, gammaX, gammaY, gammaZ); }
-<a name="l00359"></a>00359 <span class="comment"></span>
-<a name="l00360"></a>00360 <span class="comment">    /**</span>
-<a name="l00361"></a>00361 <span class="comment">     * Evaluate the centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00362"></a>00362 <span class="comment">     *</span>
-<a name="l00363"></a>00363 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00364"></a>00364 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00365"></a>00365 <span class="comment">     * @param[out] fX the \e X component of the centrifugal acceleration</span>
-<a name="l00366"></a>00366 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00367"></a>00367 <span class="comment">     * @param[out] fY the \e Y component of the centrifugal acceleration</span>
-<a name="l00368"></a>00368 <span class="comment">     *   (m s<sup>-2</sup>).</span>
-<a name="l00369"></a>00369 <span class="comment">     * @return \e Phi the centrifugal potential (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00370"></a>00370 <span class="comment">     *</span>
-<a name="l00371"></a>00371 <span class="comment">     * This calls NormalGravity::Phi for  ReferenceEllipsoid().</span>
-<a name="l00372"></a>00372 <span class="comment">     **********************************************************************/</span>
-<a name="l00373"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a80477ccafa1049964ee0cef40ae2eea6">00373</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Phi(real X, real Y, real& fX, real& fY) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00374"></a>00374     { <span class="keywordflow">return</span> _earth.Phi(X, Y, fX, fY); }<span class="comment"></span>
-<a name="l00375"></a>00375 <span class="comment">    ///@}</span>
-<a name="l00376"></a>00376 <span class="comment"></span><span class="comment"></span>
-<a name="l00377"></a>00377 <span class="comment">    /** \name Compute gravity on a circle of constant latitude</span>
-<a name="l00378"></a>00378 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00379"></a>00379 <span class="comment">    ///@{</span>
-<a name="l00380"></a>00380 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00381"></a>00381 <span class="comment">     * Create a GravityCircle object to allow the gravity field at many points</span>
-<a name="l00382"></a>00382 <span class="comment">     * with constant \e lat and \e h and varying \e lon to be computed</span>
-<a name="l00383"></a>00383 <span class="comment">     * efficiently.</span>
-<a name="l00384"></a>00384 <span class="comment">     *</span>
-<a name="l00385"></a>00385 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00386"></a>00386 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00387"></a>00387 <span class="comment">     * @param[in] caps bitor'ed combination of GravityModel::mask values</span>
-<a name="l00388"></a>00388 <span class="comment">     *   specifying the capabilities of the resulting GravityCircle object.</span>
-<a name="l00389"></a>00389 <span class="comment">     * @return a GravityCircle object whose member functions computes the</span>
-<a name="l00390"></a>00390 <span class="comment">     *   gravitational field at a particular values of \e lon.</span>
-<a name="l00391"></a>00391 <span class="comment">     *</span>
-<a name="l00392"></a>00392 <span class="comment">     * The GravityModel::mask values are</span>
-<a name="l00393"></a>00393 <span class="comment">     * - \e caps |= GravityModel::GRAVITY</span>
-<a name="l00394"></a>00394 <span class="comment">     * - \e caps |= GravityModel::DISTURBANCE</span>
-<a name="l00395"></a>00395 <span class="comment">     * - \e caps |= GravityModel::DISTURBING_POTENTIAL</span>
-<a name="l00396"></a>00396 <span class="comment">     * - \e caps |= GravityModel::SPHERICAL_ANOMALY</span>
-<a name="l00397"></a>00397 <span class="comment">     * - \e caps |= GravityModel::GEOID_HEIGHT</span>
-<a name="l00398"></a>00398 <span class="comment">     * .</span>
-<a name="l00399"></a>00399 <span class="comment">     * The default value of \e caps is GravityModel::ALL which turns on all the</span>
-<a name="l00400"></a>00400 <span class="comment">     * capabilities.  If an unsupported function is invoked, it will return</span>
-<a name="l00401"></a>00401 <span class="comment">     * NaNs.  Note that GravityModel::GEOID_HEIGHT will only be honored if \e h</span>
-<a name="l00402"></a>00402 <span class="comment">     * = 0.</span>
-<a name="l00403"></a>00403 <span class="comment">     *</span>
-<a name="l00404"></a>00404 <span class="comment">     * If the field at several points on a circle of latitude need to be</span>
-<a name="l00405"></a>00405 <span class="comment">     * calculated then creating a GravityCircle object and using its member</span>
-<a name="l00406"></a>00406 <span class="comment">     * functions will be substantially faster, especially for high-degree</span>
-<a name="l00407"></a>00407 <span class="comment">     * models.  See \ref gravityparallel for an example of using GravityCircle</span>
-<a name="l00408"></a>00408 <span class="comment">     * (together with OpenMP) to speed up the computation of geoid heights.</span>
-<a name="l00409"></a>00409 <span class="comment">     **********************************************************************/</span>
-<a name="l00410"></a>00410     <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <span class="keywordtype">unsigned</span> caps = ALL) <span class="keyword">const</span>;<span class="comment"></span>
-<a name="l00411"></a>00411 <span class="comment">    ///@}</span>
-<a name="l00412"></a>00412 <span class="comment"></span><span class="comment"></span>
-<a name="l00413"></a>00413 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00414"></a>00414 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00415"></a>00415 <span class="comment">    ///@{</span>
-<a name="l00416"></a>00416 <span class="comment"></span><span class="comment"></span>
-<a name="l00417"></a>00417 <span class="comment">    /**</span>
-<a name="l00418"></a>00418 <span class="comment">     * @return the NormalGravity object for the reference ellipsoid.</span>
-<a name="l00419"></a>00419 <span class="comment">     **********************************************************************/</span>
-<a name="l00420"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">00420</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>& <a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">retu [...]
-<a name="l00421"></a>00421 <span class="comment"></span>
-<a name="l00422"></a>00422 <span class="comment">    /**</span>
-<a name="l00423"></a>00423 <span class="comment">     * @return the description of the gravity model, if available, in the data</span>
-<a name="l00424"></a>00424 <span class="comment">     *   file; if absent, return "NONE".</span>
-<a name="l00425"></a>00425 <span class="comment">     **********************************************************************/</span>
-<a name="l00426"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">00426</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
-<a name="l00427"></a>00427 <span class="comment"></span>
-<a name="l00428"></a>00428 <span class="comment">    /**</span>
-<a name="l00429"></a>00429 <span class="comment">     * @return date of the model; if absent, return "UNKNOWN".</span>
-<a name="l00430"></a>00430 <span class="comment">     **********************************************************************/</span>
-<a name="l00431"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">00431</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
-<a name="l00432"></a>00432 <span class="comment"></span>
-<a name="l00433"></a>00433 <span class="comment">    /**</span>
-<a name="l00434"></a>00434 <span class="comment">     * @return full file name used to load the gravity model.</span>
-<a name="l00435"></a>00435 <span class="comment">     **********************************************************************/</span>
-<a name="l00436"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">00436</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
-<a name="l00437"></a>00437 <span class="comment"></span>
-<a name="l00438"></a>00438 <span class="comment">    /**</span>
-<a name="l00439"></a>00439 <span class="comment">     * @return "name" used to load the gravity model (from the first argument</span>
-<a name="l00440"></a>00440 <span class="comment">     *   of the constructor, but this may be overridden by the model file).</span>
-<a name="l00441"></a>00441 <span class="comment">     **********************************************************************/</span>
-<a name="l00442"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">00442</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
-<a name="l00443"></a>00443 <span class="comment"></span>
-<a name="l00444"></a>00444 <span class="comment">    /**</span>
-<a name="l00445"></a>00445 <span class="comment">     * @return directory used to load the gravity model.</span>
-<a name="l00446"></a>00446 <span class="comment">     **********************************************************************/</span>
-<a name="l00447"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">00447</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">GravityModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
-<a name="l00448"></a>00448 <span class="comment"></span>
-<a name="l00449"></a>00449 <span class="comment">    /**</span>
-<a name="l00450"></a>00450 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).</span>
-<a name="l00451"></a>00451 <span class="comment">     **********************************************************************/</span>
-<a name="l00452"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">00452</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00453"></a>00453 <span class="comment"></span>
-<a name="l00454"></a>00454 <span class="comment">    /**</span>
-<a name="l00455"></a>00455 <span class="comment">     * @return \e GM the mass constant of the model</span>
-<a name="l00456"></a>00456 <span class="comment">     *   (m<sup>3</sup> s<sup>-2</sup>); this is the product of \e G the</span>
-<a name="l00457"></a>00457 <span class="comment">     *   gravitational constant and \e M the mass of the earth (usually</span>
-<a name="l00458"></a>00458 <span class="comment">     *   including the mass of the earth's atmosphere).</span>
-<a name="l00459"></a>00459 <span class="comment">     **********************************************************************/</span>
-<a name="l00460"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">00460</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">MassConstant</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _GMmodel; }
-<a name="l00461"></a>00461 <span class="comment"></span>
-<a name="l00462"></a>00462 <span class="comment">    /**</span>
-<a name="l00463"></a>00463 <span class="comment">     * @return \e GM the mass constant of the ReferenceEllipsoid()</span>
-<a name="l00464"></a>00464 <span class="comment">     *   (m<sup>3</sup> s<sup>-2</sup>).</span>
-<a name="l00465"></a>00465 <span class="comment">     **********************************************************************/</span>
-<a name="l00466"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a4e6b9d48f26544a45c5509a87eb334e7">00466</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> ReferenceMassConstant() <span class="keyword">const</span> throw()
-<a name="l00467"></a>00467     { <span class="keywordflow">return</span> _earth.MassConstant(); }
-<a name="l00468"></a>00468 <span class="comment"></span>
-<a name="l00469"></a>00469 <span class="comment">    /**</span>
-<a name="l00470"></a>00470 <span class="comment">     * @return \e omega the angular velocity of the model and the</span>
-<a name="l00471"></a>00471 <span class="comment">     *   ReferenceEllipsoid() (rad s<sup>-1</sup>).</span>
-<a name="l00472"></a>00472 <span class="comment">     **********************************************************************/</span>
-<a name="l00473"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aeb3d751ba7719e57e0266b65ee7d63d8">00473</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AngularVelocity() <span class="keyword">const</span> throw()
-<a name="l00474"></a>00474     { <span class="keywordflow">return</span> _earth.AngularVelocity(); }
-<a name="l00475"></a>00475 <span class="comment"></span>
-<a name="l00476"></a>00476 <span class="comment">    /**</span>
-<a name="l00477"></a>00477 <span class="comment">     * @return \e f the flattening of the ellipsoid.</span>
-<a name="l00478"></a>00478 <span class="comment">     **********************************************************************/</span>
-<a name="l00479"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">00479</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment"></span>
-<a name="l00480"></a>00480 <span class="comment">    ///@}</span>
-<a name="l00481"></a>00481 <span class="comment"></span><span class="comment"></span>
-<a name="l00482"></a>00482 <span class="comment">    /**</span>
-<a name="l00483"></a>00483 <span class="comment">     * @return the default path for gravity model data files.</span>
-<a name="l00484"></a>00484 <span class="comment">     *</span>
-<a name="l00485"></a>00485 <span class="comment">     * This is the value of the environment variable GRAVITY_PATH, if set;</span>
-<a name="l00486"></a>00486 <span class="comment">     * otherwise, it is $GEOGRAPHICLIB_DATA/gravity if the environment variable</span>
-<a name="l00487"></a>00487 <span class="comment">     * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
-<a name="l00488"></a>00488 <span class="comment">     * (/usr/local/share/GeographicLib/gravity on non-Windows systems and</span>
-<a name="l00489"></a>00489 <span class="comment">     * C:/Documents and Settings/All Users/Application</span>
-<a name="l00490"></a>00490 <span class="comment">     * Data/GeographicLib/gravity on Windows systems).</span>
-<a name="l00491"></a>00491 <span class="comment">     **********************************************************************/</span>
-<a name="l00492"></a>00492     <span class="keyword">static</span> std::string DefaultGravityPath();
-<a name="l00493"></a>00493 <span class="comment"></span>
-<a name="l00494"></a>00494 <span class="comment">    /**</span>
-<a name="l00495"></a>00495 <span class="comment">     * @return the default name for the gravity model.</span>
-<a name="l00496"></a>00496 <span class="comment">     *</span>
-<a name="l00497"></a>00497 <span class="comment">     * This is the value of the environment variable GRAVITY_NAME, if set,</span>
-<a name="l00498"></a>00498 <span class="comment">     * otherwise, it is "egm96".  The GravityModel class does not use</span>
-<a name="l00499"></a>00499 <span class="comment">     * this function; it is just provided as a convenience for a calling</span>
-<a name="l00500"></a>00500 <span class="comment">     * program when constructing a GravityModel object.</span>
-<a name="l00501"></a>00501 <span class="comment">     **********************************************************************/</span>
-<a name="l00502"></a>00502     <span class="keyword">static</span> std::string DefaultGravityName();
-<a name="l00503"></a>00503   };
-<a name="l00504"></a>00504 
-<a name="l00505"></a>00505 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00506"></a>00506 
-<a name="l00507"></a>00507 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00508"></a>00508 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00509"></a>00509 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00510"></a>00510 <span class="preprocessor"></span>
-<a name="l00511"></a>00511 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GRAVITYMODEL_HPP</span>
+<a name="l00167"></a>00167 <span class="comment">     * @param[in] name the name of the model.</span>
+<a name="l00168"></a>00168 <span class="comment">     * @param[in] path (optional) directory for data file.</span>
+<a name="l00169"></a>00169 <span class="comment">     *</span>
+<a name="l00170"></a>00170 <span class="comment">     * A filename is formed by appending ".egm" (World Gravity Model) to the</span>
+<a name="l00171"></a>00171 <span class="comment">     * name.  If \e path is specified (and is non-empty), then the file is</span>
+<a name="l00172"></a>00172 <span class="comment">     * loaded from directory, \e path.  Otherwise the path is given by</span>
+<a name="l00173"></a>00173 <span class="comment">     * DefaultGravityPath().  This may throw an exception because the file does</span>
+<a name="l00174"></a>00174 <span class="comment">     * not exist, is unreadable, or is corrupt.</span>
+<a name="l00175"></a>00175 <span class="comment">     *</span>
+<a name="l00176"></a>00176 <span class="comment">     * This file contains the metadata which specifies the properties of the</span>
+<a name="l00177"></a>00177 <span class="comment">     * model.  The coefficients for the spherical harmonic sums are obtained</span>
+<a name="l00178"></a>00178 <span class="comment">     * from a file obtained by appending ".cof" to metadata file (so the</span>
+<a name="l00179"></a>00179 <span class="comment">     * filename ends in ".egm.cof").</span>
+<a name="l00180"></a>00180 <span class="comment">     **********************************************************************/</span>
+<a name="l00181"></a>00181     <span class="keyword">explicit</span> GravityModel(<span class="keyword">const</span> std::string& name,
+<a name="l00182"></a>00182                           <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>);<span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment">    ///@}</span>
+<a name="l00184"></a>00184 <span class="comment"></span><span class="comment"></span>
+<a name="l00185"></a>00185 <span class="comment">    /** \name Compute gravity in geodetic coordinates</span>
+<a name="l00186"></a>00186 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00187"></a>00187 <span class="comment">    ///@{</span>
+<a name="l00188"></a>00188 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00189"></a>00189 <span class="comment">     * Evaluate the gravity at an arbitrary point above (or below) the</span>
+<a name="l00190"></a>00190 <span class="comment">     * ellipsoid.</span>
+<a name="l00191"></a>00191 <span class="comment">     *</span>
+<a name="l00192"></a>00192 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00193"></a>00193 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00194"></a>00194 <span class="comment">     * @param[in] h the height above the ellipsoid (meters).</span>
+<a name="l00195"></a>00195 <span class="comment">     * @param[out] gx the easterly component of the acceleration</span>
+<a name="l00196"></a>00196 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00197"></a>00197 <span class="comment">     * @param[out] gy the northerly component of the acceleration</span>
+<a name="l00198"></a>00198 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00199"></a>00199 <span class="comment">     * @param[out] gz the upward component of the acceleration</span>
+<a name="l00200"></a>00200 <span class="comment">     *   (m s<sup>-2</sup>); this is usually negative.</span>
+<a name="l00201"></a>00201 <span class="comment">     * @return \e W the sum of the gravitational and centrifugal potentials.</span>
+<a name="l00202"></a>00202 <span class="comment">     *</span>
+<a name="l00203"></a>00203 <span class="comment">     * The function includes the effects of the earth's rotation.</span>
+<a name="l00204"></a>00204 <span class="comment">     **********************************************************************/</span>
+<a name="l00205"></a>00205     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
+<a name="l00206"></a>00206                        <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gy, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment">    /**</span>
+<a name="l00209"></a>00209 <span class="comment">     * Evaluate the gravity disturbance vector at an arbitrary point above (or</span>
+<a name="l00210"></a>00210 <span class="comment">     * below) the ellipsoid.</span>
+<a name="l00211"></a>00211 <span class="comment">     *</span>
+<a name="l00212"></a>00212 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00213"></a>00213 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00214"></a>00214 <span class="comment">     * @param[in] h the height above the ellipsoid (meters).</span>
+<a name="l00215"></a>00215 <span class="comment">     * @param[out] deltax the easterly component of the disturbance vector</span>
+<a name="l00216"></a>00216 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00217"></a>00217 <span class="comment">     * @param[out] deltay the northerly component of the disturbance vector</span>
+<a name="l00218"></a>00218 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00219"></a>00219 <span class="comment">     * @param[out] deltaz the upward component of the disturbance vector</span>
+<a name="l00220"></a>00220 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00221"></a>00221 <span class="comment">     * @return \e T the corresponding disturbing potential.</span>
+<a name="l00222"></a>00222 <span class="comment">     **********************************************************************/</span>
+<a name="l00223"></a>00223     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">rea [...]
+<a name="l00224"></a>00224                            <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaz)
+<a name="l00225"></a>00225       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00226"></a>00226 <span class="comment"></span>
+<a name="l00227"></a>00227 <span class="comment">    /**</span>
+<a name="l00228"></a>00228 <span class="comment">     * Evaluate the geoid height.</span>
+<a name="l00229"></a>00229 <span class="comment">     *</span>
+<a name="l00230"></a>00230 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00231"></a>00231 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00232"></a>00232 <span class="comment">     * @return \e N the height of the geoid above the ReferenceEllipsoid()</span>
+<a name="l00233"></a>00233 <span class="comment">     *   (meters).</span>
+<a name="l00234"></a>00234 <span class="comment">     *</span>
+<a name="l00235"></a>00235 <span class="comment">     * This calls NormalGravity::U for ReferenceEllipsoid().  Some</span>
+<a name="l00236"></a>00236 <span class="comment">     * approximations are made in computing the geoid height so that the</span>
+<a name="l00237"></a>00237 <span class="comment">     * results of the NGA codes are reproduced accurately.  Details are given</span>
+<a name="l00238"></a>00238 <span class="comment">     * in \ref gravitygeoid.</span>
+<a name="l00239"></a>00239 <span class="comment">     **********************************************************************/</span>
+<a name="l00240"></a>00240     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00241"></a>00241 <span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment">    /**</span>
+<a name="l00243"></a>00243 <span class="comment">     * Evaluate the components of the gravity anomaly vector using the</span>
+<a name="l00244"></a>00244 <span class="comment">     * spherical approximation.</span>
+<a name="l00245"></a>00245 <span class="comment">     *</span>
+<a name="l00246"></a>00246 <span class="comment">     * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00247"></a>00247 <span class="comment">     * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00248"></a>00248 <span class="comment">     * @param[in] h the height above the ellipsoid (meters).</span>
+<a name="l00249"></a>00249 <span class="comment">     * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
+<a name="l00250"></a>00250 <span class="comment">     * @param[out] xi the northerly component of the deflection of the vertical</span>
+<a name="l00251"></a>00251 <span class="comment">     *  (degrees).</span>
+<a name="l00252"></a>00252 <span class="comment">     * @param[out] eta the easterly component of the deflection of the vertical</span>
+<a name="l00253"></a>00253 <span class="comment">     *  (degrees).</span>
+<a name="l00254"></a>00254 <span class="comment">     *</span>
+<a name="l00255"></a>00255 <span class="comment">     * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
+<a name="l00256"></a>00256 <span class="comment">     * so that the results of the NGA codes are reproduced accurately.</span>
+<a name="l00257"></a>00257 <span class="comment">     * approximations used here.  Details are given in \ref gravitygeoid.</span>
+<a name="l00258"></a>00258 <span class="comment">     **********************************************************************/</span>
+<a name="l00259"></a>00259     <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
+<a name="l00260"></a>00260                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00261"></a>00261 <span class="comment">    ///@}</span>
+<a name="l00262"></a>00262 <span class="comment"></span><span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment">    /** \name Compute gravity in geocentric coordinates</span>
+<a name="l00264"></a>00264 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00265"></a>00265 <span class="comment">    ///@{</span>
+<a name="l00266"></a>00266 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00267"></a>00267 <span class="comment">     * Evaluate the components of the acceleration due to gravity and the</span>
+<a name="l00268"></a>00268 <span class="comment">     * centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00269"></a>00269 <span class="comment">     *</span>
+<a name="l00270"></a>00270 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00271"></a>00271 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00272"></a>00272 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00273"></a>00273 <span class="comment">     * @param[out] gX the \e X component of the acceleration</span>
+<a name="l00274"></a>00274 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00275"></a>00275 <span class="comment">     * @param[out] gY the \e Y component of the acceleration</span>
+<a name="l00276"></a>00276 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00277"></a>00277 <span class="comment">     * @param[out] gZ the \e Z component of the acceleration</span>
+<a name="l00278"></a>00278 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00279"></a>00279 <span class="comment">     * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
+<a name="l00280"></a>00280 <span class="comment">     *   centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00281"></a>00281 <span class="comment">     *</span>
+<a name="l00282"></a>00282 <span class="comment">     * This calls NormalGravity::U for  ReferenceEllipsoid().</span>
+<a name="l00283"></a>00283 <span class="comment">     **********************************************************************/</span>
+<a name="l00284"></a>00284     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00285"></a>00285                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00286"></a>00286 <span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment">    /**</span>
+<a name="l00288"></a>00288 <span class="comment">     * Evaluate the components of the acceleration due to gravity in geocentric</span>
+<a name="l00289"></a>00289 <span class="comment">     * coordinates.</span>
+<a name="l00290"></a>00290 <span class="comment">     *</span>
+<a name="l00291"></a>00291 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00292"></a>00292 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00293"></a>00293 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00294"></a>00294 <span class="comment">     * @param[out] GX the \e X component of the acceleration</span>
+<a name="l00295"></a>00295 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00296"></a>00296 <span class="comment">     * @param[out] GY the \e Y component of the acceleration</span>
+<a name="l00297"></a>00297 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00298"></a>00298 <span class="comment">     * @param[out] GZ the \e Z component of the acceleration</span>
+<a name="l00299"></a>00299 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00300"></a>00300 <span class="comment">     * @return \e V = \e W - \e Phi the gravitational potential</span>
+<a name="l00301"></a>00301 <span class="comment">     *   (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00302"></a>00302 <span class="comment">     **********************************************************************/</span>
+<a name="l00303"></a>00303     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00304"></a>00304                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00305"></a>00305 <span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment">    /**</span>
+<a name="l00307"></a>00307 <span class="comment">     * Evaluate the components of the gravity disturbance in geocentric</span>
+<a name="l00308"></a>00308 <span class="comment">     * coordinates.</span>
+<a name="l00309"></a>00309 <span class="comment">     *</span>
+<a name="l00310"></a>00310 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00311"></a>00311 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00312"></a>00312 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00313"></a>00313 <span class="comment">     * @param[out] deltaX the \e X component of the gravity disturbance</span>
+<a name="l00314"></a>00314 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00315"></a>00315 <span class="comment">     * @param[out] deltaY the \e Y component of the gravity disturbance</span>
+<a name="l00316"></a>00316 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00317"></a>00317 <span class="comment">     * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
+<a name="l00318"></a>00318 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00319"></a>00319 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00320"></a>00320 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00321"></a>00321 <span class="comment">     **********************************************************************/</span>
+<a name="l00322"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a257022f1f125d88b0a6efdccfc5e7a41">00322</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real T(real X, real Y, real Z,
+<a name="l00323"></a>00323                  real& deltaX, real& deltaY, real& deltaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00324"></a>00324     { <span class="keywordflow">return</span> InternalT(X, Y, Z, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>); }
+<a name="l00325"></a>00325 <span class="comment"></span>
+<a name="l00326"></a>00326 <span class="comment">    /**</span>
+<a name="l00327"></a>00327 <span class="comment">     * Evaluate disturbing potential in geocentric coordinates.</span>
+<a name="l00328"></a>00328 <span class="comment">     *</span>
+<a name="l00329"></a>00329 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00330"></a>00330 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00331"></a>00331 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00332"></a>00332 <span class="comment">     * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00333"></a>00333 <span class="comment">     *   anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00334"></a>00334 <span class="comment">     **********************************************************************/</span>
+<a name="l00335"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">00335</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">T</a>(real X, real Y, real Z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00336"></a>00336       real dummy;
+<a name="l00337"></a>00337       <span class="keywordflow">return</span> InternalT(X, Y, Z, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
+<a name="l00338"></a>00338     }
+<a name="l00339"></a>00339 <span class="comment"></span>
+<a name="l00340"></a>00340 <span class="comment">    /**</span>
+<a name="l00341"></a>00341 <span class="comment">     * Evaluate the components of the acceleration due to normal gravity and the</span>
+<a name="l00342"></a>00342 <span class="comment">     * centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00343"></a>00343 <span class="comment">     *</span>
+<a name="l00344"></a>00344 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00345"></a>00345 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00346"></a>00346 <span class="comment">     * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00347"></a>00347 <span class="comment">     * @param[out] gammaX the \e X component of the normal acceleration</span>
+<a name="l00348"></a>00348 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00349"></a>00349 <span class="comment">     * @param[out] gammaY the \e Y component of the normal acceleration</span>
+<a name="l00350"></a>00350 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00351"></a>00351 <span class="comment">     * @param[out] gammaZ the \e Z component of the normal acceleration</span>
+<a name="l00352"></a>00352 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00353"></a>00353 <span class="comment">     * @return \e U = <i>V</i><sub>0</sub> + \e Phi the sum of the</span>
+<a name="l00354"></a>00354 <span class="comment">     *   normal gravitational and centrifugal potentials</span>
+<a name="l00355"></a>00355 <span class="comment">     *   (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00356"></a>00356 <span class="comment">     *</span>
+<a name="l00357"></a>00357 <span class="comment">     * This calls NormalGravity::U for  ReferenceEllipsoid().</span>
+<a name="l00358"></a>00358 <span class="comment">     **********************************************************************/</span>
+<a name="l00359"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af368d4f9015e076e5cc57ad87b8a185f">00359</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real U(real X, real Y, real Z,
+<a name="l00360"></a>00360                  real& gammaX, real& gammaY, real& gammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00361"></a>00361     { <span class="keywordflow">return</span> _earth.U(X, Y, Z, gammaX, gammaY, gammaZ); }
+<a name="l00362"></a>00362 <span class="comment"></span>
+<a name="l00363"></a>00363 <span class="comment">    /**</span>
+<a name="l00364"></a>00364 <span class="comment">     * Evaluate the centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00365"></a>00365 <span class="comment">     *</span>
+<a name="l00366"></a>00366 <span class="comment">     * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00367"></a>00367 <span class="comment">     * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00368"></a>00368 <span class="comment">     * @param[out] fX the \e X component of the centrifugal acceleration</span>
+<a name="l00369"></a>00369 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00370"></a>00370 <span class="comment">     * @param[out] fY the \e Y component of the centrifugal acceleration</span>
+<a name="l00371"></a>00371 <span class="comment">     *   (m s<sup>-2</sup>).</span>
+<a name="l00372"></a>00372 <span class="comment">     * @return \e Phi the centrifugal potential (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00373"></a>00373 <span class="comment">     *</span>
+<a name="l00374"></a>00374 <span class="comment">     * This calls NormalGravity::Phi for  ReferenceEllipsoid().</span>
+<a name="l00375"></a>00375 <span class="comment">     **********************************************************************/</span>
+<a name="l00376"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a80477ccafa1049964ee0cef40ae2eea6">00376</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Phi(real X, real Y, real& fX, real& fY) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00377"></a>00377     { <span class="keywordflow">return</span> _earth.Phi(X, Y, fX, fY); }<span class="comment"></span>
+<a name="l00378"></a>00378 <span class="comment">    ///@}</span>
+<a name="l00379"></a>00379 <span class="comment"></span><span class="comment"></span>
+<a name="l00380"></a>00380 <span class="comment">    /** \name Compute gravity on a circle of constant latitude</span>
+<a name="l00381"></a>00381 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00382"></a>00382 <span class="comment">    ///@{</span>
+<a name="l00383"></a>00383 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00384"></a>00384 <span class="comment">     * Create a GravityCircle object to allow the gravity field at many points</span>
+<a name="l00385"></a>00385 <span class="comment">     * with constant \e lat and \e h and varying \e lon to be computed</span>
+<a name="l00386"></a>00386 <span class="comment">     * efficiently.</span>
+<a name="l00387"></a>00387 <span class="comment">     *</span>
+<a name="l00388"></a>00388 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00389"></a>00389 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00390"></a>00390 <span class="comment">     * @param[in] caps bitor'ed combination of GravityModel::mask values</span>
+<a name="l00391"></a>00391 <span class="comment">     *   specifying the capabilities of the resulting GravityCircle object.</span>
+<a name="l00392"></a>00392 <span class="comment">     * @return a GravityCircle object whose member functions computes the</span>
+<a name="l00393"></a>00393 <span class="comment">     *   gravitational field at a particular values of \e lon.</span>
+<a name="l00394"></a>00394 <span class="comment">     *</span>
+<a name="l00395"></a>00395 <span class="comment">     * The GravityModel::mask values are</span>
+<a name="l00396"></a>00396 <span class="comment">     * - \e caps |= GravityModel::GRAVITY</span>
+<a name="l00397"></a>00397 <span class="comment">     * - \e caps |= GravityModel::DISTURBANCE</span>
+<a name="l00398"></a>00398 <span class="comment">     * - \e caps |= GravityModel::DISTURBING_POTENTIAL</span>
+<a name="l00399"></a>00399 <span class="comment">     * - \e caps |= GravityModel::SPHERICAL_ANOMALY</span>
+<a name="l00400"></a>00400 <span class="comment">     * - \e caps |= GravityModel::GEOID_HEIGHT</span>
+<a name="l00401"></a>00401 <span class="comment">     * .</span>
+<a name="l00402"></a>00402 <span class="comment">     * The default value of \e caps is GravityModel::ALL which turns on all the</span>
+<a name="l00403"></a>00403 <span class="comment">     * capabilities.  If an unsupported function is invoked, it will return</span>
+<a name="l00404"></a>00404 <span class="comment">     * NaNs.  Note that GravityModel::GEOID_HEIGHT will only be honored if \e h</span>
+<a name="l00405"></a>00405 <span class="comment">     * = 0.</span>
+<a name="l00406"></a>00406 <span class="comment">     *</span>
+<a name="l00407"></a>00407 <span class="comment">     * If the field at several points on a circle of latitude need to be</span>
+<a name="l00408"></a>00408 <span class="comment">     * calculated then creating a GravityCircle object and using its member</span>
+<a name="l00409"></a>00409 <span class="comment">     * functions will be substantially faster, especially for high-degree</span>
+<a name="l00410"></a>00410 <span class="comment">     * models.  See \ref gravityparallel for an example of using GravityCircle</span>
+<a name="l00411"></a>00411 <span class="comment">     * (together with OpenMP) to speed up the computation of geoid heights.</span>
+<a name="l00412"></a>00412 <span class="comment">     **********************************************************************/</span>
+<a name="l00413"></a>00413     <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <span class="keywordtype">unsigned</span> caps = ALL) <span class="keyword">const</span>;<span class="comment"></span>
+<a name="l00414"></a>00414 <span class="comment">    ///@}</span>
+<a name="l00415"></a>00415 <span class="comment"></span><span class="comment"></span>
+<a name="l00416"></a>00416 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00417"></a>00417 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00418"></a>00418 <span class="comment">    ///@{</span>
+<a name="l00419"></a>00419 <span class="comment"></span><span class="comment"></span>
+<a name="l00420"></a>00420 <span class="comment">    /**</span>
+<a name="l00421"></a>00421 <span class="comment">     * @return the NormalGravity object for the reference ellipsoid.</span>
+<a name="l00422"></a>00422 <span class="comment">     **********************************************************************/</span>
+<a name="l00423"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">00423</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>& <a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">retu [...]
+<a name="l00424"></a>00424 <span class="comment"></span>
+<a name="l00425"></a>00425 <span class="comment">    /**</span>
+<a name="l00426"></a>00426 <span class="comment">     * @return the description of the gravity model, if available, in the data</span>
+<a name="l00427"></a>00427 <span class="comment">     *   file; if absent, return "NONE".</span>
+<a name="l00428"></a>00428 <span class="comment">     **********************************************************************/</span>
+<a name="l00429"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">00429</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
+<a name="l00430"></a>00430 <span class="comment"></span>
+<a name="l00431"></a>00431 <span class="comment">    /**</span>
+<a name="l00432"></a>00432 <span class="comment">     * @return date of the model; if absent, return "UNKNOWN".</span>
+<a name="l00433"></a>00433 <span class="comment">     **********************************************************************/</span>
+<a name="l00434"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">00434</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
+<a name="l00435"></a>00435 <span class="comment"></span>
+<a name="l00436"></a>00436 <span class="comment">    /**</span>
+<a name="l00437"></a>00437 <span class="comment">     * @return full file name used to load the gravity model.</span>
+<a name="l00438"></a>00438 <span class="comment">     **********************************************************************/</span>
+<a name="l00439"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">00439</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
+<a name="l00440"></a>00440 <span class="comment"></span>
+<a name="l00441"></a>00441 <span class="comment">    /**</span>
+<a name="l00442"></a>00442 <span class="comment">     * @return "name" used to load the gravity model (from the first argument</span>
+<a name="l00443"></a>00443 <span class="comment">     *   of the constructor, but this may be overridden by the model file).</span>
+<a name="l00444"></a>00444 <span class="comment">     **********************************************************************/</span>
+<a name="l00445"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">00445</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
+<a name="l00446"></a>00446 <span class="comment"></span>
+<a name="l00447"></a>00447 <span class="comment">    /**</span>
+<a name="l00448"></a>00448 <span class="comment">     * @return directory used to load the gravity model.</span>
+<a name="l00449"></a>00449 <span class="comment">     **********************************************************************/</span>
+<a name="l00450"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">00450</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">GravityModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
+<a name="l00451"></a>00451 <span class="comment"></span>
+<a name="l00452"></a>00452 <span class="comment">    /**</span>
+<a name="l00453"></a>00453 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).</span>
+<a name="l00454"></a>00454 <span class="comment">     **********************************************************************/</span>
+<a name="l00455"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">00455</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00456"></a>00456 <span class="comment"></span>
+<a name="l00457"></a>00457 <span class="comment">    /**</span>
+<a name="l00458"></a>00458 <span class="comment">     * @return \e GM the mass constant of the model</span>
+<a name="l00459"></a>00459 <span class="comment">     *   (m<sup>3</sup> s<sup>-2</sup>); this is the product of \e G the</span>
+<a name="l00460"></a>00460 <span class="comment">     *   gravitational constant and \e M the mass of the earth (usually</span>
+<a name="l00461"></a>00461 <span class="comment">     *   including the mass of the earth's atmosphere).</span>
+<a name="l00462"></a>00462 <span class="comment">     **********************************************************************/</span>
+<a name="l00463"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">00463</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">MassConstant</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _GMmodel; }
+<a name="l00464"></a>00464 <span class="comment"></span>
+<a name="l00465"></a>00465 <span class="comment">    /**</span>
+<a name="l00466"></a>00466 <span class="comment">     * @return \e GM the mass constant of the ReferenceEllipsoid()</span>
+<a name="l00467"></a>00467 <span class="comment">     *   (m<sup>3</sup> s<sup>-2</sup>).</span>
+<a name="l00468"></a>00468 <span class="comment">     **********************************************************************/</span>
+<a name="l00469"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a4e6b9d48f26544a45c5509a87eb334e7">00469</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real ReferenceMassConstant() <span class="keyword">const</span> throw()
+<a name="l00470"></a>00470     { <span class="keywordflow">return</span> _earth.MassConstant(); }
+<a name="l00471"></a>00471 <span class="comment"></span>
+<a name="l00472"></a>00472 <span class="comment">    /**</span>
+<a name="l00473"></a>00473 <span class="comment">     * @return \e omega the angular velocity of the model and the</span>
+<a name="l00474"></a>00474 <span class="comment">     *   ReferenceEllipsoid() (rad s<sup>-1</sup>).</span>
+<a name="l00475"></a>00475 <span class="comment">     **********************************************************************/</span>
+<a name="l00476"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aeb3d751ba7719e57e0266b65ee7d63d8">00476</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real AngularVelocity() <span class="keyword">const</span> throw()
+<a name="l00477"></a>00477     { <span class="keywordflow">return</span> _earth.AngularVelocity(); }
+<a name="l00478"></a>00478 <span class="comment"></span>
+<a name="l00479"></a>00479 <span class="comment">    /**</span>
+<a name="l00480"></a>00480 <span class="comment">     * @return \e f the flattening of the ellipsoid.</span>
+<a name="l00481"></a>00481 <span class="comment">     **********************************************************************/</span>
+<a name="l00482"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">00482</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class=" [...]
+<a name="l00483"></a>00483 <span class="comment">    ///@}</span>
+<a name="l00484"></a>00484 <span class="comment"></span><span class="comment"></span>
+<a name="l00485"></a>00485 <span class="comment">    /**</span>
+<a name="l00486"></a>00486 <span class="comment">     * @return the default path for gravity model data files.</span>
+<a name="l00487"></a>00487 <span class="comment">     *</span>
+<a name="l00488"></a>00488 <span class="comment">     * This is the value of the environment variable GRAVITY_PATH, if set;</span>
+<a name="l00489"></a>00489 <span class="comment">     * otherwise, it is $GEOGRAPHICLIB_DATA/gravity if the environment variable</span>
+<a name="l00490"></a>00490 <span class="comment">     * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
+<a name="l00491"></a>00491 <span class="comment">     * (/usr/local/share/GeographicLib/gravity on non-Windows systems and</span>
+<a name="l00492"></a>00492 <span class="comment">     * C:/Documents and Settings/All Users/Application</span>
+<a name="l00493"></a>00493 <span class="comment">     * Data/GeographicLib/gravity on Windows systems).</span>
+<a name="l00494"></a>00494 <span class="comment">     **********************************************************************/</span>
+<a name="l00495"></a>00495     <span class="keyword">static</span> std::string DefaultGravityPath();
+<a name="l00496"></a>00496 <span class="comment"></span>
+<a name="l00497"></a>00497 <span class="comment">    /**</span>
+<a name="l00498"></a>00498 <span class="comment">     * @return the default name for the gravity model.</span>
+<a name="l00499"></a>00499 <span class="comment">     *</span>
+<a name="l00500"></a>00500 <span class="comment">     * This is the value of the environment variable GRAVITY_NAME, if set,</span>
+<a name="l00501"></a>00501 <span class="comment">     * otherwise, it is "egm96".  The GravityModel class does not use</span>
+<a name="l00502"></a>00502 <span class="comment">     * this function; it is just provided as a convenience for a calling</span>
+<a name="l00503"></a>00503 <span class="comment">     * program when constructing a GravityModel object.</span>
+<a name="l00504"></a>00504 <span class="comment">     **********************************************************************/</span>
+<a name="l00505"></a>00505     <span class="keyword">static</span> std::string DefaultGravityName();
+<a name="l00506"></a>00506   };
+<a name="l00507"></a>00507 
+<a name="l00508"></a>00508 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00509"></a>00509 
+<a name="l00510"></a>00510 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00511"></a>00511 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00512"></a>00512 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00513"></a>00513 <span class="preprocessor"></span>
+<a name="l00514"></a>00514 <span class="preprocessor">#endif  // GEOGRAPHICLIB_GRAVITYMODEL_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gravity_8cpp.html b/doc/html/Gravity_8cpp.html
index dbe490b..6e10611 100644
--- a/doc/html/Gravity_8cpp.html
+++ b/doc/html/Gravity_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gravity.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for evaluating gravity fields. </p>
-<p>Copyright (c) Charles Karney (2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o Gravity \ <a class="el" href="Gravity_8cpp.html" title="Command line utility for evaluating gravity fields.">Gravity.cpp</a> \ ../src/CircularEngine.cpp \ ../src/DMS.cpp \ ../src/Geocentric.cpp \ ../src/GravityCircle.cpp \ ../src/GravityModel.cpp \ ../src/NormalGravity.cpp \ ../src/SphericalEngine.cpp \ ../src/Utility.cpp</p>
 <p>See the <a href="Gravity.1.html">man page</a> for usage information. </p>
 
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Gravity_8cpp_source.html#l00036">36</a> of file <a class="el" href="Gravity_8cpp_source.html">Gravity.cpp</a>.</p>
 
-<p>References <a class="el" href="GravityModel_8cpp_source.html#l00309">GeographicLib::GravityModel::Circle()</a>, <a class="el" href="GravityModel_8hpp_source.html#l00431">GeographicLib::GravityModel::DateTime()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00356">GeographicLib::GravityModel::DefaultGravityN [...]
+<p>References <a class="el" href="GravityModel_8cpp_source.html#l00356">GeographicLib::GravityModel::DefaultGravityName()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>, <a class="el" href="GravityModel_8cpp_source.html#l00343">GeographicLib::GravityModel::DefaultGravityPath()</a>, <a class="el" href="GravityModel_8hpp_source.html#l00439">GeographicLib::GravityModel [...]
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Gravity_8cpp_source.html b/doc/html/Gravity_8cpp_source.html
index 1357d56..60ecfe3 100644
--- a/doc/html/Gravity_8cpp_source.html
+++ b/doc/html/Gravity_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gravity.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Gravity.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for evaluating gravity fields</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under</span>
-<a name="l00006"></a>00006 <span class="comment"> * the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -85,265 +100,290 @@
 <a name="l00036"></a><a class="code" href="Gravity_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00036</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00037"></a>00037   <span class="keywordflow">try</span> {
 <a name="l00038"></a>00038     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00039"></a>00039     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00039"></a>00039     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00040"></a>00040     <span class="keywordtype">bool</span> verbose = <span class="keyword">false</span>;
 <a name="l00041"></a>00041     std::string dir;
 <a name="l00042"></a>00042     std::string model = <a class="code" href="classGeographicLib_1_1GravityModel.html#ad4a776d68b60e85275c0e580d3c7caba">GravityModel::DefaultGravityName</a>();
-<a name="l00043"></a>00043     std::string istring, ifile, ofile;
-<a name="l00044"></a>00044     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat = 0, h = 0;
-<a name="l00045"></a>00045     <span class="keywordtype">bool</span> circle = <span class="keyword">false</span>;
-<a name="l00046"></a>00046     <span class="keywordtype">int</span> prec = -1;
-<a name="l00047"></a>00047     <span class="keyword">enum</span> {
-<a name="l00048"></a>00048       GRAVITY = 0,
-<a name="l00049"></a>00049       DISTURBANCE = 1,
-<a name="l00050"></a>00050       ANOMALY = 2,
-<a name="l00051"></a>00051       UNDULATION = 3,
-<a name="l00052"></a>00052     };
-<a name="l00053"></a>00053     <span class="keywordtype">unsigned</span> mode = GRAVITY;
-<a name="l00054"></a>00054     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00055"></a>00055       std::string arg(argv[m]);
-<a name="l00056"></a>00056       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
-<a name="l00057"></a>00057         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00058"></a>00058         model = argv[m];
-<a name="l00059"></a>00059       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
-<a name="l00060"></a>00060         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00061"></a>00061         dir = argv[m];
-<a name="l00062"></a>00062       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-G"</span>)
-<a name="l00063"></a>00063         mode = GRAVITY;
-<a name="l00064"></a>00064       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-D"</span>)
-<a name="l00065"></a>00065         mode = DISTURBANCE;
-<a name="l00066"></a>00066       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-A"</span>)
-<a name="l00067"></a>00067         mode = ANOMALY;
-<a name="l00068"></a>00068       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>)
-<a name="l00069"></a>00069         mode = UNDULATION;
-<a name="l00070"></a>00070       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
-<a name="l00071"></a>00071         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00072"></a>00072         <span class="keywordflow">try</span> {
-<a name="l00073"></a>00073           <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00074"></a>00074           lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
-<a name="l00075"></a>00075           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
-<a name="l00076"></a>00076             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
-<a name="l00077"></a>00077           <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
-<a name="l00078"></a>00078             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
-<a name="l00079"></a>00079           h =  Utility::num<real>(std::string(argv[++m]));
-<a name="l00080"></a>00080           circle = <span class="keyword">true</span>;
-<a name="l00081"></a>00081         }
-<a name="l00082"></a>00082         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00083"></a>00083           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00084"></a>00084                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085           <span class="keywordflow">return</span> 1;
-<a name="l00086"></a>00086         }
-<a name="l00087"></a>00087       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00088"></a>00088         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00089"></a>00089         <span class="keywordflow">try</span> {
-<a name="l00090"></a>00090           prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00091"></a>00091         }
-<a name="l00092"></a>00092         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00093"></a>00093           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00094"></a>00094           <span class="keywordflow">return</span> 1;
-<a name="l00095"></a>00095         }
-<a name="l00096"></a>00096       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
-<a name="l00097"></a>00097         verbose = <span class="keyword">true</span>;
-<a name="l00098"></a>00098       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00099"></a>00099         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00100"></a>00100         istring = argv[m];
-<a name="l00101"></a>00101       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00102"></a>00102         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103         ifile = argv[m];
-<a name="l00104"></a>00104       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00105"></a>00105         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00106"></a>00106         ofile = argv[m];
-<a name="l00107"></a>00107       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00108"></a>00108         std::cout
-<a name="l00109"></a>00109           << argv[0]
-<a name="l00110"></a>00110           << <span class="stringliteral">": $Id: fe8569b6e279ccef9b0576ef502dbc7537e82396 $\n"</span>
-<a name="l00111"></a>00111           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00112"></a>00112         <span class="keywordflow">return</span> 0;
-<a name="l00113"></a>00113       } <span class="keywordflow">else</span> {
-<a name="l00114"></a>00114         <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00115"></a>00115         <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
-<a name="l00116"></a>00116           std::cout<< <span class="stringliteral">"\nDefault gravity path = \""</span>
-<a name="l00117"></a>00117                    << <a class="code" href="classGeographicLib_1_1GravityModel.html#a0fdf62e41828ae7ae183d9e876f37954">GravityModel::DefaultGravityPath</a>()
-<a name="l00118"></a>00118                    << <span class="stringliteral">"\"\nDefault gravity name = \""</span>
-<a name="l00119"></a>00119                    << <a class="code" href="classGeographicLib_1_1GravityModel.html#ad4a776d68b60e85275c0e580d3c7caba">GravityModel::DefaultGravityName</a>()
-<a name="l00120"></a>00120                    << <span class="stringliteral">"\"\n"</span>;
-<a name="l00121"></a>00121         <span class="keywordflow">return</span> retval;
-<a name="l00122"></a>00122       }
-<a name="l00123"></a>00123     }
-<a name="l00124"></a>00124 
-<a name="l00125"></a>00125     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00126"></a>00126       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00127"></a>00127       <span class="keywordflow">return</span> 1;
-<a name="l00128"></a>00128     }
-<a name="l00129"></a>00129     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00130"></a>00130     std::ifstream infile;
-<a name="l00131"></a>00131     std::istringstream instring;
-<a name="l00132"></a>00132     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00133"></a>00133       infile.open(ifile.c_str());
-<a name="l00134"></a>00134       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00135"></a>00135         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00136"></a>00136         <span class="keywordflow">return</span> 1;
-<a name="l00137"></a>00137       }
-<a name="l00138"></a>00138     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00139"></a>00139       std::string::size_type m = 0;
-<a name="l00140"></a>00140       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00141"></a>00141         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00142"></a>00142         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00143"></a>00143           <span class="keywordflow">break</span>;
-<a name="l00144"></a>00144         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00145"></a>00145       }
-<a name="l00146"></a>00146       instring.str(istring);
-<a name="l00147"></a>00147     }
-<a name="l00148"></a>00148     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00149"></a>00149       (!istring.empty() ? &instring : &std::cin);
-<a name="l00150"></a>00150 
-<a name="l00151"></a>00151     std::ofstream outfile;
-<a name="l00152"></a>00152     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00153"></a>00153     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00154"></a>00154       outfile.open(ofile.c_str());
-<a name="l00155"></a>00155       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00156"></a>00156         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00157"></a>00157         <span class="keywordflow">return</span> 1;
-<a name="l00158"></a>00158       }
-<a name="l00159"></a>00159     }
-<a name="l00160"></a>00160     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00043"></a>00043     std::string istring, ifile, ofile, cdelim;
+<a name="l00044"></a>00044     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00045"></a>00045     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat = 0, h = 0;
+<a name="l00046"></a>00046     <span class="keywordtype">bool</span> circle = <span class="keyword">false</span>;
+<a name="l00047"></a>00047     <span class="keywordtype">int</span> prec = -1;
+<a name="l00048"></a>00048     <span class="keyword">enum</span> {
+<a name="l00049"></a>00049       GRAVITY = 0,
+<a name="l00050"></a>00050       DISTURBANCE = 1,
+<a name="l00051"></a>00051       ANOMALY = 2,
+<a name="l00052"></a>00052       UNDULATION = 3,
+<a name="l00053"></a>00053     };
+<a name="l00054"></a>00054     <span class="keywordtype">unsigned</span> mode = GRAVITY;
+<a name="l00055"></a>00055     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00056"></a>00056       std::string arg(argv[m]);
+<a name="l00057"></a>00057       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
+<a name="l00058"></a>00058         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00059"></a>00059         model = argv[m];
+<a name="l00060"></a>00060       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00061"></a>00061         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00062"></a>00062         dir = argv[m];
+<a name="l00063"></a>00063       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-G"</span>)
+<a name="l00064"></a>00064         mode = GRAVITY;
+<a name="l00065"></a>00065       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-D"</span>)
+<a name="l00066"></a>00066         mode = DISTURBANCE;
+<a name="l00067"></a>00067       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-A"</span>)
+<a name="l00068"></a>00068         mode = ANOMALY;
+<a name="l00069"></a>00069       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>)
+<a name="l00070"></a>00070         mode = UNDULATION;
+<a name="l00071"></a>00071       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
+<a name="l00072"></a>00072         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00073"></a>00073         <span class="keywordflow">try</span> {
+<a name="l00074"></a>00074           <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00075"></a>00075           lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
+<a name="l00076"></a>00076           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
+<a name="l00077"></a>00077             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
+<a name="l00078"></a>00078           <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
+<a name="l00079"></a>00079             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
+<a name="l00080"></a>00080           h = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[++m]));
+<a name="l00081"></a>00081           circle = <span class="keyword">true</span>;
+<a name="l00082"></a>00082         }
+<a name="l00083"></a>00083         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00084"></a>00084           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00085"></a>00085                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00086"></a>00086           <span class="keywordflow">return</span> 1;
+<a name="l00087"></a>00087         }
+<a name="l00088"></a>00088       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00089"></a>00089         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00090"></a>00090         <span class="keywordflow">try</span> {
+<a name="l00091"></a>00091           prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00092"></a>00092         }
+<a name="l00093"></a>00093         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00094"></a>00094           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00095"></a>00095           <span class="keywordflow">return</span> 1;
+<a name="l00096"></a>00096         }
+<a name="l00097"></a>00097       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
+<a name="l00098"></a>00098         verbose = <span class="keyword">true</span>;
+<a name="l00099"></a>00099       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00100"></a>00100         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101         istring = argv[m];
+<a name="l00102"></a>00102       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00103"></a>00103         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104         ifile = argv[m];
+<a name="l00105"></a>00105       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00106"></a>00106         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107         ofile = argv[m];
+<a name="l00108"></a>00108       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00109"></a>00109         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00110"></a>00110         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00111"></a>00111           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00112"></a>00112           <span class="keywordflow">return</span> 1;
+<a name="l00113"></a>00113         }
+<a name="l00114"></a>00114         lsep = argv[m][0];
+<a name="l00115"></a>00115       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00116"></a>00116         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00117"></a>00117         cdelim = argv[m];
+<a name="l00118"></a>00118       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00119"></a>00119         std::cout
+<a name="l00120"></a>00120           << argv[0]
+<a name="l00121"></a>00121           << <span class="stringliteral">": $Id: c87c647c3e973929010cdb2fd5d1eaa6aa739eca $\n"</span>
+<a name="l00122"></a>00122           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00123"></a>00123         <span class="keywordflow">return</span> 0;
+<a name="l00124"></a>00124       } <span class="keywordflow">else</span> {
+<a name="l00125"></a>00125         <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00126"></a>00126         <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
+<a name="l00127"></a>00127           std::cout<< <span class="stringliteral">"\nDefault gravity path = \""</span>
+<a name="l00128"></a>00128                    << <a class="code" href="classGeographicLib_1_1GravityModel.html#a0fdf62e41828ae7ae183d9e876f37954">GravityModel::DefaultGravityPath</a>()
+<a name="l00129"></a>00129                    << <span class="stringliteral">"\"\nDefault gravity name = \""</span>
+<a name="l00130"></a>00130                    << <a class="code" href="classGeographicLib_1_1GravityModel.html#ad4a776d68b60e85275c0e580d3c7caba">GravityModel::DefaultGravityName</a>()
+<a name="l00131"></a>00131                    << <span class="stringliteral">"\"\n"</span>;
+<a name="l00132"></a>00132         <span class="keywordflow">return</span> retval;
+<a name="l00133"></a>00133       }
+<a name="l00134"></a>00134     }
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00137"></a>00137       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00138"></a>00138       <span class="keywordflow">return</span> 1;
+<a name="l00139"></a>00139     }
+<a name="l00140"></a>00140     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00141"></a>00141     std::ifstream infile;
+<a name="l00142"></a>00142     std::istringstream instring;
+<a name="l00143"></a>00143     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00144"></a>00144       infile.open(ifile.c_str());
+<a name="l00145"></a>00145       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00146"></a>00146         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00147"></a>00147         <span class="keywordflow">return</span> 1;
+<a name="l00148"></a>00148       }
+<a name="l00149"></a>00149     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00150"></a>00150       std::string::size_type m = 0;
+<a name="l00151"></a>00151       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00152"></a>00152         m = istring.find(lsep, m);
+<a name="l00153"></a>00153         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00154"></a>00154           <span class="keywordflow">break</span>;
+<a name="l00155"></a>00155         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00156"></a>00156       }
+<a name="l00157"></a>00157       instring.str(istring);
+<a name="l00158"></a>00158     }
+<a name="l00159"></a>00159     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00160"></a>00160       (!istring.empty() ? &instring : &std::cin);
 <a name="l00161"></a>00161 
-<a name="l00162"></a>00162     <span class="keywordflow">switch</span> (mode) {
-<a name="l00163"></a>00163     <span class="keywordflow">case</span> GRAVITY:
-<a name="l00164"></a>00164       prec = std::min(16, prec < 0 ? 5 : prec);
-<a name="l00165"></a>00165       <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166     <span class="keywordflow">case</span> DISTURBANCE:
-<a name="l00167"></a>00167     <span class="keywordflow">case</span> ANOMALY:
-<a name="l00168"></a>00168       prec = std::min(14, prec < 0 ? 3 : prec);
-<a name="l00169"></a>00169       <span class="keywordflow">break</span>;
-<a name="l00170"></a>00170     <span class="keywordflow">case</span> UNDULATION:
-<a name="l00171"></a>00171     <span class="keywordflow">default</span>:
-<a name="l00172"></a>00172       prec = std::min(12, prec < 0 ? 4 : prec);
-<a name="l00173"></a>00173       <span class="keywordflow">break</span>;
-<a name="l00174"></a>00174     }
-<a name="l00175"></a>00175     <span class="keywordtype">int</span> retval = 0;
-<a name="l00176"></a>00176     <span class="keywordflow">try</span> {
-<a name="l00177"></a>00177       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(model, dir);
-<a name="l00178"></a>00178       <span class="keywordflow">if</span> (circle) {
-<a name="l00179"></a>00179         <span class="keywordflow">if</span> (!Math::isfinite<real>(h))
-<a name="l00180"></a>00180           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad height"</span>);
-<a name="l00181"></a>00181         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
-<a name="l00182"></a>00182           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height should be zero for geoid undulations"</span>);
-<a name="l00183"></a>00183       }
-<a name="l00184"></a>00184       <span class="keywordflow">if</span> (verbose) {
-<a name="l00185"></a>00185         std::cerr << <span class="stringliteral">"Gravity file: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>()      << <span class="stringliteral">"\n"</span>
-<a name="l00186"></a>00186                   << <span class="stringliteral">"Name: "</span>         << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00187"></a>00187                   << <span class="stringliteral">"Description: "</span>  << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>()      << <span class="stringliteral">"\n"</span>
-<a name="l00188"></a>00188                   << <span class="stringliteral">"Date & Time: "</span>  << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>()         << <span class="stringliteral">"\n"</span>;
-<a name="l00189"></a>00189       }
-<a name="l00190"></a>00190       <span class="keywordtype">unsigned</span> mask = (mode == GRAVITY ? <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">GravityModel::GRAVITY</a> :
-<a name="l00191"></a>00191                        (mode == DISTURBANCE ? <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">GravityModel::DISTURBANCE</a> :
-<a name="l00192"></a>00192                         (mode == ANOMALY ? <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">GravityModel::SPHERICAL_ANOMALY</a> :
-<a name="l00193"></a>00193                          <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">GravityModel::GEOID_HEIGHT</a>))); <span class="comment">// mode == UNDULATION</span>
-<a name="l00194"></a>00194       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(circle ? g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">Circle</a>(lat, h, mask) : <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>());
-<a name="l00195"></a>00195       std::string s, stra, strb;
-<a name="l00196"></a>00196       <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00197"></a>00197         <span class="keywordflow">try</span> {
-<a name="l00198"></a>00198           std::istringstream str(s);
-<a name="l00199"></a>00199           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
-<a name="l00200"></a>00200           <span class="keywordflow">if</span> (circle) {
-<a name="l00201"></a>00201             <span class="keywordflow">if</span> (!(str >> strb))
-<a name="l00202"></a>00202               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00203"></a>00203             <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00204"></a>00204             lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
-<a name="l00205"></a>00205             <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00206"></a>00206               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
-<a name="l00207"></a>00207             <span class="keywordflow">if</span> (lon < -180 || lon > 360)
-<a name="l00208"></a>00208               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
-<a name="l00209"></a>00209           } <span class="keywordflow">else</span> {
-<a name="l00210"></a>00210             <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00211"></a>00211               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00212"></a>00212             <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00213"></a>00213             h = 0;
-<a name="l00214"></a>00214             <span class="keywordflow">if</span> (!(str >> h))    <span class="comment">// h is optional</span>
-<a name="l00215"></a>00215               str.clear();
-<a name="l00216"></a>00216             <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
-<a name="l00217"></a>00217                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height must be zero for geoid heights"</span>);
-<a name="l00218"></a>00218           }
-<a name="l00219"></a>00219           <span class="keywordflow">if</span> (str >> stra)
-<a name="l00220"></a>00220             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
-<a name="l00221"></a>00221           <span class="keywordflow">switch</span> (mode) {
-<a name="l00222"></a>00222           <span class="keywordflow">case</span> GRAVITY:
-<a name="l00223"></a>00223             {
-<a name="l00224"></a>00224               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gx, gy, gz;
-<a name="l00225"></a>00225               <span class="keywordflow">if</span> (circle) {
-<a name="l00226"></a>00226                 c.Gravity(lon, gx, gy, gz);
-<a name="l00227"></a>00227               } <span class="keywordflow">else</span> {
-<a name="l00228"></a>00228                 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">Gravity</a>(lat, lon, h, gx, gy, gz);
-<a name="l00229"></a>00229               }
-<a name="l00230"></a>00230               *output << Utility::str<real>(gx, prec) << <span class="stringliteral">" "</span>
-<a name="l00231"></a>00231                       << Utility::str<real>(gy, prec) << <span class="stringliteral">" "</span>
-<a name="l00232"></a>00232                       << Utility::str<real>(gz, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00233"></a>00233             }
-<a name="l00234"></a>00234             <span class="keywordflow">break</span>;
-<a name="l00235"></a>00235           <span class="keywordflow">case</span> DISTURBANCE:
-<a name="l00236"></a>00236             {
-<a name="l00237"></a>00237               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> deltax, deltay, deltaz;
-<a name="l00238"></a>00238               <span class="keywordflow">if</span> (circle) {
-<a name="l00239"></a>00239                 c.Disturbance(lon, deltax, deltay, deltaz);
-<a name="l00240"></a>00240               } <span class="keywordflow">else</span> {
-<a name="l00241"></a>00241                 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">Disturbance</a>(lat, lon, h, deltax, deltay, deltaz);
-<a name="l00242"></a>00242               }
-<a name="l00243"></a>00243               <span class="comment">// Convert to mGals</span>
-<a name="l00244"></a>00244               *output << Utility::str<real>(deltax * 1e5, prec) << <span class="stringliteral">" "</span>
-<a name="l00245"></a>00245                       << Utility::str<real>(deltay * 1e5, prec) << <span class="stringliteral">" "</span>
-<a name="l00246"></a>00246                       << Utility::str<real>(deltaz * 1e5, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00247"></a>00247             }
-<a name="l00248"></a>00248             <span class="keywordflow">break</span>;
-<a name="l00249"></a>00249           <span class="keywordflow">case</span> ANOMALY:
-<a name="l00250"></a>00250             {
-<a name="l00251"></a>00251               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dg01, xi, eta;
-<a name="l00252"></a>00252               <span class="keywordflow">if</span> (circle)
-<a name="l00253"></a>00253                 c.SphericalAnomaly(lon, Dg01, xi, eta);
-<a name="l00254"></a>00254               <span class="keywordflow">else</span>
-<a name="l00255"></a>00255                 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">SphericalAnomaly</a>(lat, lon, h, Dg01, xi, eta);
-<a name="l00256"></a>00256               Dg01 *= 1e5;      <span class="comment">// Convert to mGals</span>
-<a name="l00257"></a>00257               xi *= 3600;       <span class="comment">// Convert to arcsecs</span>
-<a name="l00258"></a>00258               eta *= 3600;
-<a name="l00259"></a>00259               *output << Utility::str<real>(Dg01, prec) << <span class="stringliteral">" "</span>
-<a name="l00260"></a>00260                       << Utility::str<real>(xi, prec) << <span class="stringliteral">" "</span>
-<a name="l00261"></a>00261                       << Utility::str<real>(eta, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00262"></a>00262             }
-<a name="l00263"></a>00263             <span class="keywordflow">break</span>;
-<a name="l00264"></a>00264           <span class="keywordflow">case</span> UNDULATION:
-<a name="l00265"></a>00265           <span class="keywordflow">default</span>:
-<a name="l00266"></a>00266             {
-<a name="l00267"></a>00267               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> N = circle ? c.GeoidHeight(lon) : g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GeoidHeight</a>(lat, lon);
-<a name="l00268"></a>00268               *output << Utility::str<real>(N, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00269"></a>00269             }
-<a name="l00270"></a>00270             <span class="keywordflow">break</span>;
-<a name="l00271"></a>00271           }
-<a name="l00272"></a>00272         }
-<a name="l00273"></a>00273         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00274"></a>00274           *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00275"></a>00275           retval = 1;
-<a name="l00276"></a>00276         }
-<a name="l00277"></a>00277       }
-<a name="l00278"></a>00278     }
-<a name="l00279"></a>00279     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00280"></a>00280       std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00281"></a>00281       retval = 1;
-<a name="l00282"></a>00282     }
-<a name="l00283"></a>00283     <span class="keywordflow">return</span> retval;
-<a name="l00284"></a>00284   }
-<a name="l00285"></a>00285   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00286"></a>00286     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00287"></a>00287     <span class="keywordflow">return</span> 1;
-<a name="l00288"></a>00288   }
-<a name="l00289"></a>00289   <span class="keywordflow">catch</span> (...) {
-<a name="l00290"></a>00290     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00291"></a>00291     <span class="keywordflow">return</span> 1;
-<a name="l00292"></a>00292   }
-<a name="l00293"></a>00293 }
+<a name="l00162"></a>00162     std::ofstream outfile;
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00164"></a>00164     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00165"></a>00165       outfile.open(ofile.c_str());
+<a name="l00166"></a>00166       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00167"></a>00167         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00168"></a>00168         <span class="keywordflow">return</span> 1;
+<a name="l00169"></a>00169       }
+<a name="l00170"></a>00170     }
+<a name="l00171"></a>00171     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00172"></a>00172 
+<a name="l00173"></a>00173     <span class="keywordflow">switch</span> (mode) {
+<a name="l00174"></a>00174     <span class="keywordflow">case</span> GRAVITY:
+<a name="l00175"></a>00175       prec = std::min(16, prec < 0 ? 5 : prec);
+<a name="l00176"></a>00176       <span class="keywordflow">break</span>;
+<a name="l00177"></a>00177     <span class="keywordflow">case</span> DISTURBANCE:
+<a name="l00178"></a>00178     <span class="keywordflow">case</span> ANOMALY:
+<a name="l00179"></a>00179       prec = std::min(14, prec < 0 ? 3 : prec);
+<a name="l00180"></a>00180       <span class="keywordflow">break</span>;
+<a name="l00181"></a>00181     <span class="keywordflow">case</span> UNDULATION:
+<a name="l00182"></a>00182     <span class="keywordflow">default</span>:
+<a name="l00183"></a>00183       prec = std::min(12, prec < 0 ? 4 : prec);
+<a name="l00184"></a>00184       <span class="keywordflow">break</span>;
+<a name="l00185"></a>00185     }
+<a name="l00186"></a>00186     <span class="keywordtype">int</span> retval = 0;
+<a name="l00187"></a>00187     <span class="keywordflow">try</span> {
+<a name="l00188"></a>00188       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(model, dir);
+<a name="l00189"></a>00189       <span class="keywordflow">if</span> (circle) {
+<a name="l00190"></a>00190         <span class="keywordflow">if</span> (!Math::isfinite<real>(h))
+<a name="l00191"></a>00191           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad height"</span>);
+<a name="l00192"></a>00192         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
+<a name="l00193"></a>00193           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height should be zero for geoid undulations"</span>);
+<a name="l00194"></a>00194       }
+<a name="l00195"></a>00195       <span class="keywordflow">if</span> (verbose) {
+<a name="l00196"></a>00196         std::cerr << <span class="stringliteral">"Gravity file: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>()      << <span class="stringliteral">"\n"</span>
+<a name="l00197"></a>00197                   << <span class="stringliteral">"Name: "</span>         << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00198"></a>00198                   << <span class="stringliteral">"Description: "</span>  << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>()      << <span class="stringliteral">"\n"</span>
+<a name="l00199"></a>00199                   << <span class="stringliteral">"Date & Time: "</span>  << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>()         << <span class="stringliteral">"\n"</span>;
+<a name="l00200"></a>00200       }
+<a name="l00201"></a>00201       <span class="keywordtype">unsigned</span> mask = (mode == GRAVITY ? <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::GRAVITY :
+<a name="l00202"></a>00202                        (mode == DISTURBANCE ? <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::DISTURBANCE :
+<a name="l00203"></a>00203                         (mode == ANOMALY ? <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::SPHERICAL_ANOMALY :
+<a name="l00204"></a>00204                          <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::GEOID_HEIGHT))); <span class="comment">// mode == UNDULATION</span>
+<a name="l00205"></a>00205       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(circle ? g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">Circle</a>(lat, h, mask) : <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>());
+<a name="l00206"></a>00206       std::string s, stra, strb;
+<a name="l00207"></a>00207       <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00208"></a>00208         <span class="keywordflow">try</span> {
+<a name="l00209"></a>00209           std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00210"></a>00210           <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00211"></a>00211             std::string::size_type m = s.find(cdelim);
+<a name="l00212"></a>00212             <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00213"></a>00213               eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00214"></a>00214               s = s.substr(0, m);
+<a name="l00215"></a>00215             }
+<a name="l00216"></a>00216           }
+<a name="l00217"></a>00217           std::istringstream str(s);
+<a name="l00218"></a>00218           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
+<a name="l00219"></a>00219           <span class="keywordflow">if</span> (circle) {
+<a name="l00220"></a>00220             <span class="keywordflow">if</span> (!(str >> strb))
+<a name="l00221"></a>00221               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00222"></a>00222             <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00223"></a>00223             lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
+<a name="l00224"></a>00224             <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00225"></a>00225               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
+<a name="l00226"></a>00226             <span class="keywordflow">if</span> (lon < -180 || lon > 360)
+<a name="l00227"></a>00227               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
+<a name="l00228"></a>00228           } <span class="keywordflow">else</span> {
+<a name="l00229"></a>00229             <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00230"></a>00230               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00231"></a>00231             <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00232"></a>00232             h = 0;
+<a name="l00233"></a>00233             <span class="keywordflow">if</span> (!(str >> h))    <span class="comment">// h is optional</span>
+<a name="l00234"></a>00234               str.clear();
+<a name="l00235"></a>00235             <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
+<a name="l00236"></a>00236                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height must be zero for geoid heights"</span>);
+<a name="l00237"></a>00237           }
+<a name="l00238"></a>00238           <span class="keywordflow">if</span> (str >> stra)
+<a name="l00239"></a>00239             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
+<a name="l00240"></a>00240           <span class="keywordflow">switch</span> (mode) {
+<a name="l00241"></a>00241           <span class="keywordflow">case</span> GRAVITY:
+<a name="l00242"></a>00242             {
+<a name="l00243"></a>00243               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gx, gy, gz;
+<a name="l00244"></a>00244               <span class="keywordflow">if</span> (circle) {
+<a name="l00245"></a>00245                 c.Gravity(lon, gx, gy, gz);
+<a name="l00246"></a>00246               } <span class="keywordflow">else</span> {
+<a name="l00247"></a>00247                 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">Gravity</a>(lat, lon, h, gx, gy, gz);
+<a name="l00248"></a>00248               }
+<a name="l00249"></a>00249               *output << Utility::str<real>(gx, prec) << <span class="stringliteral">" "</span>
+<a name="l00250"></a>00250                       << Utility::str<real>(gy, prec) << <span class="stringliteral">" "</span>
+<a name="l00251"></a>00251                       << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gz, prec) << eol;
+<a name="l00252"></a>00252             }
+<a name="l00253"></a>00253             <span class="keywordflow">break</span>;
+<a name="l00254"></a>00254           <span class="keywordflow">case</span> DISTURBANCE:
+<a name="l00255"></a>00255             {
+<a name="l00256"></a>00256               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> deltax, deltay, deltaz;
+<a name="l00257"></a>00257               <span class="keywordflow">if</span> (circle) {
+<a name="l00258"></a>00258                 c.Disturbance(lon, deltax, deltay, deltaz);
+<a name="l00259"></a>00259               } <span class="keywordflow">else</span> {
+<a name="l00260"></a>00260                 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">Disturbance</a>(lat, lon, h, deltax, deltay, deltaz);
+<a name="l00261"></a>00261               }
+<a name="l00262"></a>00262               <span class="comment">// Convert to mGals</span>
+<a name="l00263"></a>00263               *output << Utility::str<real>(deltax * 1e5, prec) << <span class="stringliteral">" "</span>
+<a name="l00264"></a>00264                       << Utility::str<real>(deltay * 1e5, prec) << <span class="stringliteral">" "</span>
+<a name="l00265"></a>00265                       << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(deltaz * 1e5, prec)
+<a name="l00266"></a>00266                       << eol;
+<a name="l00267"></a>00267             }
+<a name="l00268"></a>00268             <span class="keywordflow">break</span>;
+<a name="l00269"></a>00269           <span class="keywordflow">case</span> ANOMALY:
+<a name="l00270"></a>00270             {
+<a name="l00271"></a>00271               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dg01, xi, eta;
+<a name="l00272"></a>00272               <span class="keywordflow">if</span> (circle)
+<a name="l00273"></a>00273                 c.SphericalAnomaly(lon, Dg01, xi, eta);
+<a name="l00274"></a>00274               <span class="keywordflow">else</span>
+<a name="l00275"></a>00275                 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">SphericalAnomaly</a>(lat, lon, h, Dg01, xi, eta);
+<a name="l00276"></a>00276               Dg01 *= 1e5;      <span class="comment">// Convert to mGals</span>
+<a name="l00277"></a>00277               xi *= 3600;       <span class="comment">// Convert to arcsecs</span>
+<a name="l00278"></a>00278               eta *= 3600;
+<a name="l00279"></a>00279               *output << Utility::str<real>(Dg01, prec) << <span class="stringliteral">" "</span>
+<a name="l00280"></a>00280                       << Utility::str<real>(xi, prec) << <span class="stringliteral">" "</span>
+<a name="l00281"></a>00281                       << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(eta, prec) << eol;
+<a name="l00282"></a>00282             }
+<a name="l00283"></a>00283             <span class="keywordflow">break</span>;
+<a name="l00284"></a>00284           <span class="keywordflow">case</span> UNDULATION:
+<a name="l00285"></a>00285           <span class="keywordflow">default</span>:
+<a name="l00286"></a>00286             {
+<a name="l00287"></a>00287               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> N = circle ? c.GeoidHeight(lon) : g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GeoidHeight</a>(lat, lon);
+<a name="l00288"></a>00288               *output << Utility::str<real>(N, prec) << eol;
+<a name="l00289"></a>00289             }
+<a name="l00290"></a>00290             <span class="keywordflow">break</span>;
+<a name="l00291"></a>00291           }
+<a name="l00292"></a>00292         }
+<a name="l00293"></a>00293         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00294"></a>00294           *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00295"></a>00295           retval = 1;
+<a name="l00296"></a>00296         }
+<a name="l00297"></a>00297       }
+<a name="l00298"></a>00298     }
+<a name="l00299"></a>00299     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00300"></a>00300       std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00301"></a>00301       retval = 1;
+<a name="l00302"></a>00302     }
+<a name="l00303"></a>00303     <span class="keywordflow">return</span> retval;
+<a name="l00304"></a>00304   }
+<a name="l00305"></a>00305   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00306"></a>00306     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00307"></a>00307     <span class="keywordflow">return</span> 1;
+<a name="l00308"></a>00308   }
+<a name="l00309"></a>00309   <span class="keywordflow">catch</span> (...) {
+<a name="l00310"></a>00310     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00311"></a>00311     <span class="keywordflow">return</span> 1;
+<a name="l00312"></a>00312   }
+<a name="l00313"></a>00313 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LICENSE.txt b/doc/html/LICENSE.txt
index e8bc663..692304c 100644
--- a/doc/html/LICENSE.txt
+++ b/doc/html/LICENSE.txt
@@ -1,6 +1,6 @@
 This license applies to GeographicLib, versions 1.12 and later.
 
-Copyright (c) 2008-2011, Charles Karney
+Copyright (c) 2008-2012, Charles Karney
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
diff --git a/doc/html/LambertConformalConic_8cpp.html b/doc/html/LambertConformalConic_8cpp.html
index 7a2a082..278255a 100644
--- a/doc/html/LambertConformalConic_8cpp.html
+++ b/doc/html/LambertConformalConic_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LambertConformalConic.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,13 +75,11 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP</a>   "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP</a>   "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP   "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP   "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LambertConformalConic_8cpp_source.html b/doc/html/LambertConformalConic_8cpp_source.html
index 8bbee41..5861534 100644
--- a/doc/html/LambertConformalConic_8cpp_source.html
+++ b/doc/html/LambertConformalConic_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LambertConformalConic.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="LambertConformalConic_8hpp.html" title="Header for GeographicLib::LambertConformalConic class.">GeographicLib/LambertConformalConic.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</a>)
@@ -68,11 +83,11 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::eps_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::eps_ =
 <a name="l00023"></a>00023     numeric_limits<real>::epsilon();
-<a name="l00024"></a>00024   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::epsx_ = Math::sq(eps_);
-<a name="l00025"></a>00025   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::tol_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(eps_);
-<a name="l00026"></a>00026   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::ahypover_ =
+<a name="l00024"></a>00024   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::epsx_ = Math::sq(eps_);
+<a name="l00025"></a>00025   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::tol_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(eps_);
+<a name="l00026"></a>00026   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::ahypover_ =
 <a name="l00027"></a>00027     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::digits) * log(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::radix))
 <a name="l00028"></a>00028     + 2;
 <a name="l00029"></a>00029 
@@ -85,16 +100,16 @@
 <a name="l00036"></a>00036     , _e(sqrt(abs(_e2)))
 <a name="l00037"></a>00037     , _e2m(1 - _e2)
 <a name="l00038"></a>00038   {
-<a name="l00039"></a>00039     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00039"></a>00039     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00040"></a>00040       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00041"></a>00041     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00041"></a>00041     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00042"></a>00042       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00043"></a>00043     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k0) && k0 > 0))
+<a name="l00043"></a>00043     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k0) && k0 > 0))
 <a name="l00044"></a>00044       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00045"></a>00045     <span class="keywordflow">if</span> (!(abs(stdlat) <= 90))
 <a name="l00046"></a>00046       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude not in [-90, 90]"</span>);
 <a name="l00047"></a>00047     real
-<a name="l00048"></a>00048       phi = stdlat * Math::degree<real>(),
+<a name="l00048"></a>00048       phi = stdlat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00049"></a>00049       sphi = sin(phi),
 <a name="l00050"></a>00050       cphi = abs(stdlat) != 90 ? cos(phi) : 0;
 <a name="l00051"></a>00051     Init(sphi, cphi, sphi, cphi, k0);
@@ -110,18 +125,18 @@
 <a name="l00061"></a>00061     , _e(sqrt(abs(_e2)))
 <a name="l00062"></a>00062     , _e2m(1 - _e2)
 <a name="l00063"></a>00063   {
-<a name="l00064"></a>00064     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00064"></a>00064     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00065"></a>00065       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00066"></a>00066     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00066"></a>00066     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00067"></a>00067       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00068"></a>00068     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00068"></a>00068     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
 <a name="l00069"></a>00069       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00070"></a>00070     <span class="keywordflow">if</span> (!(abs(stdlat1) <= 90))
 <a name="l00071"></a>00071       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
 <a name="l00072"></a>00072     <span class="keywordflow">if</span> (!(abs(stdlat2) <= 90))
 <a name="l00073"></a>00073       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 2 not in [-90, 90]"</span>);
 <a name="l00074"></a>00074     real
-<a name="l00075"></a>00075       phi1 = stdlat1 * Math::degree<real>(),
+<a name="l00075"></a>00075       phi1 = stdlat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00076"></a>00076       phi2 = stdlat2 * Math::degree<real>();
 <a name="l00077"></a>00077     Init(sin(phi1), abs(stdlat1) != 90 ? cos(phi1) : 0,
 <a name="l00078"></a>00078          sin(phi2), abs(stdlat2) != 90 ? cos(phi2) : 0, k1);
@@ -138,11 +153,11 @@
 <a name="l00089"></a>00089     , _e(sqrt(abs(_e2)))
 <a name="l00090"></a>00090     , _e2m(1 - _e2)
 <a name="l00091"></a>00091   {
-<a name="l00092"></a>00092     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00092"></a>00092     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00093"></a>00093       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00094"></a>00094     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00094"></a>00094     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00095"></a>00095       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00096"></a>00096     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00096"></a>00096     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
 <a name="l00097"></a>00097       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00098"></a>00098     <span class="keywordflow">if</span> (!(coslat1 >= 0))
 <a name="l00099"></a>00099       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
@@ -163,9 +178,9 @@
 <a name="l00114"></a>00114                                    <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1) <span class="keywordflow">throw</span>() {
 <a name="l00115"></a>00115     {
 <a name="l00116"></a>00116       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r;
-<a name="l00117"></a>00117       r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi1, cphi1);
+<a name="l00117"></a>00117       r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi1, cphi1);
 <a name="l00118"></a>00118       sphi1 /= r; cphi1 /= r;
-<a name="l00119"></a>00119       r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi2, cphi2);
+<a name="l00119"></a>00119       r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi2, cphi2);
 <a name="l00120"></a>00120       sphi2 /= r; cphi2 /= r;
 <a name="l00121"></a>00121     }
 <a name="l00122"></a>00122     <span class="keywordtype">bool</span> polar = (cphi1 == 0);
@@ -208,14 +223,14 @@
 <a name="l00159"></a>00159       scphi2 = 1/cphi2,
 <a name="l00160"></a>00160       xi2 = eatanhe(sphi2), shxi2 = sinh(xi2), chxi2 = hyp(shxi2),
 <a name="l00161"></a>00161       tchi2 = chxi2 * tphi2 - shxi2 * scphi2, scchi2 = hyp(tchi2),
-<a name="l00162"></a>00162       psi1 = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(tchi1);
+<a name="l00162"></a>00162       psi1 = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(tchi1);
 <a name="l00163"></a>00163     <span class="keywordflow">if</span> (tphi2 - tphi1 != 0) {
 <a name="l00164"></a>00164       <span class="comment">// Db(tphi2, tphi1)</span>
-<a name="l00165"></a>00165       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> num = Dlog1p(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet2)/(1 + scbet2),
-<a name="l00166"></a>00166                         <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet1)/(1 + scbet1))
+<a name="l00165"></a>00165       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> num = Dlog1p(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet2)/(1 + scbet2),
+<a name="l00166"></a>00166                         <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet1)/(1 + scbet1))
 <a name="l00167"></a>00167         * Dhyp(tbet2, tbet1, scbet2, scbet1) * _fm;
 <a name="l00168"></a>00168       <span class="comment">// Dc(tphi2, tphi1)</span>
-<a name="l00169"></a>00169       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> den =  Dasinh(tphi2, tphi1, scphi2, scphi1)
+<a name="l00169"></a>00169       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> den = Dasinh(tphi2, tphi1, scphi2, scphi1)
 <a name="l00170"></a>00170         - Deatanhe(sphi2, sphi1) * Dsn(tphi2, tphi1, sphi2, sphi1);
 <a name="l00171"></a>00171       _n = num/den;
 <a name="l00172"></a>00172 
@@ -243,9 +258,9 @@
 <a name="l00194"></a>00194           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00195"></a>00195             <span class="comment">// s1 = (scbet1 - scchi1) * (scbet1 + scchi1)</span>
 <a name="l00196"></a>00196             s1 = (tphi1 * (2 * shxi1 * chxi1 * scphi1 - _e2 * tphi1) -
-<a name="l00197"></a>00197                   <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(shxi1) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi1))),
+<a name="l00197"></a>00197                   <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(shxi1) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi1))),
 <a name="l00198"></a>00198             s2 = (tphi2 * (2 * shxi2 * chxi2 * scphi2 - _e2 * tphi2) -
-<a name="l00199"></a>00199                   <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(shxi2) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi2))),
+<a name="l00199"></a>00199                   <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(shxi2) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi2))),
 <a name="l00200"></a>00200             <span class="comment">// t1 = scbet1 - tchi1</span>
 <a name="l00201"></a>00201             t1 = tchi1 < 0 ? scbet1 - tchi1 : (s1 + 1)/(scbet1 + tchi1),
 <a name="l00202"></a>00202             t2 = tchi2 < 0 ? scbet2 - tchi2 : (s2 + 1)/(scbet2 + tchi2),
@@ -291,7 +306,7 @@
 <a name="l00242"></a>00242         <span class="comment">//    nu =   scphi * (shxiZ - shxi) - tphi * (chxiZ - chxi)</span>
 <a name="l00243"></a>00243         <span class="comment">//    mu = - scphi * (chxiZ - chxi) + tphi * (shxiZ - shxi)</span>
 <a name="l00244"></a>00244         <span class="comment">// then</span>
-<a name="l00245"></a>00245         <span class="comment">// dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 +  scphi1)) /</span>
+<a name="l00245"></a>00245         <span class="comment">// dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 + scphi1)) /</span>
 <a name="l00246"></a>00246         <span class="comment">//         D(tchi2, tchi1)</span>
 <a name="l00247"></a>00247         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00248"></a>00248           xiZ = eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)), shxiZ = sinh(xiZ), chxiZ = hyp(shxiZ),
@@ -327,7 +342,7 @@
 <a name="l00278"></a>00278         _nc = sqrt(max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), t) * (1 + _n));
 <a name="l00279"></a>00279       }
 <a name="l00280"></a>00280       {
-<a name="l00281"></a>00281         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(_n, _nc);
+<a name="l00281"></a>00281         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(_n, _nc);
 <a name="l00282"></a>00282         _n /= r;
 <a name="l00283"></a>00283         _nc /= r;
 <a name="l00284"></a>00284       }
@@ -343,22 +358,22 @@
 <a name="l00294"></a>00294     _scbet0 = hyp(_fm * tphi0);
 <a name="l00295"></a>00295     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> shxi0 = sinh(eatanhe(_n));
 <a name="l00296"></a>00296     _tchi0 = tphi0 * hyp(shxi0) - shxi0 * hyp(tphi0); _scchi0 = hyp(_tchi0);
-<a name="l00297"></a>00297     _psi0 = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(_tchi0);
+<a name="l00297"></a>00297     _psi0 = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(_tchi0);
 <a name="l00298"></a>00298 
 <a name="l00299"></a>00299     _lat0 = atan(_sign * tphi0) / Math::degree<real>();
-<a name="l00300"></a>00300     _t0nm1 = <a class="code" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">Math::expm1</a>(- _n * _psi0); <span class="comment">// Snyder's t0^n - 1</span>
+<a name="l00300"></a>00300     _t0nm1 = <a class="code" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">Math::expm1</a>(- _n * _psi0); <span class="comment">// Snyder's t0^n - 1</span>
 <a name="l00301"></a>00301     <span class="comment">// a * k1 * m1/t1^n = a * k1 * m2/t2^n = a * k1 * n * (Snyder's F)</span>
 <a name="l00302"></a>00302     <span class="comment">// = a * k1 / (scbet1 * exp(-n * psi1))</span>
 <a name="l00303"></a>00303     _scale = _a * k1 / scbet1 *
 <a name="l00304"></a>00304       <span class="comment">// exp(n * psi1) = exp(- (1 - n) * psi1) * exp(psi1)</span>
 <a name="l00305"></a>00305       <span class="comment">// with (1-n) = nc^2/(1+n) and exp(-psi1) = scchi1 + tchi1</span>
-<a name="l00306"></a>00306       exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) * psi1 )
+<a name="l00306"></a>00306       exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) * psi1 )
 <a name="l00307"></a>00307       * (tchi1 >= 0 ? scchi1 + tchi1 : 1 / (scchi1 - tchi1));
 <a name="l00308"></a>00308     <span class="comment">// Scale at phi0 = k0 = k1 * (scbet0*exp(-n*psi0))/(scbet1*exp(-n*psi1))</span>
 <a name="l00309"></a>00309     <span class="comment">//                    = k1 * scbet0/scbet1 * exp(n * (psi1 - psi0))</span>
 <a name="l00310"></a>00310     <span class="comment">// psi1 - psi0 = Dasinh(tchi1, tchi0) * (tchi1 - tchi0)</span>
 <a name="l00311"></a>00311     _k0 = k1 * (_scbet0/scbet1) *
-<a name="l00312"></a>00312       exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) *
+<a name="l00312"></a>00312       exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) *
 <a name="l00313"></a>00313            Dasinh(tchi1, _tchi0, scchi1, _scchi0) * (tchi1 - _tchi0))
 <a name="l00314"></a>00314       * (tchi1 >= 0 ? scchi1 + tchi1 : 1 / (scchi1 - tchi1)) /
 <a name="l00315"></a>00315       (_scchi0 + _tchi0);
@@ -391,30 +406,30 @@
 <a name="l00342"></a>00342     <span class="comment">// where nrho0 = n * rho0, drho = rho - rho0</span>
 <a name="l00343"></a>00343     <span class="comment">// and drho is evaluated with divided differences</span>
 <a name="l00344"></a>00344     real
-<a name="l00345"></a>00345       lam = lon * Math::degree<real>(),
+<a name="l00345"></a>00345       lam = lon * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00346"></a>00346       phi = lat * Math::degree<real>(),
 <a name="l00347"></a>00347       sphi = sin(phi), cphi = abs(lat) != 90 ? cos(phi) : epsx_,
 <a name="l00348"></a>00348       tphi = sphi/cphi, tbet = _fm * tphi, scbet = hyp(tbet),
 <a name="l00349"></a>00349       scphi = 1/cphi, shxi = sinh(eatanhe(sphi)),
 <a name="l00350"></a>00350       tchi = hyp(shxi) * tphi - shxi * scphi, scchi = hyp(tchi),
-<a name="l00351"></a>00351       psi = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(tchi),
+<a name="l00351"></a>00351       psi = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(tchi),
 <a name="l00352"></a>00352       theta = _n * lam, stheta = sin(theta), ctheta = cos(theta),
 <a name="l00353"></a>00353       dpsi = Dasinh(tchi, _tchi0, scchi, _scchi0) * (tchi - _tchi0),
 <a name="l00354"></a>00354       drho = - _scale * (2 * _nc < 1 && dpsi != 0 ?
-<a name="l00355"></a>00355                          (exp(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n) * psi ) *
+<a name="l00355"></a>00355                          (exp(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n) * psi ) *
 <a name="l00356"></a>00356                           (tchi > 0 ? 1/(scchi + tchi) : (scchi - tchi))
 <a name="l00357"></a>00357                           - (_t0nm1 + 1))/(-_n) :
 <a name="l00358"></a>00358                          Dexp(-_n * psi, -_n * _psi0) * dpsi);
 <a name="l00359"></a>00359     x = (_nrho0 + _n * drho) * (_n != 0 ? stheta / _n : lam);
 <a name="l00360"></a>00360     y = _nrho0 *
 <a name="l00361"></a>00361       (_n != 0 ?
-<a name="l00362"></a>00362        (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(stheta)/(1 + ctheta)) / _n : 0)
+<a name="l00362"></a>00362        (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(stheta)/(1 + ctheta)) / _n : 0)
 <a name="l00363"></a>00363       - drho * ctheta;
 <a name="l00364"></a>00364     k = _k0 * (scbet/_scbet0) /
-<a name="l00365"></a>00365       (exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) * dpsi )
+<a name="l00365"></a>00365       (exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) * dpsi )
 <a name="l00366"></a>00366        * (tchi >= 0 ? scchi + tchi : 1 / (scchi - tchi)) / (_scchi0 + _tchi0));
 <a name="l00367"></a>00367     y *= _sign;
-<a name="l00368"></a>00368     gamma = _sign * theta / Math::degree<real>();
+<a name="l00368"></a>00368     gamma = _sign * theta / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00369"></a>00369   }
 <a name="l00370"></a>00370 
 <a name="l00371"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">00371</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">LambertConformalConic::Reverse</a>(real lon0, real x, real y,
@@ -436,7 +451,7 @@
 <a name="l00387"></a>00387     y *= _sign;
 <a name="l00388"></a>00388     real
 <a name="l00389"></a>00389       nx = _n * x, ny = _n * y, y1 = _nrho0 - ny,
-<a name="l00390"></a>00390       den = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
+<a name="l00390"></a>00390       den = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
 <a name="l00391"></a>00391       drho = den != 0 ? (x*nx - 2*y*_nrho0 + y*ny) / den : 0,
 <a name="l00392"></a>00392       tnm1 = _t0nm1 + _n * drho/_scale,
 <a name="l00393"></a>00393       dpsi = (den == 0 ? 0 :
@@ -458,8 +473,8 @@
 <a name="l00409"></a>00409       <span class="comment">// cosh(log(tn)) = (tn + 1/tn)/2; sinh(log(tn)) = (tn - 1/tn)/2</span>
 <a name="l00410"></a>00410       real
 <a name="l00411"></a>00411         tn = tnm1 + 1 == 0 ? epsx_ : tnm1 + 1,
-<a name="l00412"></a>00412         sh = sinh( -<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(_n * (1 + _n)) *
-<a name="l00413"></a>00413                    (2 * tn > 1 ? <a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(tnm1) : log(tn)) );
+<a name="l00412"></a>00412         sh = sinh( -<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(_n * (1 + _n)) *
+<a name="l00413"></a>00413                    (2 * tn > 1 ? <a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(tnm1) : log(tn)) );
 <a name="l00414"></a>00414       tchi = sh * (tn + 1/tn)/2 - hyp(sh) * (tnm1 * (tn + 1)/tn)/2;
 <a name="l00415"></a>00415     }
 <a name="l00416"></a>00416 
@@ -474,7 +489,7 @@
 <a name="l00425"></a>00425         scphi = hyp(tphi),
 <a name="l00426"></a>00426         shxi = sinh( eatanhe( tphi / scphi ) ),
 <a name="l00427"></a>00427         tchia = hyp(shxi) * tphi - shxi * scphi,
-<a name="l00428"></a>00428         dtphi = (tchi - tchia) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi)) /
+<a name="l00428"></a>00428         dtphi = (tchi - tchia) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi)) /
 <a name="l00429"></a>00429         ( _e2m * scphi * hyp(tchia) );
 <a name="l00430"></a>00430       tphi += dtphi;
 <a name="l00431"></a>00431       <span class="keywordflow">if</span> (!(abs(dtphi) >= stol))
@@ -486,8 +501,8 @@
 <a name="l00437"></a>00437       phi = _sign * atan(tphi),
 <a name="l00438"></a>00438       scbet = hyp(_fm * tphi), scchi = hyp(tchi),
 <a name="l00439"></a>00439       lam = _n != 0 ? gamma / _n : x / y1;
-<a name="l00440"></a>00440     lat = phi / Math::degree<real>();
-<a name="l00441"></a>00441     lon = lam / Math::degree<real>();
+<a name="l00440"></a>00440     lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00441"></a>00441     lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00442"></a>00442     <span class="comment">// Avoid losing a bit of accuracy in lon (assuming lon0 is an integer)</span>
 <a name="l00443"></a>00443     <span class="keywordflow">if</span> (lon + lon0 >= 180)
 <a name="l00444"></a>00444       lon += lon0 - 360;
@@ -496,13 +511,13 @@
 <a name="l00447"></a>00447     <span class="keywordflow">else</span>
 <a name="l00448"></a>00448       lon += lon0;
 <a name="l00449"></a>00449     k = _k0 * (scbet/_scbet0) /
-<a name="l00450"></a>00450       (exp(_nc != 0 ? - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) * dpsi : 0)
+<a name="l00450"></a>00450       (exp(_nc != 0 ? - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) * dpsi : 0)
 <a name="l00451"></a>00451        * (tchi >= 0 ? scchi + tchi : 1 / (scchi - tchi)) / (_scchi0 + _tchi0));
-<a name="l00452"></a>00452     gamma /= _sign * Math::degree<real>();
+<a name="l00452"></a>00452     gamma /= _sign * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00453"></a>00453   }
 <a name="l00454"></a>00454 
 <a name="l00455"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#aac6267f7f970b35043b17e12e4163ff2">00455</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#aac6267f7f970b35043b17e12e4163ff2">LambertConformalConic::SetScale</a>(real lat, real k) {
-<a name="l00456"></a>00456     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k) && k > 0))
+<a name="l00456"></a>00456     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k) && k > 0))
 <a name="l00457"></a>00457       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00458"></a>00458     <span class="keywordflow">if</span> (!(abs(lat) <= 90))
 <a name="l00459"></a>00459       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude for SetScale not in [-90, 90]"</span>);
@@ -518,8 +533,13 @@
 <a name="l00469"></a>00469 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LambertConformalConic_8hpp.html b/doc/html/LambertConformalConic_8hpp.html
index ffe30f1..9af9ad0 100644
--- a/doc/html/LambertConformalConic_8hpp.html
+++ b/doc/html/LambertConformalConic_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LambertConformalConic.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,13 +82,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</a>   "$Id: fcf9176f0a356995138754581297173aa3491693 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</a>   "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP   "$Id: fcf9176f0a356995138754581297173aa3491693 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP   "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LambertConformalConic_8hpp_source.html b/doc/html/LambertConformalConic_8hpp_source.html
index 7209e88..ac33fea 100644
--- a/doc/html/LambertConformalConic_8hpp_source.html
+++ b/doc/html/LambertConformalConic_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LambertConformalConic.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP)</span>
 <a name="l00011"></a><a class="code" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: fcf9176f0a356995138754581297173aa3491693 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <algorithm></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -101,278 +116,289 @@
 <a name="l00051"></a>00051 <span class="comment">   * system (<a href="http://www.spatialreference.org/ref/epsg/3364/"></span>
 <a name="l00052"></a>00052 <span class="comment">   * EPSG:3364</a>) is obtained by:</span>
 <a name="l00053"></a>00053 <span class="comment">   * \include example-LambertConformalConic.cpp</span>
-<a name="l00054"></a>00054 <span class="comment">   **********************************************************************/</span>
-<a name="l00055"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html">00055</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> {
-<a name="l00056"></a>00056   <span class="keyword">private</span>:
-<a name="l00057"></a>00057     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00058"></a>00058     real _a, _f, _fm, _e2, _e, _e2m;
-<a name="l00059"></a>00059     real _sign, _n, _nc, _t0nm1, _scale, _lat0, _k0;
-<a name="l00060"></a>00060     real _scbet0, _tchi0, _scchi0, _psi0, _nrho0;
-<a name="l00061"></a>00061     <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00062"></a>00062     <span class="keyword">static</span> <span class="keyword">const</span> real epsx_;
-<a name="l00063"></a>00063     <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00064"></a>00064     <span class="keyword">static</span> <span class="keyword">const</span> real ahypover_;
-<a name="l00065"></a>00065     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
-<a name="l00066"></a>00066     <span class="keyword">static</span> <span class="keyword">inline</span> real hyp(real x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), x); }
-<a name="l00067"></a>00067     <span class="comment">// e * atanh(e * x) = log( ((1 + e*x)/(1 - e*x))^(e/2) ) if f >= 0</span>
-<a name="l00068"></a>00068     <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x)                    if f < 0</span>
-<a name="l00069"></a>00069     <span class="keyword">inline</span> real eatanhe(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00070"></a>00070       <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
-<a name="l00071"></a>00071     }
-<a name="l00072"></a>00072     <span class="comment">// Divided differences</span>
-<a name="l00073"></a>00073     <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
-<a name="l00074"></a>00074     <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
-<a name="l00075"></a>00075     <span class="comment">// Symbolic computation of divided differences,</span>
-<a name="l00076"></a>00076     <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
-<a name="l00077"></a>00077     <span class="comment">// http://dx.doi.org/10.1145/334714.334716</span>
-<a name="l00078"></a>00078     <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
-<a name="l00079"></a>00079     <span class="comment">//</span>
-<a name="l00080"></a>00080     <span class="comment">// General rules</span>
-<a name="l00081"></a>00081     <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
-<a name="l00082"></a>00082     <span class="comment">// h(x) = f(x)*g(x):</span>
-<a name="l00083"></a>00083     <span class="comment">//        Dh(x,y) = Df(x,y)*g(x) + Dg(x,y)*f(y)</span>
-<a name="l00084"></a>00084     <span class="comment">//                = Df(x,y)*g(y) + Dg(x,y)*f(x)</span>
-<a name="l00085"></a>00085     <span class="comment">//                = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
-<a name="l00086"></a>00086     <span class="comment">//</span>
-<a name="l00087"></a>00087     <span class="comment">// hyp(x) = sqrt(1+x^2): Dhyp(x,y) = (x+y)/(hyp(x)+hyp(y))</span>
-<a name="l00088"></a>00088     <span class="keyword">static</span> <span class="keyword">inline</span> real Dhyp(real x, real y, real hx, real hy) <span class="keywordflow">throw</span>()
-<a name="l00089"></a>00089     <span class="comment">// hx = hyp(x)</span>
-<a name="l00090"></a>00090     { <span class="keywordflow">return</span> (x + y) / (hx + hy); }
-<a name="l00091"></a>00091     <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
-<a name="l00092"></a>00092     <span class="keyword">static</span> <span class="keyword">inline</span> real Dsn(real x, real y, real sx, real sy) <span class="keywordflow">throw</span>() {
-<a name="l00093"></a>00093       <span class="comment">// sx = x/hyp(x)</span>
-<a name="l00094"></a>00094       real t = x * y;
-<a name="l00095"></a>00095       <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
-<a name="l00096"></a>00096         (x - y != 0 ? (sx - sy) / (x - y) : 1);
-<a name="l00097"></a>00097     }
-<a name="l00098"></a>00098     <span class="comment">// Dlog1p(x,y) = log1p((x-y)/(1+y)/(x-y)</span>
-<a name="l00099"></a>00099     <span class="keyword">static</span> <span class="keyword">inline</span> real Dlog1p(real x, real y) <span class="keywordflow">throw</span>() {
-<a name="l00100"></a>00100       real t = x - y; <span class="keywordflow">if</span> (t < 0) { t = -t; y = x; }
-<a name="l00101"></a>00101       <span class="keywordflow">return</span> t != 0 ? <a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(t / (1 + y)) / t : 1 / (1 + x);
-<a name="l00102"></a>00102     }
-<a name="l00103"></a>00103     <span class="comment">// Dexp(x,y) = exp((x+y)/2) * 2*sinh((x-y)/2)/(x-y)</span>
-<a name="l00104"></a>00104     <span class="keyword">static</span> <span class="keyword">inline</span> real Dexp(real x, real y) <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105       real t = (x - y)/2;
-<a name="l00106"></a>00106       <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * exp((x + y)/2);
-<a name="l00107"></a>00107     }
-<a name="l00108"></a>00108     <span class="comment">// Dsinh(x,y) = 2*sinh((x-y)/2)/(x-y) * cosh((x+y)/2)</span>
-<a name="l00109"></a>00109     <span class="comment">//   cosh((x+y)/2) = (c+sinh(x)*sinh(y)/c)/2</span>
-<a name="l00110"></a>00110     <span class="comment">//   c=sqrt((1+cosh(x))*(1+cosh(y)))</span>
-<a name="l00111"></a>00111     <span class="comment">//   cosh((x+y)/2) = sqrt( (sinh(x)*sinh(y) + cosh(x)*cosh(y) + 1)/2 )</span>
-<a name="l00112"></a>00112     <span class="keyword">static</span> <span class="keyword">inline</span> real Dsinh(real x, real y, real sx, real sy, real cx, real cy)
-<a name="l00113"></a>00113       <span class="comment">// sx = sinh(x), cx = cosh(x)</span>
-<a name="l00114"></a>00114       <span class="keywordflow">throw</span>() {
-<a name="l00115"></a>00115       <span class="comment">// real t = (x  - y)/2, c = sqrt((1 + cx) * (1 + cy));</span>
-<a name="l00116"></a>00116       <span class="comment">// return (t != 0 ? sinh(t)/t : real(1)) * (c + sx * sy / c) /2;</span>
-<a name="l00117"></a>00117       real t = (x  - y)/2;
-<a name="l00118"></a>00118       <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * sqrt((sx * sy + cx * cy + 1) /2);
-<a name="l00119"></a>00119     }
-<a name="l00120"></a>00120     <span class="comment">// Dasinh(x,y) = asinh((x-y)*(x+y)/(x*sqrt(1+y^2)+y*sqrt(1+x^2)))/(x-y)</span>
-<a name="l00121"></a>00121     <span class="comment">//             = asinh((x*sqrt(1+y^2)-y*sqrt(1+x^2)))/(x-y)</span>
-<a name="l00122"></a>00122     <span class="keyword">static</span> <span class="keyword">inline</span> real Dasinh(real x, real y, real hx, real hy) <span class="keywordflow">throw</span>() {
-<a name="l00123"></a>00123       <span class="comment">// hx = hyp(x)</span>
-<a name="l00124"></a>00124       real t = x - y;
-<a name="l00125"></a>00125       <span class="keywordflow">return</span> t != 0 ?
-<a name="l00126"></a>00126         <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(x*y > 0 ? t * (x+y) / (x*hy + y*hx) : x*hy - y*hx) / t :
-<a name="l00127"></a>00127         1/hx;
-<a name="l00128"></a>00128     }
-<a name="l00129"></a>00129     <span class="comment">// Deatanhe(x,y) = eatanhe((x-y)/(1-e^2*x*y))/(x-y)</span>
-<a name="l00130"></a>00130     <span class="keyword">inline</span> real Deatanhe(real x, real y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00131"></a>00131       real t = x - y, d = 1 - _e2 * x * y;
-<a name="l00132"></a>00132       <span class="keywordflow">return</span> t != 0 ? eatanhe(t / d) / t : _e2 / d;
-<a name="l00133"></a>00133     }
-<a name="l00134"></a>00134     <span class="keywordtype">void</span> Init(real sphi1, real cphi1, real sphi2, real cphi2, real k1) <span class="keywordflow">throw</span>();
-<a name="l00135"></a>00135   <span class="keyword">public</span>:
-<a name="l00136"></a>00136 <span class="comment"></span>
-<a name="l00137"></a>00137 <span class="comment">    /**</span>
-<a name="l00138"></a>00138 <span class="comment">     * Constructor with a single standard parallel.</span>
-<a name="l00139"></a>00139 <span class="comment">     *</span>
-<a name="l00140"></a>00140 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00141"></a>00141 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00142"></a>00142 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00143"></a>00143 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00144"></a>00144 <span class="comment">     * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
-<a name="l00145"></a>00145 <span class="comment">     * @param[in] k0 scale on the standard parallel.</span>
-<a name="l00146"></a>00146 <span class="comment">     *</span>
-<a name="l00147"></a>00147 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
-<a name="l00148"></a>00148 <span class="comment">     * is not in the range [-90, 90].</span>
-<a name="l00149"></a>00149 <span class="comment">     **********************************************************************/</span>
-<a name="l00150"></a>00150     <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(real a, real f, real stdlat, real k0);
-<a name="l00151"></a>00151 <span class="comment"></span>
-<a name="l00152"></a>00152 <span class="comment">    /**</span>
-<a name="l00153"></a>00153 <span class="comment">     * Constructor with two standard parallels.</span>
-<a name="l00154"></a>00154 <span class="comment">     *</span>
-<a name="l00155"></a>00155 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00156"></a>00156 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00157"></a>00157 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00158"></a>00158 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00159"></a>00159 <span class="comment">     * @param[in] stdlat1 first standard parallel (degrees).</span>
-<a name="l00160"></a>00160 <span class="comment">     * @param[in] stdlat2 second standard parallel (degrees).</span>
-<a name="l00161"></a>00161 <span class="comment">     * @param[in] k1 scale on the standard parallels.</span>
-<a name="l00162"></a>00162 <span class="comment">     *</span>
-<a name="l00163"></a>00163 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
-<a name="l00164"></a>00164 <span class="comment">     * or \e stdlat2 is not in the range [-90, 90].  In addition, if either \e</span>
-<a name="l00165"></a>00165 <span class="comment">     * stdlat1 or \e stdlat2 is a pole, then an exception is thrown if \e</span>
-<a name="l00166"></a>00166 <span class="comment">     * stdlat1 is not equal \e stdlat2.</span>
-<a name="l00167"></a>00167 <span class="comment">     **********************************************************************/</span>
-<a name="l00168"></a>00168     <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(real a, real f, real stdlat1, real stdlat2, real k1);
-<a name="l00169"></a>00169 <span class="comment"></span>
-<a name="l00170"></a>00170 <span class="comment">    /**</span>
-<a name="l00171"></a>00171 <span class="comment">     * Constructor with two standard parallels specified by sines and cosines.</span>
-<a name="l00172"></a>00172 <span class="comment">     *</span>
-<a name="l00173"></a>00173 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00174"></a>00174 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00175"></a>00175 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00176"></a>00176 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00177"></a>00177 <span class="comment">     * @param[in] sinlat1 sine of first standard parallel.</span>
-<a name="l00178"></a>00178 <span class="comment">     * @param[in] coslat1 cosine of first standard parallel.</span>
-<a name="l00179"></a>00179 <span class="comment">     * @param[in] sinlat2 sine of second standard parallel.</span>
-<a name="l00180"></a>00180 <span class="comment">     * @param[in] coslat2 cosine of second standard parallel.</span>
-<a name="l00181"></a>00181 <span class="comment">     * @param[in] k1 scale on the standard parallels.</span>
-<a name="l00182"></a>00182 <span class="comment">     *</span>
-<a name="l00183"></a>00183 <span class="comment">     * This allows parallels close to the poles to be specified accurately.</span>
-<a name="l00184"></a>00184 <span class="comment">     * This routine computes the latitude of origin and the scale at this</span>
-<a name="l00185"></a>00185 <span class="comment">     * latitude.  In the case where \e lat1 and \e lat2 are different, the</span>
-<a name="l00186"></a>00186 <span class="comment">     * errors in this routines are as follows: if \e dlat = abs(\e lat2 - \e</span>
-<a name="l00187"></a>00187 <span class="comment">     * lat1) <= 160<sup>o</sup> and max(abs(\e lat1), abs(\e lat2)) <= 90 -</span>
-<a name="l00188"></a>00188 <span class="comment">     * min(0.0002, 2.2e-6(180 - \e dlat), 6e-8 <i>dlat</i><sup>2</sup>) (in</span>
-<a name="l00189"></a>00189 <span class="comment">     * degrees), then the error in the latitude of origin is less than</span>
-<a name="l00190"></a>00190 <span class="comment">     * 4.5e-14<sup>o</sup> and the relative error in the scale is less than</span>
-<a name="l00191"></a>00191 <span class="comment">     * 7e-15.</span>
-<a name="l00192"></a>00192 <span class="comment">     **********************************************************************/</span>
-<a name="l00193"></a>00193     <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(real a, real f,
-<a name="l00194"></a>00194                           real sinlat1, real coslat1,
-<a name="l00195"></a>00195                           real sinlat2, real coslat2,
-<a name="l00196"></a>00196                           real k1);
-<a name="l00197"></a>00197 <span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment">    /**</span>
-<a name="l00199"></a>00199 <span class="comment">     * Set the scale for the projection.</span>
-<a name="l00200"></a>00200 <span class="comment">     *</span>
-<a name="l00201"></a>00201 <span class="comment">     * @param[in] lat (degrees).</span>
-<a name="l00202"></a>00202 <span class="comment">     * @param[in] k scale at latitude \e lat (default 1).</span>
-<a name="l00203"></a>00203 <span class="comment">     *</span>
-<a name="l00204"></a>00204 <span class="comment">     * This allows a "latitude of true scale" to be specified.  An exception is</span>
-<a name="l00205"></a>00205 <span class="comment">     * thrown if \e k is not positive or if \e stdlat is not in the range [-90,</span>
-<a name="l00206"></a>00206 <span class="comment">     * 90]</span>
-<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
-<a name="l00208"></a>00208     <span class="keywordtype">void</span> SetScale(real lat, real k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
-<a name="l00209"></a>00209 <span class="comment"></span>
-<a name="l00210"></a>00210 <span class="comment">    /**</span>
-<a name="l00211"></a>00211 <span class="comment">     * Forward projection, from geographic to Lambert conformal conic.</span>
-<a name="l00212"></a>00212 <span class="comment">     *</span>
-<a name="l00213"></a>00213 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00214"></a>00214 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00215"></a>00215 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00216"></a>00216 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00217"></a>00217 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00218"></a>00218 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00219"></a>00219 <span class="comment">     * @param[out] k scale of projection at point.</span>
-<a name="l00220"></a>00220 <span class="comment">     *</span>
-<a name="l00221"></a>00221 <span class="comment">     * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
-<a name="l00222"></a>00222 <span class="comment">     * No false easting or northing is added and \e lat should be in the range</span>
-<a name="l00223"></a>00223 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].  The</span>
-<a name="l00224"></a>00224 <span class="comment">     * error in the projection is less than about 10 nm (10 nanometers), true</span>
-<a name="l00225"></a>00225 <span class="comment">     * distance, and the errors in the meridian convergence and scale are</span>
-<a name="l00226"></a>00226 <span class="comment">     * consistent with this.  The values of \e x and \e y returned for points</span>
-<a name="l00227"></a>00227 <span class="comment">     * which project to infinity (i.e., one or both of the poles) will be large</span>
-<a name="l00228"></a>00228 <span class="comment">     * but finite.</span>
-<a name="l00229"></a>00229 <span class="comment">     **********************************************************************/</span>
-<a name="l00230"></a>00230     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00231"></a>00231                  real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00232"></a>00232 <span class="comment"></span>
-<a name="l00233"></a>00233 <span class="comment">    /**</span>
-<a name="l00234"></a>00234 <span class="comment">     * Reverse projection, from Lambert conformal conic to geographic.</span>
-<a name="l00235"></a>00235 <span class="comment">     *</span>
-<a name="l00236"></a>00236 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00237"></a>00237 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00238"></a>00238 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00239"></a>00239 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00240"></a>00240 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00241"></a>00241 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00242"></a>00242 <span class="comment">     * @param[out] k scale of projection at point.</span>
-<a name="l00243"></a>00243 <span class="comment">     *</span>
-<a name="l00244"></a>00244 <span class="comment">     * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
-<a name="l00245"></a>00245 <span class="comment">     * No false easting or northing is added.  \e lon0 should be in the range</span>
-<a name="l00246"></a>00246 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00247"></a>00247 <span class="comment">     * The error in the projection is less than about 10 nm (10 nanometers),</span>
-<a name="l00248"></a>00248 <span class="comment">     * true distance, and the errors in the meridian convergence and scale are</span>
-<a name="l00249"></a>00249 <span class="comment">     * consistent with this.</span>
-<a name="l00250"></a>00250 <span class="comment">     **********************************************************************/</span>
-<a name="l00251"></a>00251     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00252"></a>00252                  real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00253"></a>00253 <span class="comment"></span>
-<a name="l00254"></a>00254 <span class="comment">    /**</span>
-<a name="l00255"></a>00255 <span class="comment">     * LambertConformalConic::Forward without returning the convergence and</span>
-<a name="l00256"></a>00256 <span class="comment">     * scale.</span>
-<a name="l00257"></a>00257 <span class="comment">     **********************************************************************/</span>
-<a name="l00258"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a14a3757d85e81488afe476f7ceb8a720">00258</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00259"></a>00259                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00260"></a>00260       real gamma, k;
-<a name="l00261"></a>00261       Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00262"></a>00262     }
-<a name="l00263"></a>00263 <span class="comment"></span>
-<a name="l00264"></a>00264 <span class="comment">    /**</span>
-<a name="l00265"></a>00265 <span class="comment">     * LambertConformalConic::Reverse without returning the convergence and</span>
-<a name="l00266"></a>00266 <span class="comment">     * scale.</span>
-<a name="l00267"></a>00267 <span class="comment">     **********************************************************************/</span>
-<a name="l00268"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a1bffe1259895569e6834a4b1df9b22ab">00268</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00269"></a>00269                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00270"></a>00270       real gamma, k;
-<a name="l00271"></a>00271       Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00272"></a>00272     }
-<a name="l00273"></a>00273 <span class="comment"></span>
-<a name="l00274"></a>00274 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00275"></a>00275 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00276"></a>00276 <span class="comment">    ///@{</span>
-<a name="l00277"></a>00277 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00278"></a>00278 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00279"></a>00279 <span class="comment">     *   the value used in the constructor.</span>
-<a name="l00280"></a>00280 <span class="comment">     **********************************************************************/</span>
-<a name="l00281"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">00281</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00282"></a>00282 <span class="comment"></span>
-<a name="l00283"></a>00283 <span class="comment">    /**</span>
-<a name="l00284"></a>00284 <span class="comment">     * @return \e f the  flattening of the ellipsoid.  This is the</span>
-<a name="l00285"></a>00285 <span class="comment">     *   value used in the constructor.</span>
-<a name="l00286"></a>00286 <span class="comment">     **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">00287</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00288"></a>00288 <span class="comment"></span>
-<a name="l00289"></a>00289 <span class="comment">    /**</span>
-<a name="l00290"></a>00290 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00291"></a>00291 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00292"></a>00292 <span class="comment">     **********************************************************************/</span>
-<a name="l00293"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">00293</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00294"></a>00294 <span class="comment"></span>
-<a name="l00295"></a>00295 <span class="comment">    /**</span>
-<a name="l00296"></a>00296 <span class="comment">     * @return latitude of the origin for the projection (degrees).</span>
-<a name="l00297"></a>00297 <span class="comment">     *</span>
-<a name="l00298"></a>00298 <span class="comment">     * This is the latitude of minimum scale and equals the \e stdlat in the</span>
-<a name="l00299"></a>00299 <span class="comment">     * 1-parallel constructor and lies between \e stdlat1 and \e stdlat2 in the</span>
-<a name="l00300"></a>00300 <span class="comment">     * 2-parallel constructors.</span>
-<a name="l00301"></a>00301 <span class="comment">     **********************************************************************/</span>
-<a name="l00302"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">00302</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
-<a name="l00303"></a>00303 <span class="comment"></span>
-<a name="l00304"></a>00304 <span class="comment">    /**</span>
-<a name="l00305"></a>00305 <span class="comment">     * @return central scale for the projection.  This is the scale on the</span>
-<a name="l00306"></a>00306 <span class="comment">     *   latitude of origin.</span>
+<a name="l00054"></a>00054 <span class="comment">   *</span>
+<a name="l00055"></a>00055 <span class="comment">   * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility</span>
+<a name="l00056"></a>00056 <span class="comment">   * providing access to the functionality of LambertConformalConic and</span>
+<a name="l00057"></a>00057 <span class="comment">   * AlbersEqualArea.</span>
+<a name="l00058"></a>00058 <span class="comment">   **********************************************************************/</span>
+<a name="l00059"></a>00059   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> LambertConformalConic {
+<a name="l00060"></a>00060   <span class="keyword">private</span>:
+<a name="l00061"></a>00061     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00062"></a>00062     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _fm, _e2, _e, _e2m;
+<a name="l00063"></a>00063     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _sign, _n, _nc, _t0nm1, _scale, _lat0, _k0;
+<a name="l00064"></a>00064     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _scbet0, _tchi0, _scchi0, _psi0, _nrho0;
+<a name="l00065"></a>00065     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00066"></a>00066     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> epsx_;
+<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ahypover_;
+<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
+<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hyp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp. [...]
+<a name="l00071"></a>00071     <span class="comment">// e * atanh(e * x) = log( ((1 + e*x)/(1 - e*x))^(e/2) ) if f >= 0</span>
+<a name="l00072"></a>00072     <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x)                    if f < 0</span>
+<a name="l00073"></a>00073     <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00074"></a>00074       <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
+<a name="l00075"></a>00075     }
+<a name="l00076"></a>00076     <span class="comment">// Divided differences</span>
+<a name="l00077"></a>00077     <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
+<a name="l00078"></a>00078     <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
+<a name="l00079"></a>00079     <span class="comment">// Symbolic computation of divided differences,</span>
+<a name="l00080"></a>00080     <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
+<a name="l00081"></a>00081     <span class="comment">// http://dx.doi.org/10.1145/334714.334716</span>
+<a name="l00082"></a>00082     <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
+<a name="l00083"></a>00083     <span class="comment">//</span>
+<a name="l00084"></a>00084     <span class="comment">// General rules</span>
+<a name="l00085"></a>00085     <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
+<a name="l00086"></a>00086     <span class="comment">// h(x) = f(x)*g(x):</span>
+<a name="l00087"></a>00087     <span class="comment">//        Dh(x,y) = Df(x,y)*g(x) + Dg(x,y)*f(y)</span>
+<a name="l00088"></a>00088     <span class="comment">//                = Df(x,y)*g(y) + Dg(x,y)*f(x)</span>
+<a name="l00089"></a>00089     <span class="comment">//                = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
+<a name="l00090"></a>00090     <span class="comment">//</span>
+<a name="l00091"></a>00091     <span class="comment">// hyp(x) = sqrt(1+x^2): Dhyp(x,y) = (x+y)/(hyp(x)+hyp(y))</span>
+<a name="l00092"></a>00092     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dhyp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hx, <a class="code" href="Geod_8cpp.html#a5caf95d46b18 [...]
+<a name="l00093"></a>00093     <span class="comment">// hx = hyp(x)</span>
+<a name="l00094"></a>00094     { <span class="keywordflow">return</span> (x + y) / (hx + hy); }
+<a name="l00095"></a>00095     <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
+<a name="l00096"></a>00096     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dsn(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184 [...]
+<a name="l00097"></a>00097       <span class="comment">// sx = x/hyp(x)</span>
+<a name="l00098"></a>00098       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x * y;
+<a name="l00099"></a>00099       <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
+<a name="l00100"></a>00100         (x - y != 0 ? (sx - sy) / (x - y) : 1);
+<a name="l00101"></a>00101     }
+<a name="l00102"></a>00102     <span class="comment">// Dlog1p(x,y) = log1p((x-y)/(1+y)/(x-y)</span>
+<a name="l00103"></a>00103     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dlog1p(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00104"></a>00104       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y; <span class="keywordflow">if</span> (t < 0) { t = -t; y = x; }
+<a name="l00105"></a>00105       <span class="keywordflow">return</span> t != 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(t / (1 + y)) / t : 1 / (1 + x);
+<a name="l00106"></a>00106     }
+<a name="l00107"></a>00107     <span class="comment">// Dexp(x,y) = exp((x+y)/2) * 2*sinh((x-y)/2)/(x-y)</span>
+<a name="l00108"></a>00108     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dexp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00109"></a>00109       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = (x - y)/2;
+<a name="l00110"></a>00110       <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * exp((x + y)/2);
+<a name="l00111"></a>00111     }
+<a name="l00112"></a>00112     <span class="comment">// Dsinh(x,y) = 2*sinh((x-y)/2)/(x-y) * cosh((x+y)/2)</span>
+<a name="l00113"></a>00113     <span class="comment">//   cosh((x+y)/2) = (c+sinh(x)*sinh(y)/c)/2</span>
+<a name="l00114"></a>00114     <span class="comment">//   c=sqrt((1+cosh(x))*(1+cosh(y)))</span>
+<a name="l00115"></a>00115     <span class="comment">//   cosh((x+y)/2) = sqrt( (sinh(x)*sinh(y) + cosh(x)*cosh(y) + 1)/2 )</span>
+<a name="l00116"></a>00116     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dsinh(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sx, <a class="code" href="Geod_8cpp.html#a5caf95d46b1 [...]
+<a name="l00117"></a>00117       <span class="comment">// sx = sinh(x), cx = cosh(x)</span>
+<a name="l00118"></a>00118       <span class="keywordflow">throw</span>() {
+<a name="l00119"></a>00119       <span class="comment">// real t = (x - y)/2, c = sqrt((1 + cx) * (1 + cy));</span>
+<a name="l00120"></a>00120       <span class="comment">// return (t != 0 ? sinh(t)/t : real(1)) * (c + sx * sy / c) /2;</span>
+<a name="l00121"></a>00121       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = (x - y)/2;
+<a name="l00122"></a>00122       <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * sqrt((sx * sy + cx * cy + 1) /2);
+<a name="l00123"></a>00123     }
+<a name="l00124"></a>00124     <span class="comment">// Dasinh(x,y) = asinh((x-y)*(x+y)/(x*sqrt(1+y^2)+y*sqrt(1+x^2)))/(x-y)</span>
+<a name="l00125"></a>00125     <span class="comment">//             = asinh((x*sqrt(1+y^2)-y*sqrt(1+x^2)))/(x-y)</span>
+<a name="l00126"></a>00126     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dasinh(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hx, <a class="code" href="Geod_8cpp.html#a5caf95d46b [...]
+<a name="l00127"></a>00127       <span class="comment">// hx = hyp(x)</span>
+<a name="l00128"></a>00128       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y;
+<a name="l00129"></a>00129       <span class="keywordflow">return</span> t != 0 ?
+<a name="l00130"></a>00130         <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(x*y > 0 ? t * (x+y) / (x*hy + y*hx) : x*hy - y*hx) / t :
+<a name="l00131"></a>00131         1/hx;
+<a name="l00132"></a>00132     }
+<a name="l00133"></a>00133     <span class="comment">// Deatanhe(x,y) = eatanhe((x-y)/(1-e^2*x*y))/(x-y)</span>
+<a name="l00134"></a>00134     <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Deatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00135"></a>00135       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y, d = 1 - _e2 * x * y;
+<a name="l00136"></a>00136       <span class="keywordflow">return</span> t != 0 ? eatanhe(t / d) / t : _e2 / d;
+<a name="l00137"></a>00137     }
+<a name="l00138"></a>00138     <span class="keywordtype">void</span> Init(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781 [...]
+<a name="l00139"></a>00139   <span class="keyword">public</span>:
+<a name="l00140"></a>00140 <span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">    /**</span>
+<a name="l00142"></a>00142 <span class="comment">     * Constructor with a single standard parallel.</span>
+<a name="l00143"></a>00143 <span class="comment">     *</span>
+<a name="l00144"></a>00144 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00145"></a>00145 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00146"></a>00146 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00147"></a>00147 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00148"></a>00148 <span class="comment">     * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
+<a name="l00149"></a>00149 <span class="comment">     * @param[in] k0 scale on the standard parallel.</span>
+<a name="l00150"></a>00150 <span class="comment">     *</span>
+<a name="l00151"></a>00151 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
+<a name="l00152"></a>00152 <span class="comment">     * is not in the range [-90, 90].</span>
+<a name="l00153"></a>00153 <span class="comment">     **********************************************************************/</span>
+<a name="l00154"></a>00154     LambertConformalConic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment">    /**</span>
+<a name="l00157"></a>00157 <span class="comment">     * Constructor with two standard parallels.</span>
+<a name="l00158"></a>00158 <span class="comment">     *</span>
+<a name="l00159"></a>00159 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00160"></a>00160 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00161"></a>00161 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00162"></a>00162 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00163"></a>00163 <span class="comment">     * @param[in] stdlat1 first standard parallel (degrees).</span>
+<a name="l00164"></a>00164 <span class="comment">     * @param[in] stdlat2 second standard parallel (degrees).</span>
+<a name="l00165"></a>00165 <span class="comment">     * @param[in] k1 scale on the standard parallels.</span>
+<a name="l00166"></a>00166 <span class="comment">     *</span>
+<a name="l00167"></a>00167 <span class="comment">     * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
+<a name="l00168"></a>00168 <span class="comment">     * or \e stdlat2 is not in the range [-90, 90].  In addition, if either \e</span>
+<a name="l00169"></a>00169 <span class="comment">     * stdlat1 or \e stdlat2 is a pole, then an exception is thrown if \e</span>
+<a name="l00170"></a>00170 <span class="comment">     * stdlat1 is not equal \e stdlat2.</span>
+<a name="l00171"></a>00171 <span class="comment">     **********************************************************************/</span>
+<a name="l00172"></a>00172     LambertConformalConic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00173"></a>00173 <span class="comment"></span>
+<a name="l00174"></a>00174 <span class="comment">    /**</span>
+<a name="l00175"></a>00175 <span class="comment">     * Constructor with two standard parallels specified by sines and cosines.</span>
+<a name="l00176"></a>00176 <span class="comment">     *</span>
+<a name="l00177"></a>00177 <span class="comment">     * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00178"></a>00178 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00179"></a>00179 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00180"></a>00180 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00181"></a>00181 <span class="comment">     * @param[in] sinlat1 sine of first standard parallel.</span>
+<a name="l00182"></a>00182 <span class="comment">     * @param[in] coslat1 cosine of first standard parallel.</span>
+<a name="l00183"></a>00183 <span class="comment">     * @param[in] sinlat2 sine of second standard parallel.</span>
+<a name="l00184"></a>00184 <span class="comment">     * @param[in] coslat2 cosine of second standard parallel.</span>
+<a name="l00185"></a>00185 <span class="comment">     * @param[in] k1 scale on the standard parallels.</span>
+<a name="l00186"></a>00186 <span class="comment">     *</span>
+<a name="l00187"></a>00187 <span class="comment">     * This allows parallels close to the poles to be specified accurately.</span>
+<a name="l00188"></a>00188 <span class="comment">     * This routine computes the latitude of origin and the scale at this</span>
+<a name="l00189"></a>00189 <span class="comment">     * latitude.  In the case where \e lat1 and \e lat2 are different, the</span>
+<a name="l00190"></a>00190 <span class="comment">     * errors in this routines are as follows: if \e dlat = abs(\e lat2 - \e</span>
+<a name="l00191"></a>00191 <span class="comment">     * lat1) <= 160<sup>o</sup> and max(abs(\e lat1), abs(\e lat2)) <= 90 -</span>
+<a name="l00192"></a>00192 <span class="comment">     * min(0.0002, 2.2e-6(180 - \e dlat), 6e-8 <i>dlat</i><sup>2</sup>) (in</span>
+<a name="l00193"></a>00193 <span class="comment">     * degrees), then the error in the latitude of origin is less than</span>
+<a name="l00194"></a>00194 <span class="comment">     * 4.5e-14<sup>o</sup> and the relative error in the scale is less than</span>
+<a name="l00195"></a>00195 <span class="comment">     * 7e-15.</span>
+<a name="l00196"></a>00196 <span class="comment">     **********************************************************************/</span>
+<a name="l00197"></a>00197     LambertConformalConic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f,
+<a name="l00198"></a>00198                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat1,
+<a name="l00199"></a>00199                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat2,
+<a name="l00200"></a>00200                           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00201"></a>00201 <span class="comment"></span>
+<a name="l00202"></a>00202 <span class="comment">    /**</span>
+<a name="l00203"></a>00203 <span class="comment">     * Set the scale for the projection.</span>
+<a name="l00204"></a>00204 <span class="comment">     *</span>
+<a name="l00205"></a>00205 <span class="comment">     * @param[in] lat (degrees).</span>
+<a name="l00206"></a>00206 <span class="comment">     * @param[in] k scale at latitude \e lat (default 1).</span>
+<a name="l00207"></a>00207 <span class="comment">     *</span>
+<a name="l00208"></a>00208 <span class="comment">     * This allows a "latitude of true scale" to be specified.  An exception is</span>
+<a name="l00209"></a>00209 <span class="comment">     * thrown if \e k is not positive or if \e stdlat is not in the range [-90,</span>
+<a name="l00210"></a>00210 <span class="comment">     * 90]</span>
+<a name="l00211"></a>00211 <span class="comment">     **********************************************************************/</span>
+<a name="l00212"></a>00212     <span class="keywordtype">void</span> SetScale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
+<a name="l00213"></a>00213 <span class="comment"></span>
+<a name="l00214"></a>00214 <span class="comment">    /**</span>
+<a name="l00215"></a>00215 <span class="comment">     * Forward projection, from geographic to Lambert conformal conic.</span>
+<a name="l00216"></a>00216 <span class="comment">     *</span>
+<a name="l00217"></a>00217 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00218"></a>00218 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00219"></a>00219 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00220"></a>00220 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00221"></a>00221 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00222"></a>00222 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00223"></a>00223 <span class="comment">     * @param[out] k scale of projection at point.</span>
+<a name="l00224"></a>00224 <span class="comment">     *</span>
+<a name="l00225"></a>00225 <span class="comment">     * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
+<a name="l00226"></a>00226 <span class="comment">     * No false easting or northing is added and \e lat should be in the range</span>
+<a name="l00227"></a>00227 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].  The</span>
+<a name="l00228"></a>00228 <span class="comment">     * error in the projection is less than about 10 nm (10 nanometers), true</span>
+<a name="l00229"></a>00229 <span class="comment">     * distance, and the errors in the meridian convergence and scale are</span>
+<a name="l00230"></a>00230 <span class="comment">     * consistent with this.  The values of \e x and \e y returned for points</span>
+<a name="l00231"></a>00231 <span class="comment">     * which project to infinity (i.e., one or both of the poles) will be large</span>
+<a name="l00232"></a>00232 <span class="comment">     * but finite.</span>
+<a name="l00233"></a>00233 <span class="comment">     **********************************************************************/</span>
+<a name="l00234"></a>00234     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00235"></a>00235                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00236"></a>00236 <span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">    /**</span>
+<a name="l00238"></a>00238 <span class="comment">     * Reverse projection, from Lambert conformal conic to geographic.</span>
+<a name="l00239"></a>00239 <span class="comment">     *</span>
+<a name="l00240"></a>00240 <span class="comment">     * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00241"></a>00241 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00242"></a>00242 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00243"></a>00243 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00244"></a>00244 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00245"></a>00245 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00246"></a>00246 <span class="comment">     * @param[out] k scale of projection at point.</span>
+<a name="l00247"></a>00247 <span class="comment">     *</span>
+<a name="l00248"></a>00248 <span class="comment">     * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
+<a name="l00249"></a>00249 <span class="comment">     * No false easting or northing is added.  \e lon0 should be in the range</span>
+<a name="l00250"></a>00250 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00251"></a>00251 <span class="comment">     * The error in the projection is less than about 10 nm (10 nanometers),</span>
+<a name="l00252"></a>00252 <span class="comment">     * true distance, and the errors in the meridian convergence and scale are</span>
+<a name="l00253"></a>00253 <span class="comment">     * consistent with this.</span>
+<a name="l00254"></a>00254 <span class="comment">     **********************************************************************/</span>
+<a name="l00255"></a>00255     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00256"></a>00256                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment">    /**</span>
+<a name="l00259"></a>00259 <span class="comment">     * LambertConformalConic::Forward without returning the convergence and</span>
+<a name="l00260"></a>00260 <span class="comment">     * scale.</span>
+<a name="l00261"></a>00261 <span class="comment">     **********************************************************************/</span>
+<a name="l00262"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a14a3757d85e81488afe476f7ceb8a720">00262</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00263"></a>00263                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00264"></a>00264       real gamma, k;
+<a name="l00265"></a>00265       Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00266"></a>00266     }
+<a name="l00267"></a>00267 <span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment">    /**</span>
+<a name="l00269"></a>00269 <span class="comment">     * LambertConformalConic::Reverse without returning the convergence and</span>
+<a name="l00270"></a>00270 <span class="comment">     * scale.</span>
+<a name="l00271"></a>00271 <span class="comment">     **********************************************************************/</span>
+<a name="l00272"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a1bffe1259895569e6834a4b1df9b22ab">00272</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00273"></a>00273                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00274"></a>00274       real gamma, k;
+<a name="l00275"></a>00275       Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00276"></a>00276     }
+<a name="l00277"></a>00277 <span class="comment"></span>
+<a name="l00278"></a>00278 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00279"></a>00279 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00280"></a>00280 <span class="comment">    ///@{</span>
+<a name="l00281"></a>00281 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00282"></a>00282 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00283"></a>00283 <span class="comment">     *   the value used in the constructor.</span>
+<a name="l00284"></a>00284 <span class="comment">     **********************************************************************/</span>
+<a name="l00285"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">00285</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00286"></a>00286 <span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment">    /**</span>
+<a name="l00288"></a>00288 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the</span>
+<a name="l00289"></a>00289 <span class="comment">     *   value used in the constructor.</span>
+<a name="l00290"></a>00290 <span class="comment">     **********************************************************************/</span>
+<a name="l00291"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">00291</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00292"></a>00292 <span class="comment"></span>
+<a name="l00293"></a>00293 <span class="comment">    /// \cond SKIP</span>
+<a name="l00294"></a>00294 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00295"></a>00295 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00296"></a>00296 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00297"></a>00297 <span class="comment">     **********************************************************************/</span>
+<a name="l00298"></a>00298     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment">    /// \endcond</span>
+<a name="l00300"></a>00300 <span class="comment"></span><span class="comment"></span>
+<a name="l00301"></a>00301 <span class="comment">    /**</span>
+<a name="l00302"></a>00302 <span class="comment">     * @return latitude of the origin for the projection (degrees).</span>
+<a name="l00303"></a>00303 <span class="comment">     *</span>
+<a name="l00304"></a>00304 <span class="comment">     * This is the latitude of minimum scale and equals the \e stdlat in the</span>
+<a name="l00305"></a>00305 <span class="comment">     * 1-parallel constructor and lies between \e stdlat1 and \e stdlat2 in the</span>
+<a name="l00306"></a>00306 <span class="comment">     * 2-parallel constructors.</span>
 <a name="l00307"></a>00307 <span class="comment">     **********************************************************************/</span>
-<a name="l00308"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">00308</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00309"></a>00309 <span class="comment">    ///@}</span>
-<a name="l00310"></a>00310 <span class="comment"></span><span class="comment"></span>
-<a name="l00311"></a>00311 <span class="comment">    /**</span>
-<a name="l00312"></a>00312 <span class="comment">     * A global instantiation of LambertConformalConic with the WGS84</span>
-<a name="l00313"></a>00313 <span class="comment">     * ellipsoid, \e stdlat = 0, and \e k0 = 1.  This degenerates to the</span>
-<a name="l00314"></a>00314 <span class="comment">     * Mercator projection.</span>
-<a name="l00315"></a>00315 <span class="comment">     **********************************************************************/</span>
-<a name="l00316"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">00316</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">Mercator</a>;
-<a name="l00317"></a>00317   };
-<a name="l00318"></a>00318 
-<a name="l00319"></a>00319 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00320"></a>00320 
-<a name="l00321"></a>00321 <span class="preprocessor">#endif  // GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</span>
+<a name="l00308"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">00308</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
+<a name="l00309"></a>00309 <span class="comment"></span>
+<a name="l00310"></a>00310 <span class="comment">    /**</span>
+<a name="l00311"></a>00311 <span class="comment">     * @return central scale for the projection.  This is the scale on the</span>
+<a name="l00312"></a>00312 <span class="comment">     *   latitude of origin.</span>
+<a name="l00313"></a>00313 <span class="comment">     **********************************************************************/</span>
+<a name="l00314"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">00314</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span cla [...]
+<a name="l00315"></a>00315 <span class="comment">    ///@}</span>
+<a name="l00316"></a>00316 <span class="comment"></span><span class="comment"></span>
+<a name="l00317"></a>00317 <span class="comment">    /**</span>
+<a name="l00318"></a>00318 <span class="comment">     * A global instantiation of LambertConformalConic with the WGS84</span>
+<a name="l00319"></a>00319 <span class="comment">     * ellipsoid, \e stdlat = 0, and \e k0 = 1.  This degenerates to the</span>
+<a name="l00320"></a>00320 <span class="comment">     * Mercator projection.</span>
+<a name="l00321"></a>00321 <span class="comment">     **********************************************************************/</span>
+<a name="l00322"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">00322</a>     <span class="keyword">static</span> <span class="keyword">const</span> LambertConformalConic <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">Mercator</a>;
+<a name="l00323"></a>00323   };
+<a name="l00324"></a>00324 
+<a name="l00325"></a>00325 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00326"></a>00326 
+<a name="l00327"></a>00327 <span class="preprocessor">#endif  // GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LocalCartesian_8cpp.html b/doc/html/LocalCartesian_8cpp.html
index 5ef0e06..781fca6 100644
--- a/doc/html/LocalCartesian_8cpp.html
+++ b/doc/html/LocalCartesian_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LocalCartesian.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">GEOGRAPHICLIB_LOCALCARTESIAN_CPP</a>   "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">GEOGRAPHICLIB_LOCALCARTESIAN_CPP</a>   "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="LocalCartesian_8cpp_source.html">LocalCartesian.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP   "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP   "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LocalCartesian_8cpp_source.html b/doc/html/LocalCartesian_8cpp_source.html
index 52bd11a..4d58616 100644
--- a/doc/html/LocalCartesian_8cpp_source.html
+++ b/doc/html/LocalCartesian_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LocalCartesian.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file LocalCartesian.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::LocalCartesian class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="LocalCartesian_8hpp.html" title="Header for GeographicLib::LocalCartesian class.">GeographicLib/LocalCartesian.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">GEOGRAPHICLIB_LOCALCARTESIAN_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">GEOGRAPHICLIB_LOCALCARTESIAN_HPP</a>)
@@ -74,10 +89,10 @@
 <a name="l00025"></a>00025     _h0 = h0;
 <a name="l00026"></a>00026     _earth.Forward(_lat0, _lon0, _h0, _x0, _y0, _z0);
 <a name="l00027"></a>00027     real
-<a name="l00028"></a>00028       phi = lat0 * Math::degree<real>(),
+<a name="l00028"></a>00028       phi = lat0 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00029"></a>00029       sphi = sin(phi),
 <a name="l00030"></a>00030       cphi = abs(_lat0) == 90 ? 0 : cos(phi),
-<a name="l00031"></a>00031       lam = lon0 * Math::degree<real>(),
+<a name="l00031"></a>00031       lam = lon0 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00032"></a>00032       slam = _lon0 == -180 ? 0 : sin(lam),
 <a name="l00033"></a>00033       clam = abs(_lon0) == 90 ? 0 : cos(lam);
 <a name="l00034"></a>00034     _earth.Rotation(sphi, cphi, slam, clam, _r);
@@ -120,8 +135,13 @@
 <a name="l00071"></a>00071 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LocalCartesian_8hpp.html b/doc/html/LocalCartesian_8hpp.html
index 3ac5e45..721998b 100644
--- a/doc/html/LocalCartesian_8hpp.html
+++ b/doc/html/LocalCartesian_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LocalCartesian.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">GEOGRAPHICLIB_LOCALCARTESIAN_HPP</a>   "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">GEOGRAPHICLIB_LOCALCARTESIAN_HPP</a>   "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP   "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP   "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/LocalCartesian_8hpp_source.html b/doc/html/LocalCartesian_8hpp_source.html
index d491fb4..cd636b1 100644
--- a/doc/html/LocalCartesian_8hpp_source.html
+++ b/doc/html/LocalCartesian_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: LocalCartesian.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file LocalCartesian.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::LocalCartesian class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_LOCALCARTESIAN_HPP)</span>
 <a name="l00011"></a><a class="code" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geocentric_8hpp.html" title="Header for GeographicLib::Geocentric class.">GeographicLib/Geocentric.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -81,213 +96,223 @@
 <a name="l00031"></a>00031 <span class="comment">   *</span>
 <a name="l00032"></a>00032 <span class="comment">   * Example of use:</span>
 <a name="l00033"></a>00033 <span class="comment">   * \include example-LocalCartesian.cpp</span>
-<a name="l00034"></a>00034 <span class="comment">   **********************************************************************/</span>
-<a name="l00035"></a>00035 
-<a name="l00036"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html">00036</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> {
-<a name="l00037"></a>00037   <span class="keyword">private</span>:
-<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00039"></a>00039     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
-<a name="l00040"></a>00040     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
-<a name="l00041"></a>00041     <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> _earth;
-<a name="l00042"></a>00042     real _lat0, _lon0, _h0;
-<a name="l00043"></a>00043     real _x0, _y0, _z0, _r[dim2_];
-<a name="l00044"></a>00044     <span class="keywordtype">void</span> IntForward(real lat, real lon, real h, real& x, real& y, real& z,
-<a name="l00045"></a>00045                     real M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00046"></a>00046     <span class="keywordtype">void</span> IntReverse(real x, real y, real z, real& lat, real& lon, real& h,
-<a name="l00047"></a>00047                     real M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00048"></a>00048     <span class="keywordtype">void</span> MatrixMultiply(real M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00049"></a>00049   <span class="keyword">public</span>:
-<a name="l00050"></a>00050 <span class="comment"></span>
-<a name="l00051"></a>00051 <span class="comment">    /**</span>
-<a name="l00052"></a>00052 <span class="comment">     * Constructor setting the origin.</span>
-<a name="l00053"></a>00053 <span class="comment">     *</span>
-<a name="l00054"></a>00054 <span class="comment">     * @param[in] lat0 latitude at origin (degrees).</span>
-<a name="l00055"></a>00055 <span class="comment">     * @param[in] lon0 longitude at origin (degrees).</span>
-<a name="l00056"></a>00056 <span class="comment">     * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
-<a name="l00057"></a>00057 <span class="comment">     * @param[in] earth Geocentric object for the transformation; default</span>
-<a name="l00058"></a>00058 <span class="comment">     *   Geocentric::WGS84.</span>
-<a name="l00059"></a>00059 <span class="comment">     **********************************************************************/</span>
-<a name="l00060"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">00060</a>     <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>(real lat0, real lon0, real h0 = 0,
-<a name="l00061"></a>00061                    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>) throw()
-<a name="l00062"></a>00062       : _earth(earth)
-<a name="l00063"></a>00063     { Reset(lat0, lon0, h0); }
-<a name="l00064"></a>00064 <span class="comment"></span>
-<a name="l00065"></a>00065 <span class="comment">    /**</span>
-<a name="l00066"></a>00066 <span class="comment">     * Default constructor.</span>
-<a name="l00067"></a>00067 <span class="comment">     *</span>
-<a name="l00068"></a>00068 <span class="comment">     * @param[in] earth Geocentric object for the transformation; default</span>
-<a name="l00069"></a>00069 <span class="comment">     *   Geocentric::WGS84.</span>
+<a name="l00034"></a>00034 <span class="comment">   *</span>
+<a name="l00035"></a>00035 <span class="comment">   * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility</span>
+<a name="l00036"></a>00036 <span class="comment">   * providing access to the functionality of Geocentric and LocalCartesian.</span>
+<a name="l00037"></a>00037 <span class="comment">   **********************************************************************/</span>
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> LocalCartesian {
+<a name="l00040"></a>00040   <span class="keyword">private</span>:
+<a name="l00041"></a>00041     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00042"></a>00042     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
+<a name="l00043"></a>00043     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
+<a name="l00044"></a>00044     Geocentric _earth;
+<a name="l00045"></a>00045     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _lat0, _lon0, _h0;
+<a name="l00046"></a>00046     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _x0, _y0, _z0, _r[dim2_];
+<a name="l00047"></a>00047     <span class="keywordtype">void</span> IntForward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
+<a name="l00048"></a>00048                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00049"></a>00049     <span class="keywordtype">void</span> IntReverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
+<a name="l00050"></a>00050                     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00051"></a>00051     <span class="keywordtype">void</span> MatrixMultiply(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00052"></a>00052   <span class="keyword">public</span>:
+<a name="l00053"></a>00053 <span class="comment"></span>
+<a name="l00054"></a>00054 <span class="comment">    /**</span>
+<a name="l00055"></a>00055 <span class="comment">     * Constructor setting the origin.</span>
+<a name="l00056"></a>00056 <span class="comment">     *</span>
+<a name="l00057"></a>00057 <span class="comment">     * @param[in] lat0 latitude at origin (degrees).</span>
+<a name="l00058"></a>00058 <span class="comment">     * @param[in] lon0 longitude at origin (degrees).</span>
+<a name="l00059"></a>00059 <span class="comment">     * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
+<a name="l00060"></a>00060 <span class="comment">     * @param[in] earth Geocentric object for the transformation; default</span>
+<a name="l00061"></a>00061 <span class="comment">     *   Geocentric::WGS84.</span>
+<a name="l00062"></a>00062 <span class="comment">     **********************************************************************/</span>
+<a name="l00063"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">00063</a>     LocalCartesian(real lat0, real lon0, real h0 = 0,
+<a name="l00064"></a>00064                    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>) throw()
+<a name="l00065"></a>00065       : _earth(earth)
+<a name="l00066"></a>00066     { Reset(lat0, lon0, h0); }
+<a name="l00067"></a>00067 <span class="comment"></span>
+<a name="l00068"></a>00068 <span class="comment">    /**</span>
+<a name="l00069"></a>00069 <span class="comment">     * Default constructor.</span>
 <a name="l00070"></a>00070 <span class="comment">     *</span>
-<a name="l00071"></a>00071 <span class="comment">     * Sets \e lat0 = 0, \e lon0 = 0, \e h0 = 0.</span>
-<a name="l00072"></a>00072 <span class="comment">     **********************************************************************/</span>
-<a name="l00073"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a3474a0434b2ff8b258111fe6d8468f0d">00073</a>     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1 [...]
-<a name="l00074"></a>00074       throw()
-<a name="l00075"></a>00075       : _earth(earth)
-<a name="l00076"></a>00076     { Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)); }
-<a name="l00077"></a>00077 <span class="comment"></span>
-<a name="l00078"></a>00078 <span class="comment">    /**</span>
-<a name="l00079"></a>00079 <span class="comment">     * Reset the origin.</span>
-<a name="l00080"></a>00080 <span class="comment">     *</span>
-<a name="l00081"></a>00081 <span class="comment">     * @param[in] lat0 latitude at origin (degrees).</span>
-<a name="l00082"></a>00082 <span class="comment">     * @param[in] lon0 longitude at origin (degrees).</span>
-<a name="l00083"></a>00083 <span class="comment">     * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
-<a name="l00084"></a>00084 <span class="comment">     **********************************************************************/</span>
-<a name="l00085"></a>00085     <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h0 = 0)
-<a name="l00086"></a>00086       throw();
-<a name="l00087"></a>00087 <span class="comment"></span>
-<a name="l00088"></a>00088 <span class="comment">    /**</span>
-<a name="l00089"></a>00089 <span class="comment">     * Convert from geodetic to local cartesian coordinates.</span>
-<a name="l00090"></a>00090 <span class="comment">     *</span>
-<a name="l00091"></a>00091 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00092"></a>00092 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00093"></a>00093 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00094"></a>00094 <span class="comment">     * @param[out] x local cartesian coordinate (meters).</span>
-<a name="l00095"></a>00095 <span class="comment">     * @param[out] y local cartesian coordinate (meters).</span>
-<a name="l00096"></a>00096 <span class="comment">     * @param[out] z local cartesian coordinate (meters).</span>
-<a name="l00097"></a>00097 <span class="comment">     *</span>
-<a name="l00098"></a>00098 <span class="comment">     * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
-<a name="l00099"></a>00099 <span class="comment">     * the range [-180, 360].</span>
-<a name="l00100"></a>00100 <span class="comment">     **********************************************************************/</span>
-<a name="l00101"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">00101</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z)
-<a name="l00102"></a>00102       const throw() {
-<a name="l00103"></a>00103       IntForward(lat, lon, h, x, y, z, NULL);
-<a name="l00104"></a>00104     }
-<a name="l00105"></a>00105 <span class="comment"></span>
-<a name="l00106"></a>00106 <span class="comment">    /**</span>
-<a name="l00107"></a>00107 <span class="comment">     * Convert from geodetic to local cartesian coordinates and return rotation</span>
-<a name="l00108"></a>00108 <span class="comment">     * matrix.</span>
-<a name="l00109"></a>00109 <span class="comment">     *</span>
-<a name="l00110"></a>00110 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00111"></a>00111 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00112"></a>00112 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00113"></a>00113 <span class="comment">     * @param[out] x local cartesian coordinate (meters).</span>
-<a name="l00114"></a>00114 <span class="comment">     * @param[out] y local cartesian coordinate (meters).</span>
-<a name="l00115"></a>00115 <span class="comment">     * @param[out] z local cartesian coordinate (meters).</span>
-<a name="l00116"></a>00116 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00117"></a>00117 <span class="comment">     *   matrix in row-major order.</span>
-<a name="l00118"></a>00118 <span class="comment">     *</span>
-<a name="l00119"></a>00119 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
-<a name="l00120"></a>00120 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
-<a name="l00121"></a>00121 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00122"></a>00122 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00123"></a>00123 <span class="comment">     *   representation \e v1.</span>
-<a name="l00124"></a>00124 <span class="comment">     * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
-<a name="l00125"></a>00125 <span class="comment">     *   the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
-<a name="l00126"></a>00126 <span class="comment">     *   representation \e v0.</span>
-<a name="l00127"></a>00127 <span class="comment">     * .</span>
-<a name="l00128"></a>00128 <span class="comment">     * Then we have \e v0 = \e M . \e v1.</span>
-<a name="l00129"></a>00129 <span class="comment">     **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a774332be14e894536f13b3cc7a8323c7">00130</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z,
-<a name="l00131"></a>00131                  std::vector<real>& M)
-<a name="l00132"></a>00132       <span class="keyword">const</span> <span class="keywordflow">throw</span>()  {
-<a name="l00133"></a>00133       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00134"></a>00134         real t[dim2_];
-<a name="l00135"></a>00135         IntForward(lat, lon, h, x, y, z, t);
-<a name="l00136"></a>00136         copy(t, t + dim2_, M.begin());
-<a name="l00137"></a>00137       } <span class="keywordflow">else</span>
-<a name="l00138"></a>00138         IntForward(lat, lon, h, x, y, z, NULL);
-<a name="l00139"></a>00139     }
-<a name="l00140"></a>00140 <span class="comment"></span>
-<a name="l00141"></a>00141 <span class="comment">    /**</span>
-<a name="l00142"></a>00142 <span class="comment">     * Convert from local cartesian to geodetic coordinates.</span>
-<a name="l00143"></a>00143 <span class="comment">     *</span>
-<a name="l00144"></a>00144 <span class="comment">     * @param[in] x local cartesian coordinate (meters).</span>
-<a name="l00145"></a>00145 <span class="comment">     * @param[in] y local cartesian coordinate (meters).</span>
-<a name="l00146"></a>00146 <span class="comment">     * @param[in] z local cartesian coordinate (meters).</span>
-<a name="l00147"></a>00147 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00148"></a>00148 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00149"></a>00149 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00150"></a>00150 <span class="comment">     *</span>
-<a name="l00151"></a>00151 <span class="comment">     * The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00152"></a>00152 <span class="comment">     **********************************************************************/</span>
-<a name="l00153"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">00153</a>     <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h)
-<a name="l00154"></a>00154       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00155"></a>00155       IntReverse(x, y, z, lat, lon, h, NULL);
-<a name="l00156"></a>00156     }
-<a name="l00157"></a>00157 <span class="comment"></span>
-<a name="l00158"></a>00158 <span class="comment">    /**</span>
-<a name="l00159"></a>00159 <span class="comment">     * Convert from local cartesian to geodetic coordinates and return rotation</span>
-<a name="l00160"></a>00160 <span class="comment">     * matrix.</span>
-<a name="l00161"></a>00161 <span class="comment">     *</span>
-<a name="l00162"></a>00162 <span class="comment">     * @param[in] x local cartesian coordinate (meters).</span>
-<a name="l00163"></a>00163 <span class="comment">     * @param[in] y local cartesian coordinate (meters).</span>
-<a name="l00164"></a>00164 <span class="comment">     * @param[in] z local cartesian coordinate (meters).</span>
-<a name="l00165"></a>00165 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00166"></a>00166 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00167"></a>00167 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00168"></a>00168 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00169"></a>00169 <span class="comment">     *   matrix in row-major order.</span>
-<a name="l00170"></a>00170 <span class="comment">     *</span>
-<a name="l00171"></a>00171 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
-<a name="l00172"></a>00172 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
-<a name="l00173"></a>00173 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00174"></a>00174 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00175"></a>00175 <span class="comment">     *   representation \e v1.</span>
-<a name="l00176"></a>00176 <span class="comment">     * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
-<a name="l00177"></a>00177 <span class="comment">     *   the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
-<a name="l00178"></a>00178 <span class="comment">     *   representation \e v0.</span>
-<a name="l00179"></a>00179 <span class="comment">     * .</span>
-<a name="l00180"></a>00180 <span class="comment">     * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
-<a name="l00181"></a>00181 <span class="comment">     * M.</span>
-<a name="l00182"></a>00182 <span class="comment">     **********************************************************************/</span>
-<a name="l00183"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a7baa88b38b320d763f6cba3ece4f518d">00183</a>     <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h,
-<a name="l00184"></a>00184                  std::vector<real>& M)
-<a name="l00185"></a>00185       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00186"></a>00186       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00187"></a>00187         real t[dim2_];
-<a name="l00188"></a>00188         IntReverse(x, y, z, lat, lon, h, t);
-<a name="l00189"></a>00189         copy(t, t + dim2_, M.begin());
-<a name="l00190"></a>00190       } <span class="keywordflow">else</span>
-<a name="l00191"></a>00191         IntReverse(x, y, z, lat, lon, h, NULL);
-<a name="l00192"></a>00192     }
-<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00195"></a>00195 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment">    ///@{</span>
-<a name="l00197"></a>00197 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00198"></a>00198 <span class="comment">     * @return latitude of the origin (degrees).</span>
-<a name="l00199"></a>00199 <span class="comment">     **********************************************************************/</span>
-<a name="l00200"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">00200</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">LatitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
-<a name="l00201"></a>00201 <span class="comment"></span>
-<a name="l00202"></a>00202 <span class="comment">    /**</span>
-<a name="l00203"></a>00203 <span class="comment">     * @return longitude of the origin (degrees).</span>
-<a name="l00204"></a>00204 <span class="comment">     **********************************************************************/</span>
-<a name="l00205"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">00205</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">LongitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lon0; }
-<a name="l00206"></a>00206 <span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment">    /**</span>
-<a name="l00208"></a>00208 <span class="comment">     * @return height of the origin (meters).</span>
-<a name="l00209"></a>00209 <span class="comment">     **********************************************************************/</span>
-<a name="l00210"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">00210</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _h0; }
-<a name="l00211"></a>00211 <span class="comment"></span>
-<a name="l00212"></a>00212 <span class="comment">    /**</span>
-<a name="l00213"></a>00213 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00214"></a>00214 <span class="comment">     *   the value of \e a inherited from the Geocentric object used in the</span>
-<a name="l00215"></a>00215 <span class="comment">     *   constructor.</span>
-<a name="l00216"></a>00216 <span class="comment">     **********************************************************************/</span>
-<a name="l00217"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">00217</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00218"></a>00218 <span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment">    /**</span>
-<a name="l00220"></a>00220 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00221"></a>00221 <span class="comment">     *   inherited from the Geocentric object used in the constructor.</span>
-<a name="l00222"></a>00222 <span class="comment">     **********************************************************************/</span>
-<a name="l00223"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">00223</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00224"></a>00224 <span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment">    /**</span>
-<a name="l00226"></a>00226 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00227"></a>00227 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00228"></a>00228 <span class="comment">     **********************************************************************/</span>
-<a name="l00229"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">00229</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00230"></a>00230     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00231"></a>00231 <span class="comment">    ///@}</span>
-<a name="l00232"></a>00232 <span class="comment"></span>  };
-<a name="l00233"></a>00233 
-<a name="l00234"></a>00234 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00235"></a>00235 
-<a name="l00236"></a>00236 <span class="preprocessor">#endif  // GEOGRAPHICLIB_LOCALCARTESIAN_HPP</span>
+<a name="l00071"></a>00071 <span class="comment">     * @param[in] earth Geocentric object for the transformation; default</span>
+<a name="l00072"></a>00072 <span class="comment">     *   Geocentric::WGS84.</span>
+<a name="l00073"></a>00073 <span class="comment">     *</span>
+<a name="l00074"></a>00074 <span class="comment">     * Sets \e lat0 = 0, \e lon0 = 0, \e h0 = 0.</span>
+<a name="l00075"></a>00075 <span class="comment">     **********************************************************************/</span>
+<a name="l00076"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a3474a0434b2ff8b258111fe6d8468f0d">00076</a>     <span class="keyword">explicit</span> LocalCartesian(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>)
+<a name="l00077"></a>00077       throw()
+<a name="l00078"></a>00078       : _earth(earth)
+<a name="l00079"></a>00079     { Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)); }
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment">    /**</span>
+<a name="l00082"></a>00082 <span class="comment">     * Reset the origin.</span>
+<a name="l00083"></a>00083 <span class="comment">     *</span>
+<a name="l00084"></a>00084 <span class="comment">     * @param[in] lat0 latitude at origin (degrees).</span>
+<a name="l00085"></a>00085 <span class="comment">     * @param[in] lon0 longitude at origin (degrees).</span>
+<a name="l00086"></a>00086 <span class="comment">     * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
+<a name="l00087"></a>00087 <span class="comment">     **********************************************************************/</span>
+<a name="l00088"></a>00088     <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h0 = 0)
+<a name="l00089"></a>00089       throw();
+<a name="l00090"></a>00090 <span class="comment"></span>
+<a name="l00091"></a>00091 <span class="comment">    /**</span>
+<a name="l00092"></a>00092 <span class="comment">     * Convert from geodetic to local cartesian coordinates.</span>
+<a name="l00093"></a>00093 <span class="comment">     *</span>
+<a name="l00094"></a>00094 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00095"></a>00095 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00096"></a>00096 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00097"></a>00097 <span class="comment">     * @param[out] x local cartesian coordinate (meters).</span>
+<a name="l00098"></a>00098 <span class="comment">     * @param[out] y local cartesian coordinate (meters).</span>
+<a name="l00099"></a>00099 <span class="comment">     * @param[out] z local cartesian coordinate (meters).</span>
+<a name="l00100"></a>00100 <span class="comment">     *</span>
+<a name="l00101"></a>00101 <span class="comment">     * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
+<a name="l00102"></a>00102 <span class="comment">     * the range [-180, 360].</span>
+<a name="l00103"></a>00103 <span class="comment">     **********************************************************************/</span>
+<a name="l00104"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">00104</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z)
+<a name="l00105"></a>00105       const throw() {
+<a name="l00106"></a>00106       IntForward(lat, lon, h, x, y, z, NULL);
+<a name="l00107"></a>00107     }
+<a name="l00108"></a>00108 <span class="comment"></span>
+<a name="l00109"></a>00109 <span class="comment">    /**</span>
+<a name="l00110"></a>00110 <span class="comment">     * Convert from geodetic to local cartesian coordinates and return rotation</span>
+<a name="l00111"></a>00111 <span class="comment">     * matrix.</span>
+<a name="l00112"></a>00112 <span class="comment">     *</span>
+<a name="l00113"></a>00113 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00114"></a>00114 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00115"></a>00115 <span class="comment">     * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00116"></a>00116 <span class="comment">     * @param[out] x local cartesian coordinate (meters).</span>
+<a name="l00117"></a>00117 <span class="comment">     * @param[out] y local cartesian coordinate (meters).</span>
+<a name="l00118"></a>00118 <span class="comment">     * @param[out] z local cartesian coordinate (meters).</span>
+<a name="l00119"></a>00119 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00120"></a>00120 <span class="comment">     *   matrix in row-major order.</span>
+<a name="l00121"></a>00121 <span class="comment">     *</span>
+<a name="l00122"></a>00122 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
+<a name="l00123"></a>00123 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
+<a name="l00124"></a>00124 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00125"></a>00125 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00126"></a>00126 <span class="comment">     *   representation \e v1.</span>
+<a name="l00127"></a>00127 <span class="comment">     * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
+<a name="l00128"></a>00128 <span class="comment">     *   the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
+<a name="l00129"></a>00129 <span class="comment">     *   representation \e v0.</span>
+<a name="l00130"></a>00130 <span class="comment">     * .</span>
+<a name="l00131"></a>00131 <span class="comment">     * Then we have \e v0 = \e M . \e v1.</span>
+<a name="l00132"></a>00132 <span class="comment">     **********************************************************************/</span>
+<a name="l00133"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a774332be14e894536f13b3cc7a8323c7">00133</a>     <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z,
+<a name="l00134"></a>00134                  std::vector<real>& M)
+<a name="l00135"></a>00135       <span class="keyword">const</span> <span class="keywordflow">throw</span>()  {
+<a name="l00136"></a>00136       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00137"></a>00137         real t[dim2_];
+<a name="l00138"></a>00138         IntForward(lat, lon, h, x, y, z, t);
+<a name="l00139"></a>00139         copy(t, t + dim2_, M.begin());
+<a name="l00140"></a>00140       } <span class="keywordflow">else</span>
+<a name="l00141"></a>00141         IntForward(lat, lon, h, x, y, z, NULL);
+<a name="l00142"></a>00142     }
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">    /**</span>
+<a name="l00145"></a>00145 <span class="comment">     * Convert from local cartesian to geodetic coordinates.</span>
+<a name="l00146"></a>00146 <span class="comment">     *</span>
+<a name="l00147"></a>00147 <span class="comment">     * @param[in] x local cartesian coordinate (meters).</span>
+<a name="l00148"></a>00148 <span class="comment">     * @param[in] y local cartesian coordinate (meters).</span>
+<a name="l00149"></a>00149 <span class="comment">     * @param[in] z local cartesian coordinate (meters).</span>
+<a name="l00150"></a>00150 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00151"></a>00151 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00152"></a>00152 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00153"></a>00153 <span class="comment">     *</span>
+<a name="l00154"></a>00154 <span class="comment">     * The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00155"></a>00155 <span class="comment">     **********************************************************************/</span>
+<a name="l00156"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">00156</a>     <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h)
+<a name="l00157"></a>00157       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00158"></a>00158       IntReverse(x, y, z, lat, lon, h, NULL);
+<a name="l00159"></a>00159     }
+<a name="l00160"></a>00160 <span class="comment"></span>
+<a name="l00161"></a>00161 <span class="comment">    /**</span>
+<a name="l00162"></a>00162 <span class="comment">     * Convert from local cartesian to geodetic coordinates and return rotation</span>
+<a name="l00163"></a>00163 <span class="comment">     * matrix.</span>
+<a name="l00164"></a>00164 <span class="comment">     *</span>
+<a name="l00165"></a>00165 <span class="comment">     * @param[in] x local cartesian coordinate (meters).</span>
+<a name="l00166"></a>00166 <span class="comment">     * @param[in] y local cartesian coordinate (meters).</span>
+<a name="l00167"></a>00167 <span class="comment">     * @param[in] z local cartesian coordinate (meters).</span>
+<a name="l00168"></a>00168 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00169"></a>00169 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00170"></a>00170 <span class="comment">     * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00171"></a>00171 <span class="comment">     * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00172"></a>00172 <span class="comment">     *   matrix in row-major order.</span>
+<a name="l00173"></a>00173 <span class="comment">     *</span>
+<a name="l00174"></a>00174 <span class="comment">     * Let \e v be a unit vector located at (\e lat, \e lon, \e h).  We can</span>
+<a name="l00175"></a>00175 <span class="comment">     * express \e v as \e column vectors in one of two ways</span>
+<a name="l00176"></a>00176 <span class="comment">     * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00177"></a>00177 <span class="comment">     *   local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00178"></a>00178 <span class="comment">     *   representation \e v1.</span>
+<a name="l00179"></a>00179 <span class="comment">     * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
+<a name="l00180"></a>00180 <span class="comment">     *   the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
+<a name="l00181"></a>00181 <span class="comment">     *   representation \e v0.</span>
+<a name="l00182"></a>00182 <span class="comment">     * .</span>
+<a name="l00183"></a>00183 <span class="comment">     * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
+<a name="l00184"></a>00184 <span class="comment">     * M.</span>
+<a name="l00185"></a>00185 <span class="comment">     **********************************************************************/</span>
+<a name="l00186"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a7baa88b38b320d763f6cba3ece4f518d">00186</a>     <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h,
+<a name="l00187"></a>00187                  std::vector<real>& M)
+<a name="l00188"></a>00188       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00189"></a>00189       <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00190"></a>00190         real t[dim2_];
+<a name="l00191"></a>00191         IntReverse(x, y, z, lat, lon, h, t);
+<a name="l00192"></a>00192         copy(t, t + dim2_, M.begin());
+<a name="l00193"></a>00193       } <span class="keywordflow">else</span>
+<a name="l00194"></a>00194         IntReverse(x, y, z, lat, lon, h, NULL);
+<a name="l00195"></a>00195     }
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00198"></a>00198 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00199"></a>00199 <span class="comment">    ///@{</span>
+<a name="l00200"></a>00200 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00201"></a>00201 <span class="comment">     * @return latitude of the origin (degrees).</span>
+<a name="l00202"></a>00202 <span class="comment">     **********************************************************************/</span>
+<a name="l00203"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">00203</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">LatitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
+<a name="l00204"></a>00204 <span class="comment"></span>
+<a name="l00205"></a>00205 <span class="comment">    /**</span>
+<a name="l00206"></a>00206 <span class="comment">     * @return longitude of the origin (degrees).</span>
+<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">00208</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">LongitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lon0; }
+<a name="l00209"></a>00209 <span class="comment"></span>
+<a name="l00210"></a>00210 <span class="comment">    /**</span>
+<a name="l00211"></a>00211 <span class="comment">     * @return height of the origin (meters).</span>
+<a name="l00212"></a>00212 <span class="comment">     **********************************************************************/</span>
+<a name="l00213"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">00213</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _h0; }
+<a name="l00214"></a>00214 <span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment">    /**</span>
+<a name="l00216"></a>00216 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00217"></a>00217 <span class="comment">     *   the value of \e a inherited from the Geocentric object used in the</span>
+<a name="l00218"></a>00218 <span class="comment">     *   constructor.</span>
+<a name="l00219"></a>00219 <span class="comment">     **********************************************************************/</span>
+<a name="l00220"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">00220</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00221"></a>00221 <span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment">    /**</span>
+<a name="l00223"></a>00223 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00224"></a>00224 <span class="comment">     *   inherited from the Geocentric object used in the constructor.</span>
+<a name="l00225"></a>00225 <span class="comment">     **********************************************************************/</span>
+<a name="l00226"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">00226</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span cla [...]
+<a name="l00227"></a>00227 <span class="comment">    ///@}</span>
+<a name="l00228"></a>00228 <span class="comment"></span><span class="comment"></span>
+<a name="l00229"></a>00229 <span class="comment">    /// \cond SKIP</span>
+<a name="l00230"></a>00230 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00231"></a>00231 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00232"></a>00232 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00233"></a>00233 <span class="comment">     **********************************************************************/</span>
+<a name="l00234"></a>00234     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00235"></a>00235     { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00236"></a>00236 <span class="comment">    /// \endcond</span>
+<a name="l00237"></a>00237 <span class="comment"></span>  };
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241 <span class="preprocessor">#endif  // GEOGRAPHICLIB_LOCALCARTESIAN_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MGRS_8cpp.html b/doc/html/MGRS_8cpp.html
index 42e972f..b59433f 100644
--- a/doc/html/MGRS_8cpp.html
+++ b/doc/html/MGRS_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MGRS.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,17 +76,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">GEOGRAPHICLIB_MGRS_CPP</a>   "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">GEOGRAPHICLIB_MGRS_CPP</a>   "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="MGRS_8cpp_source.html">MGRS.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -80,7 +93,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_MGRS_CPP   "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_MGRS_CPP   "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"</td>
         </tr>
       </table>
 </div>
@@ -91,8 +104,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MGRS_8cpp_source.html b/doc/html/MGRS_8cpp_source.html
index f5fc7bd..3e405bc 100644
--- a/doc/html/MGRS_8cpp_source.html
+++ b/doc/html/MGRS_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MGRS.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file MGRS.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::MGRS class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="MGRS_8hpp.html" title="Header for GeographicLib::MGRS class.">GeographicLib/MGRS.hpp</a>></span>
 <a name="l00011"></a>00011 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00012"></a>00012 
-<a name="l00013"></a><a class="code" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_MGRS_CPP "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"</span>
+<a name="l00013"></a><a class="code" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_MGRS_CPP "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">GEOGRAPHICLIB_MGRS_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">GEOGRAPHICLIB_MGRS_HPP</a>)
@@ -68,11 +83,11 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> MGRS::eps_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> MGRS::eps_ =
 <a name="l00023"></a>00023     <span class="comment">// 25 = ceil(log_2(2e7)) -- use half circumference here because northing</span>
 <a name="l00024"></a>00024     <span class="comment">// 195e5 is a legal in the "southern" hemisphere.</span>
 <a name="l00025"></a>00025     pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5), numeric_limits<real>::digits - 25);
-<a name="l00026"></a>00026   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> MGRS::angeps_ =
+<a name="l00026"></a>00026   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> MGRS::angeps_ =
 <a name="l00027"></a>00027     <span class="comment">// 7 = ceil(log_2(90))</span>
 <a name="l00028"></a>00028     pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5), numeric_limits<real>::digits - 7);
 <a name="l00029"></a>00029   <span class="keyword">const</span> <span class="keywordtype">string</span> MGRS::hemispheres_ = <span class="stringliteral">"SN"</span>;
@@ -92,7 +107,7 @@
 <a name="l00043"></a>00043     { maxupsSind_, maxupsNind_, maxutmcol_, maxutmcol_ };
 <a name="l00044"></a>00044   <span class="keyword">const</span> <span class="keywordtype">int</span> MGRS::minnorthing_[4] =
 <a name="l00045"></a>00045     { minupsSind_, minupsNind_,
-<a name="l00046"></a>00046       minutmSrow_,  minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
+<a name="l00046"></a>00046       minutmSrow_, minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
 <a name="l00047"></a>00047   <span class="keyword">const</span> <span class="keywordtype">int</span> MGRS::maxnorthing_[4] =
 <a name="l00048"></a>00048     { maxupsSind_, maxupsNind_,
 <a name="l00049"></a>00049       maxutmNrow_ + (maxutmSrow_ - minutmNrow_), maxutmNrow_ };
@@ -107,9 +122,9 @@
 <a name="l00058"></a>00058     }
 <a name="l00059"></a>00059     <span class="keywordtype">bool</span> utmp = zone != 0;
 <a name="l00060"></a>00060     CheckCoords(utmp, northp, x, y);
-<a name="l00061"></a>00061     <span class="keywordflow">if</span> (!(zone >= 0 || zone <= 60))
+<a name="l00061"></a>00061     <span class="keywordflow">if</span> (!(zone >= UTMUPS::MINZONE && zone <= UTMUPS::MAXZONE))
 <a name="l00062"></a>00062       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone) + <span class="stringliteral">" not in [0,60]"</span>);
-<a name="l00063"></a>00063     <span class="keywordflow">if</span> (!(prec >= 0 || prec <= maxprec_))
+<a name="l00063"></a>00063     <span class="keywordflow">if</span> (!(prec >= 0 && prec <= maxprec_))
 <a name="l00064"></a>00064       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"MGRS precision "</span> + Utility::str(prec)
 <a name="l00065"></a>00065                           + <span class="stringliteral">" not in [0, "</span>
 <a name="l00066"></a>00066                           + Utility::str(<span class="keywordtype">int</span>(maxprec_)) + <span class="stringliteral">"]"</span>);
@@ -201,9 +216,9 @@
 <a name="l00152"></a>00152         toupper(mgrs[0]) == <span class="charliteral">'I'</span> &&
 <a name="l00153"></a>00153         toupper(mgrs[1]) == <span class="charliteral">'N'</span> &&
 <a name="l00154"></a>00154         toupper(mgrs[2]) == <span class="charliteral">'V'</span>) {
-<a name="l00155"></a>00155       zone = UTMUPS::INVALID;
+<a name="l00155"></a>00155       zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::INVALID;
 <a name="l00156"></a>00156       northp = <span class="keyword">false</span>;
-<a name="l00157"></a>00157       x = y = Math::NaN<real>();
+<a name="l00157"></a>00157       x = y = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00158"></a>00158       prec = -1;
 <a name="l00159"></a>00159       <span class="keywordflow">return</span>;
 <a name="l00160"></a>00160     }
@@ -215,14 +230,14 @@
 <a name="l00166"></a>00166       zone1 = 10 * zone1 + i;
 <a name="l00167"></a>00167       ++p;
 <a name="l00168"></a>00168     }
-<a name="l00169"></a>00169     <span class="keywordflow">if</span> (p > 0 && (zone1 == 0 || zone1 > 60))
+<a name="l00169"></a>00169     <span class="keywordflow">if</span> (p > 0 && !(zone1 >= UTMUPS::MINUTMZONE && zone1 <= UTMUPS::MAXUTMZONE))
 <a name="l00170"></a>00170       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone1) + <span class="stringliteral">" not in [1,60]"</span>);
 <a name="l00171"></a>00171     <span class="keywordflow">if</span> (p > 2)
 <a name="l00172"></a>00172       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"More than 2 digits_ at start of MGRS "</span>
 <a name="l00173"></a>00173                           + mgrs.substr(0, p));
 <a name="l00174"></a>00174     <span class="keywordflow">if</span> (len - p < 3)
 <a name="l00175"></a>00175       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"MGRS string too short "</span> + mgrs);
-<a name="l00176"></a>00176     <span class="keywordtype">bool</span> utmp = zone1 != 0;
+<a name="l00176"></a>00176     <span class="keywordtype">bool</span> utmp = zone1 != <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::UPS;
 <a name="l00177"></a>00177     <span class="keywordtype">int</span> zonem1 = zone1 - 1;
 <a name="l00178"></a>00178     <span class="keyword">const</span> <span class="keywordtype">string</span>& band = utmp ? latband_ : upsband_;
 <a name="l00179"></a>00179     <span class="keywordtype">int</span> iband = Utility::lookup(band, mgrs[p++]);
@@ -375,7 +390,7 @@
 <a name="l00326"></a>00326       <span class="comment">// The following deals with these special cases.</span>
 <a name="l00327"></a>00327       <span class="keywordtype">int</span>
 <a name="l00328"></a>00328         <span class="comment">// Fold [-10,-1] -> [9,0]</span>
-<a name="l00329"></a>00329         sband = iband >= 0 ? iband : - iband  - 1,
+<a name="l00329"></a>00329         sband = iband >= 0 ? iband : -iband - 1,
 <a name="l00330"></a>00330         <span class="comment">// Fold [-90,-1] -> [89,0]</span>
 <a name="l00331"></a>00331         srow = irow >= 0 ? irow : -irow - 1,
 <a name="l00332"></a>00332         <span class="comment">// Fold [4,7] -> [3,0]</span>
@@ -392,8 +407,13 @@
 <a name="l00343"></a>00343 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MGRS_8hpp.html b/doc/html/MGRS_8hpp.html
index cde776c..2d78459 100644
--- a/doc/html/MGRS_8hpp.html
+++ b/doc/html/MGRS_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MGRS.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,17 +83,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">GEOGRAPHICLIB_MGRS_HPP</a>   "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">GEOGRAPHICLIB_MGRS_HPP</a>   "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="MGRS_8hpp_source.html">MGRS.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_MGRS_HPP   "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_MGRS_HPP   "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"</td>
         </tr>
       </table>
 </div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MGRS_8hpp_source.html b/doc/html/MGRS_8hpp_source.html
index d1b1816..9598e70 100644
--- a/doc/html/MGRS_8hpp_source.html
+++ b/doc/html/MGRS_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MGRS.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,13 +67,13 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file MGRS.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::MGRS class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MGRS_HPP)</span>
-<a name="l00011"></a><a class="code" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MGRS_HPP "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"</span>
+<a name="l00011"></a><a class="code" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MGRS_HPP "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"</span>
 <a name="l00012"></a>00012 <span class="preprocessor"></span>
 <a name="l00013"></a>00013 <span class="preprocessor">#include <sstream></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -110,13 +125,13 @@
 <a name="l00060"></a>00060 <span class="comment">   * Example of use:</span>
 <a name="l00061"></a>00061 <span class="comment">   * \include example-MGRS.cpp</span>
 <a name="l00062"></a>00062 <span class="comment">   **********************************************************************/</span>
-<a name="l00063"></a><a class="code" href="classGeographicLib_1_1MGRS.html">00063</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a> {
+<a name="l00063"></a>00063   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> MGRS {
 <a name="l00064"></a>00064   <span class="keyword">private</span>:
-<a name="l00065"></a>00065     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00065"></a>00065     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00066"></a>00066     <span class="comment">// The smallest length s.t., 1.0e7 - eps_ < 1.0e7 (approx 1.9 nm)</span>
-<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
+<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
 <a name="l00068"></a>00068     <span class="comment">// The smallest angle s.t., 90 - eps_ < 90 (approx 50e-12 arcsec)</span>
-<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> real angeps_;
+<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angeps_;
 <a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">const</span> std::string hemispheres_;
 <a name="l00071"></a>00071     <span class="keyword">static</span> <span class="keyword">const</span> std::string utmcols_[3];
 <a name="l00072"></a>00072     <span class="keyword">static</span> <span class="keyword">const</span> std::string utmrow_;
@@ -141,7 +156,7 @@
 <a name="l00091"></a>00091       <span class="comment">// Maximum precision is um</span>
 <a name="l00092"></a>00092       maxprec_ = 5 + 6,
 <a name="l00093"></a>00093     };
-<a name="l00094"></a>00094     <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span>& northp, real& x, real& y);
+<a name="l00094"></a>00094     <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span>& northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y);
 <a name="l00095"></a>00095     <span class="keyword">static</span> <span class="keywordtype">int</span> UTMRow(<span class="keywordtype">int</span> iband, <span class="keywordtype">int</span> icol, <span class="keywordtype">int</span> irow) <span class="keywordflow">throw</span>();
 <a name="l00096"></a>00096 
 <a name="l00097"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a6a0cfac496024eaf645c7a2f98a02a75">00097</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>;        <span class="comment">// UTMUPS::StandardZone calls LatitudeBand</span>
@@ -169,7 +184,7 @@
 <a name="l00119"></a>00119       <span class="comment">// Difference between S hemisphere northing and N hemisphere northing</span>
 <a name="l00120"></a>00120       utmNshift_ = (maxutmSrow_ - minutmNrow_) * tile_
 <a name="l00121"></a>00121     };
-<a name="l00122"></a>00122     <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>();                     <span class="comment">// Disable constructor</span>
+<a name="l00122"></a>00122     MGRS();                     <span class="comment">// Disable constructor</span>
 <a name="l00123"></a>00123 
 <a name="l00124"></a>00124   <span class="keyword">public</span>:
 <a name="l00125"></a>00125 <span class="comment"></span>
@@ -312,7 +327,7 @@
 <a name="l00262"></a>00262 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
 <a name="l00263"></a>00263 <span class="comment">     * based on this ellipsoid.)</span>
 <a name="l00264"></a>00264 <span class="comment">     **********************************************************************/</span>
-<a name="l00265"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">00265</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d [...]
+<a name="l00265"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">00265</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUP [...]
 <a name="l00266"></a>00266 <span class="comment"></span>
 <a name="l00267"></a>00267 <span class="comment">    /**</span>
 <a name="l00268"></a>00268 <span class="comment">     * @return \e f the flattening of the WGS84 ellipsoid.</span>
@@ -320,28 +335,35 @@
 <a name="l00270"></a>00270 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
 <a name="l00271"></a>00271 <span class="comment">     * based on this ellipsoid.)</span>
 <a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">00273</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c [...]
-<a name="l00274"></a>00274 <span class="comment"></span>
-<a name="l00275"></a>00275 <span class="comment">    /**</span>
-<a name="l00276"></a>00276 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00277"></a>00277 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00278"></a>00278 <span class="comment">     **********************************************************************/</span>
-<a name="l00279"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">00279</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() throw()
-<a name="l00280"></a>00280     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">UTMUPS::InverseFlattening</a>(); }<span class="comment"></span>
-<a name="l00281"></a>00281 <span class="comment">    ///@}</span>
-<a name="l00282"></a>00282 <span class="comment"></span>  };
-<a name="l00283"></a>00283 
-<a name="l00284"></a>00284 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00273"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">00273</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS [...]
+<a name="l00274"></a>00274 <span class="comment">    ///@}</span>
+<a name="l00275"></a>00275 <span class="comment"></span><span class="comment"></span>
+<a name="l00276"></a>00276 <span class="comment">    /// \cond SKIP</span>
+<a name="l00277"></a>00277 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00278"></a>00278 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00279"></a>00279 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
+<a name="l00280"></a>00280 <span class="comment">     **********************************************************************/</span>
+<a name="l00281"></a>00281     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() throw()
+<a name="l00282"></a>00282     { <span class="keywordflow">return</span> UTMUPS::InverseFlattening(); }<span class="comment"></span>
+<a name="l00283"></a>00283 <span class="comment">    /// \endcond</span>
+<a name="l00284"></a>00284 <span class="comment"></span>  };
 <a name="l00285"></a>00285 
-<a name="l00286"></a>00286 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00287"></a>00287 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00289"></a>00289 <span class="preprocessor"></span>
-<a name="l00290"></a>00290 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MGRS_HPP</span>
+<a name="l00286"></a>00286 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00289"></a>00289 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00291"></a>00291 <span class="preprocessor"></span>
+<a name="l00292"></a>00292 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MGRS_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticCircle_8cpp.html b/doc/html/MagneticCircle_8cpp.html
index 753f185..41a6a60 100644
--- a/doc/html/MagneticCircle_8cpp.html
+++ b/doc/html/MagneticCircle_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticCircle.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -63,10 +78,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8cpp.html#a0ca864788d9c9fdd4987afdc16db17ac">GEOGRAPHICLIB_MAGNETICCIRCLE_CPP</a>   "$Id: 8cd933c406708a1f8b90e029e89bb99d2eb177b0 $"</td></tr>
@@ -109,8 +122,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticCircle_8cpp_source.html b/doc/html/MagneticCircle_8cpp_source.html
index 04429f1..c2a98c9 100644
--- a/doc/html/MagneticCircle_8cpp_source.html
+++ b/doc/html/MagneticCircle_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticCircle.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -106,8 +121,13 @@
 <a name="l00057"></a>00057 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticCircle_8hpp.html b/doc/html/MagneticCircle_8hpp.html
index fbd81d7..ad8c1ab 100644
--- a/doc/html/MagneticCircle_8hpp.html
+++ b/doc/html/MagneticCircle_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticCircle.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,13 +84,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8hpp.html#a5bc784ff412658d1c422828506b424da">GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</a>   "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8hpp.html#a5bc784ff412658d1c422828506b424da">GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</a>   "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
@@ -88,7 +101,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP   "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP   "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"</td>
         </tr>
       </table>
 </div>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticCircle_8hpp_source.html b/doc/html/MagneticCircle_8hpp_source.html
index e536630..b5ba339 100644
--- a/doc/html/MagneticCircle_8hpp_source.html
+++ b/doc/html/MagneticCircle_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticCircle.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MAGNETICCIRCLE_HPP)</span>
 <a name="l00011"></a><a class="code" href="MagneticCircle_8hpp.html#a5bc784ff412658d1c422828506b424da">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <vector></span>
@@ -81,132 +96,140 @@
 <a name="l00031"></a>00031 <span class="comment">   *</span>
 <a name="l00032"></a>00032 <span class="comment">   * Example of use:</span>
 <a name="l00033"></a>00033 <span class="comment">   * \include example-MagneticCircle.cpp</span>
-<a name="l00034"></a>00034 <span class="comment">   **********************************************************************/</span>
-<a name="l00035"></a>00035 
-<a name="l00036"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html">00036</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> {
-<a name="l00037"></a>00037   <span class="keyword">private</span>:
-<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040     real _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0;
-<a name="l00041"></a>00041     <span class="keywordtype">bool</span> _interpolate;
-<a name="l00042"></a>00042     <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> _circ0, _circ1;
-<a name="l00043"></a>00043 
-<a name="l00044"></a>00044     <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>(real a, real f, real lat, real h, real t,
-<a name="l00045"></a>00045                    real cphi, real sphi, real t1, real dt0,
-<a name="l00046"></a>00046                    <span class="keywordtype">bool</span> interpolate,
-<a name="l00047"></a>00047                    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& circ0, <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& circ1)
-<a name="l00048"></a>00048       : _a(a)
-<a name="l00049"></a>00049       , _f(f)
-<a name="l00050"></a>00050       , _lat(lat)
-<a name="l00051"></a>00051       , _h(h)
-<a name="l00052"></a>00052       , _t(t)
-<a name="l00053"></a>00053       , _cphi(cphi)
-<a name="l00054"></a>00054       , _sphi(sphi)
-<a name="l00055"></a>00055       , _t1(t1)
-<a name="l00056"></a>00056       , _dt0(dt0)
-<a name="l00057"></a>00057       , _interpolate(interpolate)
-<a name="l00058"></a>00058       , _circ0(circ0)
-<a name="l00059"></a>00059       , _circ1(circ1)
-<a name="l00060"></a>00060     {}
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062     <span class="keywordtype">void</span> Field(real lon, <span class="keywordtype">bool</span> diffp,
-<a name="l00063"></a>00063                real& Bx, real& By, real& Bz,
-<a name="l00064"></a>00064                real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00065"></a>00065 
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#af6619ebe4c078705fc49a0d9f950b431">00066</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>; <span class="comment">// MagneticModel calls the private constructor</span>
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068   <span class="keyword">public</span>:
-<a name="l00069"></a>00069 <span class="comment"></span>
-<a name="l00070"></a>00070 <span class="comment">    /**</span>
-<a name="l00071"></a>00071 <span class="comment">     * A default constructor for the normal gravity.  This sets up an</span>
-<a name="l00072"></a>00072 <span class="comment">     * uninitialized object which can be later replaced by the</span>
-<a name="l00073"></a>00073 <span class="comment">     * MagneticModel::Circle.</span>
-<a name="l00074"></a>00074 <span class="comment">     **********************************************************************/</span>
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">00075</a>     <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">MagneticCircle</a>() : _a(-1) {}
-<a name="l00076"></a>00076 <span class="comment"></span>
-<a name="l00077"></a>00077 <span class="comment">    /** \name Compute the magnetic field</span>
-<a name="l00078"></a>00078 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00079"></a>00079 <span class="comment">    ///@{</span>
-<a name="l00080"></a>00080 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00081"></a>00081 <span class="comment">     * Evaluate the components of the geomagnetic field at a particular</span>
-<a name="l00082"></a>00082 <span class="comment">     * longitude.</span>
-<a name="l00083"></a>00083 <span class="comment">     *</span>
-<a name="l00084"></a>00084 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00085"></a>00085 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00086"></a>00086 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00087"></a>00087 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00088"></a>00088 <span class="comment">     *   (nanotesla).</span>
-<a name="l00089"></a>00089 <span class="comment">     **********************************************************************/</span>
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">00090</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">operator()</a>(real lon, real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00091"></a>00091       real dummy;
-<a name="l00092"></a>00092       Field(lon, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
-<a name="l00093"></a>00093     }
-<a name="l00094"></a>00094 <span class="comment"></span>
-<a name="l00095"></a>00095 <span class="comment">    /**</span>
-<a name="l00096"></a>00096 <span class="comment">     * Evaluate the components of the geomagnetic field and their time</span>
-<a name="l00097"></a>00097 <span class="comment">     * derivatives at a particular longitude.</span>
-<a name="l00098"></a>00098 <span class="comment">     *</span>
-<a name="l00099"></a>00099 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00100"></a>00100 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00101"></a>00101 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00102"></a>00102 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00103"></a>00103 <span class="comment">     *   (nanotesla).</span>
-<a name="l00104"></a>00104 <span class="comment">     * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
-<a name="l00105"></a>00105 <span class="comment">     * @param[out] Byt the rate of change of \e By (nT/yr).</span>
-<a name="l00106"></a>00106 <span class="comment">     * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
-<a name="l00107"></a>00107 <span class="comment">     **********************************************************************/</span>
-<a name="l00108"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">00108</a>     <span class="keywordtype">void</span> operator()(real lon, real& Bx, real& By, real& Bz,
-<a name="l00109"></a>00109                     real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00110"></a>00110       Field(lon, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
-<a name="l00111"></a>00111     }<span class="comment"></span>
-<a name="l00112"></a>00112 <span class="comment">    ///@}</span>
-<a name="l00113"></a>00113 <span class="comment"></span><span class="comment"></span>
-<a name="l00114"></a>00114 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00115"></a>00115 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00116"></a>00116 <span class="comment">    ///@{</span>
-<a name="l00117"></a>00117 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00118"></a>00118 <span class="comment">     * @return true if the object has been initialized.</span>
-<a name="l00119"></a>00119 <span class="comment">     **********************************************************************/</span>
-<a name="l00120"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">00120</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
-<a name="l00121"></a>00121 <span class="comment">    /**</span>
-<a name="l00122"></a>00122 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00123"></a>00123 <span class="comment">     *   the value inherited from the MagneticModel object used in the</span>
-<a name="l00124"></a>00124 <span class="comment">     *   constructor.</span>
-<a name="l00125"></a>00125 <span class="comment">     **********************************************************************/</span>
-<a name="l00126"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a78721d381d21f676152394dd576f2e77">00126</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00127"></a>00127     { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00128"></a>00128 <span class="comment">    /**</span>
-<a name="l00129"></a>00129 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00130"></a>00130 <span class="comment">     *   inherited from the MagneticModel object used in the constructor.</span>
-<a name="l00131"></a>00131 <span class="comment">     **********************************************************************/</span>
-<a name="l00132"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a4c3fc40a49332ddcd042e5cb41c3cb2a">00132</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00133"></a>00133     { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00134"></a>00134 <span class="comment">    /**</span>
-<a name="l00135"></a>00135 <span class="comment">     * @return the latitude of the circle (degrees).</span>
-<a name="l00136"></a>00136 <span class="comment">     **********************************************************************/</span>
-<a name="l00137"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aaf14e89275bffd8253acdbe4840b65d0">00137</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Latitude() <span class="keyword">const</span> throw()
-<a name="l00138"></a>00138     { <span class="keywordflow">return</span> Init() ? _lat : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00139"></a>00139 <span class="comment">    /**</span>
-<a name="l00140"></a>00140 <span class="comment">     * @return the height of the circle (meters).</span>
-<a name="l00141"></a>00141 <span class="comment">     **********************************************************************/</span>
-<a name="l00142"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aadd95eac0650f195e4d7acdc9819716b">00142</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Height() <span class="keyword">const</span> throw()
-<a name="l00143"></a>00143     { <span class="keywordflow">return</span> Init() ? _h : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00144"></a>00144 <span class="comment">    /**</span>
-<a name="l00145"></a>00145 <span class="comment">     * @return the time (fractional years).</span>
-<a name="l00146"></a>00146 <span class="comment">     **********************************************************************/</span>
-<a name="l00147"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a44783c9e44f16bbd48cc5061b30ce8e9">00147</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Time() <span class="keyword">const</span> throw()
-<a name="l00148"></a>00148     { <span class="keywordflow">return</span> Init() ? _t : Math::NaN<real>(); }
-<a name="l00149"></a>00149 <span class="comment"></span>
-<a name="l00150"></a>00150 <span class="comment">    ///@}</span>
-<a name="l00151"></a>00151 <span class="comment"></span>  };
-<a name="l00152"></a>00152 
-<a name="l00153"></a>00153 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00154"></a>00154 
-<a name="l00155"></a>00155 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</span>
+<a name="l00034"></a>00034 <span class="comment">   *</span>
+<a name="l00035"></a>00035 <span class="comment">   * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility</span>
+<a name="l00036"></a>00036 <span class="comment">   * providing access to the functionality of MagneticModel and MagneticCircle.</span>
+<a name="l00037"></a>00037 <span class="comment">   **********************************************************************/</span>
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> MagneticCircle {
+<a name="l00040"></a>00040   <span class="keyword">private</span>:
+<a name="l00041"></a>00041     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0;
+<a name="l00044"></a>00044     <span class="keywordtype">bool</span> _interpolate;
+<a name="l00045"></a>00045     CircularEngine _circ0, _circ1;
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     MagneticCircle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t,
+<a name="l00048"></a>00048                    <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dt0,
+<a name="l00049"></a>00049                    <span class="keywordtype">bool</span> interpolate,
+<a name="l00050"></a>00050                    <span class="keyword">const</span> CircularEngine& circ0, <span class="keyword">const</span> CircularEngine& circ1)
+<a name="l00051"></a>00051       : _a(a)
+<a name="l00052"></a>00052       , _f(f)
+<a name="l00053"></a>00053       , _lat(lat)
+<a name="l00054"></a>00054       , _h(h)
+<a name="l00055"></a>00055       , _t(t)
+<a name="l00056"></a>00056       , _cphi(cphi)
+<a name="l00057"></a>00057       , _sphi(sphi)
+<a name="l00058"></a>00058       , _t1(t1)
+<a name="l00059"></a>00059       , _dt0(dt0)
+<a name="l00060"></a>00060       , _interpolate(interpolate)
+<a name="l00061"></a>00061       , _circ0(circ0)
+<a name="l00062"></a>00062       , _circ1(circ1)
+<a name="l00063"></a>00063     {}
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065     <span class="keywordtype">void</span> Field(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> diffp,
+<a name="l00066"></a>00066                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bz,
+<a name="l00067"></a>00067                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00068"></a>00068 
+<a name="l00069"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#af6619ebe4c078705fc49a0d9f950b431">00069</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>; <span class="comment">// MagneticModel calls the private constructor</span>
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071   <span class="keyword">public</span>:
+<a name="l00072"></a>00072 <span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment">    /**</span>
+<a name="l00074"></a>00074 <span class="comment">     * A default constructor for the normal gravity.  This sets up an</span>
+<a name="l00075"></a>00075 <span class="comment">     * uninitialized object which can be later replaced by the</span>
+<a name="l00076"></a>00076 <span class="comment">     * MagneticModel::Circle.</span>
+<a name="l00077"></a>00077 <span class="comment">     **********************************************************************/</span>
+<a name="l00078"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">00078</a>     <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">MagneticCircle</a>() : _a(-1) {}
+<a name="l00079"></a>00079 <span class="comment"></span>
+<a name="l00080"></a>00080 <span class="comment">    /** \name Compute the magnetic field</span>
+<a name="l00081"></a>00081 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00082"></a>00082 <span class="comment">    ///@{</span>
+<a name="l00083"></a>00083 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00084"></a>00084 <span class="comment">     * Evaluate the components of the geomagnetic field at a particular</span>
+<a name="l00085"></a>00085 <span class="comment">     * longitude.</span>
+<a name="l00086"></a>00086 <span class="comment">     *</span>
+<a name="l00087"></a>00087 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00088"></a>00088 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00089"></a>00089 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00090"></a>00090 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00091"></a>00091 <span class="comment">     *   (nanotesla).</span>
+<a name="l00092"></a>00092 <span class="comment">     **********************************************************************/</span>
+<a name="l00093"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">00093</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">operator()</a>(real lon, real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00094"></a>00094       real dummy;
+<a name="l00095"></a>00095       Field(lon, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
+<a name="l00096"></a>00096     }
+<a name="l00097"></a>00097 <span class="comment"></span>
+<a name="l00098"></a>00098 <span class="comment">    /**</span>
+<a name="l00099"></a>00099 <span class="comment">     * Evaluate the components of the geomagnetic field and their time</span>
+<a name="l00100"></a>00100 <span class="comment">     * derivatives at a particular longitude.</span>
+<a name="l00101"></a>00101 <span class="comment">     *</span>
+<a name="l00102"></a>00102 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00103"></a>00103 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00104"></a>00104 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00105"></a>00105 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00106"></a>00106 <span class="comment">     *   (nanotesla).</span>
+<a name="l00107"></a>00107 <span class="comment">     * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
+<a name="l00108"></a>00108 <span class="comment">     * @param[out] Byt the rate of change of \e By (nT/yr).</span>
+<a name="l00109"></a>00109 <span class="comment">     * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
+<a name="l00110"></a>00110 <span class="comment">     **********************************************************************/</span>
+<a name="l00111"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">00111</a>     <span class="keywordtype">void</span> operator()(real lon, real& Bx, real& By, real& Bz,
+<a name="l00112"></a>00112                     real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00113"></a>00113       Field(lon, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
+<a name="l00114"></a>00114     }<span class="comment"></span>
+<a name="l00115"></a>00115 <span class="comment">    ///@}</span>
+<a name="l00116"></a>00116 <span class="comment"></span><span class="comment"></span>
+<a name="l00117"></a>00117 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00118"></a>00118 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00119"></a>00119 <span class="comment">    ///@{</span>
+<a name="l00120"></a>00120 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00121"></a>00121 <span class="comment">     * @return true if the object has been initialized.</span>
+<a name="l00122"></a>00122 <span class="comment">     **********************************************************************/</span>
+<a name="l00123"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">00123</a>     <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
+<a name="l00124"></a>00124 <span class="comment">    /**</span>
+<a name="l00125"></a>00125 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00126"></a>00126 <span class="comment">     *   the value inherited from the MagneticModel object used in the</span>
+<a name="l00127"></a>00127 <span class="comment">     *   constructor.</span>
+<a name="l00128"></a>00128 <span class="comment">     **********************************************************************/</span>
+<a name="l00129"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a78721d381d21f676152394dd576f2e77">00129</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00130"></a>00130     { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00131"></a>00131 <span class="comment">    /**</span>
+<a name="l00132"></a>00132 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00133"></a>00133 <span class="comment">     *   inherited from the MagneticModel object used in the constructor.</span>
+<a name="l00134"></a>00134 <span class="comment">     **********************************************************************/</span>
+<a name="l00135"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a4c3fc40a49332ddcd042e5cb41c3cb2a">00135</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00136"></a>00136     { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment">    /**</span>
+<a name="l00138"></a>00138 <span class="comment">     * @return the latitude of the circle (degrees).</span>
+<a name="l00139"></a>00139 <span class="comment">     **********************************************************************/</span>
+<a name="l00140"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aaf14e89275bffd8253acdbe4840b65d0">00140</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Latitude() <span class="keyword">const</span> throw()
+<a name="l00141"></a>00141     { <span class="keywordflow">return</span> Init() ? _lat : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00142"></a>00142 <span class="comment">    /**</span>
+<a name="l00143"></a>00143 <span class="comment">     * @return the height of the circle (meters).</span>
+<a name="l00144"></a>00144 <span class="comment">     **********************************************************************/</span>
+<a name="l00145"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aadd95eac0650f195e4d7acdc9819716b">00145</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Height() <span class="keyword">const</span> throw()
+<a name="l00146"></a>00146     { <span class="keywordflow">return</span> Init() ? _h : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00147"></a>00147 <span class="comment">    /**</span>
+<a name="l00148"></a>00148 <span class="comment">     * @return the time (fractional years).</span>
+<a name="l00149"></a>00149 <span class="comment">     **********************************************************************/</span>
+<a name="l00150"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a44783c9e44f16bbd48cc5061b30ce8e9">00150</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Time() <span class="keyword">const</span> throw()
+<a name="l00151"></a>00151     { <span class="keywordflow">return</span> Init() ? _t : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment">    ///@}</span>
+<a name="l00154"></a>00154 <span class="comment"></span>  };
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticField.1.html b/doc/html/MagneticField.1.html
index 8288971..cf39b66 100644
--- a/doc/html/MagneticField.1.html
+++ b/doc/html/MagneticField.1.html
@@ -48,8 +48,11 @@
 <p><strong>MagneticField</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
 [ <strong>-t</strong> <em>time</em> | <strong>-c</strong> <em>time</em> <em>lat</em> <em>h</em> ]
 [ <strong>-r</strong> ] [ <strong>-T</strong> <em>tguard</em> ] [ <strong>-H</strong> <em>hguard</em> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -144,6 +147,15 @@ places.</p>
 <p>print information about the magnetic model on standard error before
 processing the input.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -169,8 +181,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -261,7 +279,7 @@ way.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>The magnetic field from WMM2010 in Timbuktu on 2012-01-01</p>
 <pre>
-    echo 2012-01-01 "16d46'33N" "3d00'34W" 300 | MagneticField -r
+    echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r
     => -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1
        0.10 -0.07 34.3 36.8 54.4 -35.3 25.9</pre>
 <p>The first two numbers returned are the declination and inclination of
diff --git a/doc/html/MagneticField_8cpp.html b/doc/html/MagneticField_8cpp.html
index 23b7dec..e34d4d4 100644
--- a/doc/html/MagneticField_8cpp.html
+++ b/doc/html/MagneticField_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticField.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for evaluating magnetic fields. </p>
-<p>Copyright (c) Charles Karney (2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o MagneticField \ <a class="el" href="MagneticField_8cpp.html" title="Command line utility for evaluating magnetic fields.">MagneticField.cpp</a> \ ../src/CircularEngine.cpp \ ../src/DMS.cpp \ ../src/Geocentric.cpp \ ../src/MagneticCircle.cpp \ ../src/MagneticModel.cpp \ ../src/SphericalEngine.cpp \ ../src/Utility.cpp</p>
 <p>See the <a href="MagneticField.1.html">man page</a> for usage information. </p>
 
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="MagneticField_8cpp_source.html#l00035">35</a> of file <a class="el" href="MagneticField_8cpp_source.html">MagneticField.cpp</a>.</p>
 
-<p>References <a class="el" href="MagneticModel_8cpp_source.html#l00207">GeographicLib::MagneticModel::Circle()</a>, <a class="el" href="MagneticModel_8hpp_source.html#l00234">GeographicLib::MagneticModel::DateTime()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="MagneticModel_8cpp_source.html#l00250">GeographicLib::MagneticModel::DefaultMa [...]
+<p>References <a class="el" href="MagneticModel_8cpp_source.html#l00250">GeographicLib::MagneticModel::DefaultMagneticName()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>, <a class="el" href="MagneticModel_8cpp_source.html#l00237">GeographicLib::MagneticModel::DefaultMagneticPath()</a>, <a class="el" href="MagneticModel_8hpp_source.html#l00286">GeographicLib::Magne [...]
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticField_8cpp_source.html b/doc/html/MagneticField_8cpp_source.html
index 354eeb2..e67beef 100644
--- a/doc/html/MagneticField_8cpp_source.html
+++ b/doc/html/MagneticField_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticField.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file MagneticField.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for evaluating magnetic fields</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under</span>
-<a name="l00006"></a>00006 <span class="comment"> * the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -84,298 +99,322 @@
 <a name="l00035"></a><a class="code" href="MagneticField_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00035</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00036"></a>00036   <span class="keywordflow">try</span> {
 <a name="l00037"></a>00037     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00038"></a>00038     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00039"></a>00039     <span class="keywordtype">bool</span> verbose = <span class="keyword">false</span>;
 <a name="l00040"></a>00040     std::string dir;
 <a name="l00041"></a>00041     std::string model = <a class="code" href="classGeographicLib_1_1MagneticModel.html#ab2ac8cc598c0d9a6b448c9a45e9642d9">MagneticModel::DefaultMagneticName</a>();
-<a name="l00042"></a>00042     std::string istring, ifile, ofile;
-<a name="l00043"></a>00043     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> time = 0, lat = 0, h = 0;
-<a name="l00044"></a>00044     <span class="keywordtype">bool</span> timeset = <span class="keyword">false</span>, circle = <span class="keyword">false</span>, rate = <span class="keyword">false</span>;
-<a name="l00045"></a>00045     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hguard = 500000, tguard = 50;
-<a name="l00046"></a>00046     <span class="keywordtype">int</span> prec = 1;
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00049"></a>00049       std::string arg(argv[m]);
-<a name="l00050"></a>00050       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
-<a name="l00051"></a>00051         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00052"></a>00052         model = argv[m];
-<a name="l00053"></a>00053       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
-<a name="l00054"></a>00054         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00055"></a>00055         dir = argv[m];
-<a name="l00056"></a>00056       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
-<a name="l00057"></a>00057         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00058"></a>00058         <span class="keywordflow">try</span> {
-<a name="l00059"></a>00059           time = Utility::fractionalyear<real>(std::string(argv[m]));
-<a name="l00060"></a>00060           timeset = <span class="keyword">true</span>;
-<a name="l00061"></a>00061           circle = <span class="keyword">false</span>;
-<a name="l00062"></a>00062         }
-<a name="l00063"></a>00063         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00064"></a>00064           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00065"></a>00065                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00066"></a>00066           <span class="keywordflow">return</span> 1;
-<a name="l00067"></a>00067         }
-<a name="l00068"></a>00068       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
-<a name="l00069"></a>00069         <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00070"></a>00070         <span class="keywordflow">try</span> {
-<a name="l00071"></a>00071           time = Utility::fractionalyear<real>(std::string(argv[++m]));
-<a name="l00072"></a>00072           <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00073"></a>00073           lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
-<a name="l00074"></a>00074           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
-<a name="l00075"></a>00075             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
-<a name="l00076"></a>00076           <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
-<a name="l00077"></a>00077             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
-<a name="l00078"></a>00078           h =  Utility::num<real>(std::string(argv[++m]));
-<a name="l00079"></a>00079           timeset = <span class="keyword">false</span>;
-<a name="l00080"></a>00080           circle = <span class="keyword">true</span>;
-<a name="l00081"></a>00081         }
-<a name="l00082"></a>00082         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00083"></a>00083           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00084"></a>00084                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085           <span class="keywordflow">return</span> 1;
-<a name="l00086"></a>00086         }
-<a name="l00087"></a>00087       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00088"></a>00088         rate = !rate;
-<a name="l00089"></a>00089       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00090"></a>00090         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00091"></a>00091         <span class="keywordflow">try</span> {
-<a name="l00092"></a>00092           prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00093"></a>00093         }
-<a name="l00094"></a>00094         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00095"></a>00095           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00096"></a>00096           <span class="keywordflow">return</span> 1;
-<a name="l00097"></a>00097         }
-<a name="l00098"></a>00098       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-T"</span>) {
-<a name="l00099"></a>00099         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00100"></a>00100         <span class="keywordflow">try</span> {
-<a name="l00101"></a>00101           tguard = Utility::num<real>(std::string(argv[m]));
-<a name="l00102"></a>00102         }
-<a name="l00103"></a>00103         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00104"></a>00104           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00105"></a>00105                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00106"></a>00106           <span class="keywordflow">return</span> 1;
-<a name="l00107"></a>00107         }
-<a name="l00108"></a>00108       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>) {
-<a name="l00109"></a>00109         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00110"></a>00110         <span class="keywordflow">try</span> {
-<a name="l00111"></a>00111           hguard = Utility::num<real>(std::string(argv[m]));
-<a name="l00112"></a>00112         }
-<a name="l00113"></a>00113         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00114"></a>00114           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00115"></a>00115                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00116"></a>00116           <span class="keywordflow">return</span> 1;
-<a name="l00117"></a>00117         }
-<a name="l00118"></a>00118       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
-<a name="l00119"></a>00119         verbose = <span class="keyword">true</span>;
-<a name="l00120"></a>00120       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00121"></a>00121         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00122"></a>00122         istring = argv[m];
-<a name="l00123"></a>00123       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00124"></a>00124         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00125"></a>00125         ifile = argv[m];
-<a name="l00126"></a>00126       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00127"></a>00127         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00128"></a>00128         ofile = argv[m];
-<a name="l00129"></a>00129       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00130"></a>00130         std::cout
-<a name="l00131"></a>00131           << argv[0]
-<a name="l00132"></a>00132           << <span class="stringliteral">": $Id: 9eed3e6df94c67923b1730fe0dae826a5a73163e $\n"</span>
-<a name="l00133"></a>00133           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00134"></a>00134         <span class="keywordflow">return</span> 0;
-<a name="l00135"></a>00135       } <span class="keywordflow">else</span> {
-<a name="l00136"></a>00136         <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00137"></a>00137         <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
-<a name="l00138"></a>00138           std::cout<< <span class="stringliteral">"\nDefault magnetic path = \""</span>
-<a name="l00139"></a>00139                    << <a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">MagneticModel::DefaultMagneticPath</a>()
-<a name="l00140"></a>00140                    << <span class="stringliteral">"\"\nDefault magnetic name = \""</span>
-<a name="l00141"></a>00141                    << <a class="code" href="classGeographicLib_1_1MagneticModel.html#ab2ac8cc598c0d9a6b448c9a45e9642d9">MagneticModel::DefaultMagneticName</a>()
-<a name="l00142"></a>00142                    << <span class="stringliteral">"\"\n"</span>;
-<a name="l00143"></a>00143         <span class="keywordflow">return</span> retval;
-<a name="l00144"></a>00144       }
-<a name="l00145"></a>00145     }
-<a name="l00146"></a>00146 
-<a name="l00147"></a>00147     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00148"></a>00148       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00149"></a>00149       <span class="keywordflow">return</span> 1;
-<a name="l00150"></a>00150     }
-<a name="l00151"></a>00151     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00152"></a>00152     std::ifstream infile;
-<a name="l00153"></a>00153     std::istringstream instring;
-<a name="l00154"></a>00154     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00155"></a>00155       infile.open(ifile.c_str());
-<a name="l00156"></a>00156       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00157"></a>00157         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00158"></a>00158         <span class="keywordflow">return</span> 1;
-<a name="l00159"></a>00159       }
-<a name="l00160"></a>00160     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00161"></a>00161       std::string::size_type m = 0;
-<a name="l00162"></a>00162       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00163"></a>00163         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00164"></a>00164         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00165"></a>00165           <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00167"></a>00167       }
-<a name="l00168"></a>00168       instring.str(istring);
-<a name="l00169"></a>00169     }
-<a name="l00170"></a>00170     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00171"></a>00171       (!istring.empty() ? &instring : &std::cin);
-<a name="l00172"></a>00172 
-<a name="l00173"></a>00173     std::ofstream outfile;
-<a name="l00174"></a>00174     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00175"></a>00175     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00176"></a>00176       outfile.open(ofile.c_str());
-<a name="l00177"></a>00177       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00178"></a>00178         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00179"></a>00179         <span class="keywordflow">return</span> 1;
-<a name="l00180"></a>00180       }
-<a name="l00181"></a>00181     }
-<a name="l00182"></a>00182     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00042"></a>00042     std::string istring, ifile, ofile, cdelim;
+<a name="l00043"></a>00043     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00044"></a>00044     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> time = 0, lat = 0, h = 0;
+<a name="l00045"></a>00045     <span class="keywordtype">bool</span> timeset = <span class="keyword">false</span>, circle = <span class="keyword">false</span>, rate = <span class="keyword">false</span>;
+<a name="l00046"></a>00046     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hguard = 500000, tguard = 50;
+<a name="l00047"></a>00047     <span class="keywordtype">int</span> prec = 1;
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00050"></a>00050       std::string arg(argv[m]);
+<a name="l00051"></a>00051       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
+<a name="l00052"></a>00052         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00053"></a>00053         model = argv[m];
+<a name="l00054"></a>00054       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00055"></a>00055         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00056"></a>00056         dir = argv[m];
+<a name="l00057"></a>00057       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
+<a name="l00058"></a>00058         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00059"></a>00059         <span class="keywordflow">try</span> {
+<a name="l00060"></a>00060           time = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fractionalyear<real>(std::string(argv[m]));
+<a name="l00061"></a>00061           timeset = <span class="keyword">true</span>;
+<a name="l00062"></a>00062           circle = <span class="keyword">false</span>;
+<a name="l00063"></a>00063         }
+<a name="l00064"></a>00064         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00065"></a>00065           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00066"></a>00066                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00067"></a>00067           <span class="keywordflow">return</span> 1;
+<a name="l00068"></a>00068         }
+<a name="l00069"></a>00069       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
+<a name="l00070"></a>00070         <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00071"></a>00071         <span class="keywordflow">try</span> {
+<a name="l00072"></a>00072           time = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fractionalyear<real>(std::string(argv[++m]));
+<a name="l00073"></a>00073           <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00074"></a>00074           lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
+<a name="l00075"></a>00075           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
+<a name="l00076"></a>00076             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
+<a name="l00077"></a>00077           <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
+<a name="l00078"></a>00078             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
+<a name="l00079"></a>00079           h = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[++m]));
+<a name="l00080"></a>00080           timeset = <span class="keyword">false</span>;
+<a name="l00081"></a>00081           circle = <span class="keyword">true</span>;
+<a name="l00082"></a>00082         }
+<a name="l00083"></a>00083         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00084"></a>00084           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00085"></a>00085                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00086"></a>00086           <span class="keywordflow">return</span> 1;
+<a name="l00087"></a>00087         }
+<a name="l00088"></a>00088       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00089"></a>00089         rate = !rate;
+<a name="l00090"></a>00090       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00091"></a>00091         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00092"></a>00092         <span class="keywordflow">try</span> {
+<a name="l00093"></a>00093           prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00094"></a>00094         }
+<a name="l00095"></a>00095         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00096"></a>00096           std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00097"></a>00097           <span class="keywordflow">return</span> 1;
+<a name="l00098"></a>00098         }
+<a name="l00099"></a>00099       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-T"</span>) {
+<a name="l00100"></a>00100         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101         <span class="keywordflow">try</span> {
+<a name="l00102"></a>00102           tguard = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00103"></a>00103         }
+<a name="l00104"></a>00104         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00105"></a>00105           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00106"></a>00106                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00107"></a>00107           <span class="keywordflow">return</span> 1;
+<a name="l00108"></a>00108         }
+<a name="l00109"></a>00109       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>) {
+<a name="l00110"></a>00110         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00111"></a>00111         <span class="keywordflow">try</span> {
+<a name="l00112"></a>00112           hguard = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00113"></a>00113         }
+<a name="l00114"></a>00114         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00115"></a>00115           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00116"></a>00116                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00117"></a>00117           <span class="keywordflow">return</span> 1;
+<a name="l00118"></a>00118         }
+<a name="l00119"></a>00119       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
+<a name="l00120"></a>00120         verbose = <span class="keyword">true</span>;
+<a name="l00121"></a>00121       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00122"></a>00122         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00123"></a>00123         istring = argv[m];
+<a name="l00124"></a>00124       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00125"></a>00125         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00126"></a>00126         ifile = argv[m];
+<a name="l00127"></a>00127       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00128"></a>00128         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00129"></a>00129         ofile = argv[m];
+<a name="l00130"></a>00130       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00131"></a>00131         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00132"></a>00132         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00133"></a>00133           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00134"></a>00134           <span class="keywordflow">return</span> 1;
+<a name="l00135"></a>00135         }
+<a name="l00136"></a>00136         lsep = argv[m][0];
+<a name="l00137"></a>00137       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00138"></a>00138         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00139"></a>00139         cdelim = argv[m];
+<a name="l00140"></a>00140       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00141"></a>00141         std::cout
+<a name="l00142"></a>00142           << argv[0]
+<a name="l00143"></a>00143           << <span class="stringliteral">": $Id: cd55a73582dee908c12a23bee33362e7607268af $\n"</span>
+<a name="l00144"></a>00144           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00145"></a>00145         <span class="keywordflow">return</span> 0;
+<a name="l00146"></a>00146       } <span class="keywordflow">else</span> {
+<a name="l00147"></a>00147         <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00148"></a>00148         <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
+<a name="l00149"></a>00149           std::cout<< <span class="stringliteral">"\nDefault magnetic path = \""</span>
+<a name="l00150"></a>00150                    << <a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">MagneticModel::DefaultMagneticPath</a>()
+<a name="l00151"></a>00151                    << <span class="stringliteral">"\"\nDefault magnetic name = \""</span>
+<a name="l00152"></a>00152                    << <a class="code" href="classGeographicLib_1_1MagneticModel.html#ab2ac8cc598c0d9a6b448c9a45e9642d9">MagneticModel::DefaultMagneticName</a>()
+<a name="l00153"></a>00153                    << <span class="stringliteral">"\"\n"</span>;
+<a name="l00154"></a>00154         <span class="keywordflow">return</span> retval;
+<a name="l00155"></a>00155       }
+<a name="l00156"></a>00156     }
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00159"></a>00159       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00160"></a>00160       <span class="keywordflow">return</span> 1;
+<a name="l00161"></a>00161     }
+<a name="l00162"></a>00162     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00163"></a>00163     std::ifstream infile;
+<a name="l00164"></a>00164     std::istringstream instring;
+<a name="l00165"></a>00165     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00166"></a>00166       infile.open(ifile.c_str());
+<a name="l00167"></a>00167       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00168"></a>00168         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00169"></a>00169         <span class="keywordflow">return</span> 1;
+<a name="l00170"></a>00170       }
+<a name="l00171"></a>00171     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00172"></a>00172       std::string::size_type m = 0;
+<a name="l00173"></a>00173       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00174"></a>00174         m = istring.find(lsep, m);
+<a name="l00175"></a>00175         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00176"></a>00176           <span class="keywordflow">break</span>;
+<a name="l00177"></a>00177         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00178"></a>00178       }
+<a name="l00179"></a>00179       instring.str(istring);
+<a name="l00180"></a>00180     }
+<a name="l00181"></a>00181     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00182"></a>00182       (!istring.empty() ? &instring : &std::cin);
 <a name="l00183"></a>00183 
-<a name="l00184"></a>00184     tguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), tguard);
-<a name="l00185"></a>00185     hguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), hguard);
-<a name="l00186"></a>00186     prec = std::min(10, std::max(0, prec));
-<a name="l00187"></a>00187     <span class="keywordtype">int</span> retval = 0;
-<a name="l00188"></a>00188     <span class="keywordflow">try</span> {
-<a name="l00189"></a>00189       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> m(model, dir);
-<a name="l00190"></a>00190       <span class="keywordflow">if</span> ((timeset || circle)
-<a name="l00191"></a>00191           && (!Math::isfinite<real>(time) ||
-<a name="l00192"></a>00192               time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard ||
-<a name="l00193"></a>00193               time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard))
-<a name="l00194"></a>00194         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(time) +
-<a name="l00195"></a>00195                             <span class="stringliteral">" too far outside allowed range ["</span> +
-<a name="l00196"></a>00196                             <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
-<a name="l00197"></a>00197                             <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) + <span class="stringliteral">"]"</span>);
-<a name="l00198"></a>00198       <span class="keywordflow">if</span> (circle
-<a name="l00199"></a>00199           && (!Math::isfinite<real>(h) ||
-<a name="l00200"></a>00200               h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard ||
-<a name="l00201"></a>00201               h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard))
-<a name="l00202"></a>00202         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(h/1000) +
-<a name="l00203"></a>00203                             <span class="stringliteral">"km too far outside allowed range ["</span> +
-<a name="l00204"></a>00204                             <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
-<a name="l00205"></a>00205                             <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
-<a name="l00206"></a>00206       <span class="keywordflow">if</span> (verbose) {
-<a name="l00207"></a>00207         std::cerr << <span class="stringliteral">"Magnetic file: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>()      << <span class="stringliteral">"\n"</span>
-<a name="l00208"></a>00208                   << <span class="stringliteral">"Name: "</span>          << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00209"></a>00209                   << <span class="stringliteral">"Description: "</span>   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>()       << <span class="stringliteral">"\n"</span>
-<a name="l00210"></a>00210                   << <span class="stringliteral">"Date & Time: "</span>   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>()          << <span class="stringliteral">"\n"</span>
-<a name="l00211"></a>00211                   << <span class="stringliteral">"Time range: ["</span>
-<a name="l00212"></a>00212                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span>
-<a name="l00213"></a>00213                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>
-<a name="l00214"></a>00214                   << <span class="stringliteral">"Height range: ["</span>
-<a name="l00215"></a>00215                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
-<a name="l00216"></a>00216                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
-<a name="l00217"></a>00217       }
-<a name="l00218"></a>00218       <span class="keywordflow">if</span> ((timeset || circle) && (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()))
-<a name="l00219"></a>00219         std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
-<a name="l00220"></a>00220                   << <span class="stringliteral">" outside allowed range ["</span>
-<a name="l00221"></a>00221                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
-<a name="l00222"></a>00222       <span class="keywordflow">if</span> (circle && (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()))
-<a name="l00223"></a>00223         std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
-<a name="l00224"></a>00224                   << <span class="stringliteral">"km outside allowed range ["</span>
-<a name="l00225"></a>00225                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
-<a name="l00226"></a>00226                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
-<a name="l00227"></a>00227       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> c(circle ? m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">Circle</a>(time, lat, h) :
-<a name="l00228"></a>00228                              <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>());
-<a name="l00229"></a>00229       std::string s, stra, strb;
-<a name="l00230"></a>00230       <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00231"></a>00231         <span class="keywordflow">try</span> {
-<a name="l00232"></a>00232           std::istringstream str(s);
-<a name="l00233"></a>00233           <span class="keywordflow">if</span> (!(timeset || circle)) {
-<a name="l00234"></a>00234             <span class="keywordflow">if</span> (!(str >> stra))
-<a name="l00235"></a>00235               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00236"></a>00236             time = Utility::fractionalyear<real>(stra);
-<a name="l00237"></a>00237             <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard)
-<a name="l00238"></a>00238               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(time) +
-<a name="l00239"></a>00239                                   <span class="stringliteral">" too far outside allowed range ["</span> +
-<a name="l00240"></a>00240                                   <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
-<a name="l00241"></a>00241                                   <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) +
-<a name="l00242"></a>00242                                   <span class="stringliteral">"]"</span>);
-<a name="l00243"></a>00243             <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>())
-<a name="l00244"></a>00244               std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
-<a name="l00245"></a>00245                         << <span class="stringliteral">" outside allowed range ["</span>
-<a name="l00246"></a>00246                         << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
-<a name="l00247"></a>00247           }
-<a name="l00248"></a>00248           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
-<a name="l00249"></a>00249           <span class="keywordflow">if</span> (circle) {
-<a name="l00250"></a>00250             <span class="keywordflow">if</span> (!(str >> strb))
-<a name="l00251"></a>00251               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00252"></a>00252             <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00253"></a>00253             lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
-<a name="l00254"></a>00254             <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00255"></a>00255               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
-<a name="l00256"></a>00256             <span class="keywordflow">if</span> (lon < -180 || lon > 360)
-<a name="l00257"></a>00257               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
-<a name="l00258"></a>00258           } <span class="keywordflow">else</span> {
-<a name="l00259"></a>00259             <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00260"></a>00260               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00261"></a>00261             <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00262"></a>00262             h = 0;              <span class="comment">// h is optional</span>
-<a name="l00263"></a>00263             <span class="keywordflow">if</span> (str >> h) {
-<a name="l00264"></a>00264               <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard)
-<a name="l00265"></a>00265                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(h/1000) +
-<a name="l00266"></a>00266                                     <span class="stringliteral">"km too far outside allowed range ["</span> +
-<a name="l00267"></a>00267                                     <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
-<a name="l00268"></a>00268                                     <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
-<a name="l00269"></a>00269               <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>())
-<a name="l00270"></a>00270                 std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
-<a name="l00271"></a>00271                           << <span class="stringliteral">"km outside allowed range ["</span>
-<a name="l00272"></a>00272                           << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
-<a name="l00273"></a>00273                           << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
-<a name="l00274"></a>00274             }
-<a name="l00275"></a>00275             <span class="keywordflow">else</span>
-<a name="l00276"></a>00276               str.clear();
-<a name="l00277"></a>00277           }
-<a name="l00278"></a>00278           <span class="keywordflow">if</span> (str >> stra)
-<a name="l00279"></a>00279             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
-<a name="l00280"></a>00280           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> bx, by, bz, bxt, byt, bzt;
-<a name="l00281"></a>00281           <span class="keywordflow">if</span> (circle)
-<a name="l00282"></a>00282             c(lon, bx, by, bz, bxt, byt, bzt);
-<a name="l00283"></a>00283           <span class="keywordflow">else</span>
-<a name="l00284"></a>00284             m(time, lat, lon, h, bx, by, bz, bxt, byt, bzt);
-<a name="l00285"></a>00285           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H, F, D, I, Ht, Ft, Dt, It;
-<a name="l00286"></a>00286           <a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">MagneticModel::FieldComponents</a>(bx, by, bz, bxt, byt, bzt,
-<a name="l00287"></a>00287                                          H, F, D, I, Ht, Ft, Dt, It);
-<a name="l00288"></a>00288 
-<a name="l00289"></a>00289           *output << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(D, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00290"></a>00290                   << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(I, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00291"></a>00291                   << Utility::str<real>(H, prec) << <span class="stringliteral">" "</span>
-<a name="l00292"></a>00292                   << Utility::str<real>(by, prec) << <span class="stringliteral">" "</span>
-<a name="l00293"></a>00293                   << Utility::str<real>(bx, prec) << <span class="stringliteral">" "</span>
-<a name="l00294"></a>00294                   << Utility::str<real>(-bz, prec) << <span class="stringliteral">" "</span>
-<a name="l00295"></a>00295                   << Utility::str<real>(F, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00296"></a>00296           <span class="keywordflow">if</span> (rate)
-<a name="l00297"></a>00297             *output << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(Dt, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00298"></a>00298                     << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(It, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00299"></a>00299                     << Utility::str<real>(Ht, prec) << <span class="stringliteral">" "</span>
-<a name="l00300"></a>00300                     << Utility::str<real>(byt, prec) << <span class="stringliteral">" "</span>
-<a name="l00301"></a>00301                     << Utility::str<real>(bxt, prec) << <span class="stringliteral">" "</span>
-<a name="l00302"></a>00302                     << Utility::str<real>(-bzt, prec) << <span class="stringliteral">" "</span>
-<a name="l00303"></a>00303                     << Utility::str<real>(Ft, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00304"></a>00304         }
-<a name="l00305"></a>00305         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00306"></a>00306           *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00307"></a>00307           retval = 1;
-<a name="l00308"></a>00308         }
-<a name="l00309"></a>00309       }
-<a name="l00310"></a>00310     }
-<a name="l00311"></a>00311     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00312"></a>00312       std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00313"></a>00313       retval = 1;
-<a name="l00314"></a>00314     }
-<a name="l00315"></a>00315     <span class="keywordflow">return</span> retval;
-<a name="l00316"></a>00316   }
-<a name="l00317"></a>00317   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00318"></a>00318     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00319"></a>00319     <span class="keywordflow">return</span> 1;
-<a name="l00320"></a>00320   }
-<a name="l00321"></a>00321   <span class="keywordflow">catch</span> (...) {
-<a name="l00322"></a>00322     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00323"></a>00323     <span class="keywordflow">return</span> 1;
-<a name="l00324"></a>00324   }
-<a name="l00325"></a>00325 }
+<a name="l00184"></a>00184     std::ofstream outfile;
+<a name="l00185"></a>00185     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00186"></a>00186     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00187"></a>00187       outfile.open(ofile.c_str());
+<a name="l00188"></a>00188       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00189"></a>00189         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00190"></a>00190         <span class="keywordflow">return</span> 1;
+<a name="l00191"></a>00191       }
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195     tguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), tguard);
+<a name="l00196"></a>00196     hguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), hguard);
+<a name="l00197"></a>00197     prec = std::min(10, std::max(0, prec));
+<a name="l00198"></a>00198     <span class="keywordtype">int</span> retval = 0;
+<a name="l00199"></a>00199     <span class="keywordflow">try</span> {
+<a name="l00200"></a>00200       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> m(model, dir);
+<a name="l00201"></a>00201       <span class="keywordflow">if</span> ((timeset || circle)
+<a name="l00202"></a>00202           && (!Math::isfinite<real>(time) ||
+<a name="l00203"></a>00203               time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard ||
+<a name="l00204"></a>00204               time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard))
+<a name="l00205"></a>00205         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(time) +
+<a name="l00206"></a>00206                             <span class="stringliteral">" too far outside allowed range ["</span> +
+<a name="l00207"></a>00207                             <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
+<a name="l00208"></a>00208                             <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) + <span class="stringliteral">"]"</span>);
+<a name="l00209"></a>00209       <span class="keywordflow">if</span> (circle
+<a name="l00210"></a>00210           && (!Math::isfinite<real>(h) ||
+<a name="l00211"></a>00211               h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard ||
+<a name="l00212"></a>00212               h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard))
+<a name="l00213"></a>00213         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(h/1000) +
+<a name="l00214"></a>00214                             <span class="stringliteral">"km too far outside allowed range ["</span> +
+<a name="l00215"></a>00215                             <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
+<a name="l00216"></a>00216                             <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
+<a name="l00217"></a>00217       <span class="keywordflow">if</span> (verbose) {
+<a name="l00218"></a>00218         std::cerr << <span class="stringliteral">"Magnetic file: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>()      << <span class="stringliteral">"\n"</span>
+<a name="l00219"></a>00219                   << <span class="stringliteral">"Name: "</span>          << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00220"></a>00220                   << <span class="stringliteral">"Description: "</span>   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>()       << <span class="stringliteral">"\n"</span>
+<a name="l00221"></a>00221                   << <span class="stringliteral">"Date & Time: "</span>   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>()          << <span class="stringliteral">"\n"</span>
+<a name="l00222"></a>00222                   << <span class="stringliteral">"Time range: ["</span>
+<a name="l00223"></a>00223                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span>
+<a name="l00224"></a>00224                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>
+<a name="l00225"></a>00225                   << <span class="stringliteral">"Height range: ["</span>
+<a name="l00226"></a>00226                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
+<a name="l00227"></a>00227                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
+<a name="l00228"></a>00228       }
+<a name="l00229"></a>00229       <span class="keywordflow">if</span> ((timeset || circle) && (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()))
+<a name="l00230"></a>00230         std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
+<a name="l00231"></a>00231                   << <span class="stringliteral">" outside allowed range ["</span>
+<a name="l00232"></a>00232                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
+<a name="l00233"></a>00233       <span class="keywordflow">if</span> (circle && (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()))
+<a name="l00234"></a>00234         std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
+<a name="l00235"></a>00235                   << <span class="stringliteral">"km outside allowed range ["</span>
+<a name="l00236"></a>00236                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
+<a name="l00237"></a>00237                   << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
+<a name="l00238"></a>00238       <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> c(circle ? m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">Circle</a>(time, lat, h) :
+<a name="l00239"></a>00239                              <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>());
+<a name="l00240"></a>00240       std::string s, stra, strb;
+<a name="l00241"></a>00241       <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00242"></a>00242         <span class="keywordflow">try</span> {
+<a name="l00243"></a>00243           std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00244"></a>00244           <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00245"></a>00245             std::string::size_type m = s.find(cdelim);
+<a name="l00246"></a>00246             <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00247"></a>00247               eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00248"></a>00248               s = s.substr(0, m);
+<a name="l00249"></a>00249             }
+<a name="l00250"></a>00250           }
+<a name="l00251"></a>00251           std::istringstream str(s);
+<a name="l00252"></a>00252           <span class="keywordflow">if</span> (!(timeset || circle)) {
+<a name="l00253"></a>00253             <span class="keywordflow">if</span> (!(str >> stra))
+<a name="l00254"></a>00254               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00255"></a>00255             time = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fractionalyear<real>(stra);
+<a name="l00256"></a>00256             <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard)
+<a name="l00257"></a>00257               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(time) +
+<a name="l00258"></a>00258                                   <span class="stringliteral">" too far outside allowed range ["</span> +
+<a name="l00259"></a>00259                                   <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
+<a name="l00260"></a>00260                                   <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) +
+<a name="l00261"></a>00261                                   <span class="stringliteral">"]"</span>);
+<a name="l00262"></a>00262             <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>())
+<a name="l00263"></a>00263               std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
+<a name="l00264"></a>00264                         << <span class="stringliteral">" outside allowed range ["</span>
+<a name="l00265"></a>00265                         << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
+<a name="l00266"></a>00266           }
+<a name="l00267"></a>00267           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
+<a name="l00268"></a>00268           <span class="keywordflow">if</span> (circle) {
+<a name="l00269"></a>00269             <span class="keywordflow">if</span> (!(str >> strb))
+<a name="l00270"></a>00270               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00271"></a>00271             <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00272"></a>00272             lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
+<a name="l00273"></a>00273             <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00274"></a>00274               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
+<a name="l00275"></a>00275             <span class="keywordflow">if</span> (lon < -180 || lon > 360)
+<a name="l00276"></a>00276               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
+<a name="l00277"></a>00277           } <span class="keywordflow">else</span> {
+<a name="l00278"></a>00278             <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00279"></a>00279               <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00280"></a>00280             <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00281"></a>00281             h = 0;              <span class="comment">// h is optional</span>
+<a name="l00282"></a>00282             <span class="keywordflow">if</span> (str >> h) {
+<a name="l00283"></a>00283               <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard)
+<a name="l00284"></a>00284                 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(h/1000) +
+<a name="l00285"></a>00285                                     <span class="stringliteral">"km too far outside allowed range ["</span> +
+<a name="l00286"></a>00286                                     <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
+<a name="l00287"></a>00287                                     <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
+<a name="l00288"></a>00288               <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>())
+<a name="l00289"></a>00289                 std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
+<a name="l00290"></a>00290                           << <span class="stringliteral">"km outside allowed range ["</span>
+<a name="l00291"></a>00291                           << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
+<a name="l00292"></a>00292                           << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
+<a name="l00293"></a>00293             }
+<a name="l00294"></a>00294             <span class="keywordflow">else</span>
+<a name="l00295"></a>00295               str.clear();
+<a name="l00296"></a>00296           }
+<a name="l00297"></a>00297           <span class="keywordflow">if</span> (str >> stra)
+<a name="l00298"></a>00298             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
+<a name="l00299"></a>00299           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> bx, by, bz, bxt, byt, bzt;
+<a name="l00300"></a>00300           <span class="keywordflow">if</span> (circle)
+<a name="l00301"></a>00301             c(lon, bx, by, bz, bxt, byt, bzt);
+<a name="l00302"></a>00302           <span class="keywordflow">else</span>
+<a name="l00303"></a>00303             m(time, lat, lon, h, bx, by, bz, bxt, byt, bzt);
+<a name="l00304"></a>00304           <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H, F, D, I, Ht, Ft, Dt, It;
+<a name="l00305"></a>00305           <a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">MagneticModel::FieldComponents</a>(bx, by, bz, bxt, byt, bzt,
+<a name="l00306"></a>00306                                          H, F, D, I, Ht, Ft, Dt, It);
+<a name="l00307"></a>00307 
+<a name="l00308"></a>00308           *output << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(D, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00309"></a>00309                   << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(I, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00310"></a>00310                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(H, prec) << <span class="stringliteral">" "</span>
+<a name="l00311"></a>00311                   << Utility::str<real>(by, prec) << <span class="stringliteral">" "</span>
+<a name="l00312"></a>00312                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(bx, prec) << <span class="stringliteral">" "</span>
+<a name="l00313"></a>00313                   << Utility::str<real>(-bz, prec) << <span class="stringliteral">" "</span>
+<a name="l00314"></a>00314                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(F, prec) << eol;
+<a name="l00315"></a>00315           <span class="keywordflow">if</span> (rate)
+<a name="l00316"></a>00316             *output << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(Dt, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00317"></a>00317                     << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(It, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00318"></a>00318                     << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(Ht, prec) << <span class="stringliteral">" "</span>
+<a name="l00319"></a>00319                     << Utility::str<real>(byt, prec) << <span class="stringliteral">" "</span>
+<a name="l00320"></a>00320                     << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(bxt, prec) << <span class="stringliteral">" "</span>
+<a name="l00321"></a>00321                     << Utility::str<real>(-bzt, prec) << <span class="stringliteral">" "</span>
+<a name="l00322"></a>00322                     << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(Ft, prec) << eol;
+<a name="l00323"></a>00323         }
+<a name="l00324"></a>00324         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00325"></a>00325           *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00326"></a>00326           retval = 1;
+<a name="l00327"></a>00327         }
+<a name="l00328"></a>00328       }
+<a name="l00329"></a>00329     }
+<a name="l00330"></a>00330     <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00331"></a>00331       std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00332"></a>00332       retval = 1;
+<a name="l00333"></a>00333     }
+<a name="l00334"></a>00334     <span class="keywordflow">return</span> retval;
+<a name="l00335"></a>00335   }
+<a name="l00336"></a>00336   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00337"></a>00337     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00338"></a>00338     <span class="keywordflow">return</span> 1;
+<a name="l00339"></a>00339   }
+<a name="l00340"></a>00340   <span class="keywordflow">catch</span> (...) {
+<a name="l00341"></a>00341     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00342"></a>00342     <span class="keywordflow">return</span> 1;
+<a name="l00343"></a>00343   }
+<a name="l00344"></a>00344 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticModel_8cpp.html b/doc/html/MagneticModel_8cpp.html
index 9203884..f8b1572 100644
--- a/doc/html/MagneticModel_8cpp.html
+++ b/doc/html/MagneticModel_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticModel.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -64,13 +79,11 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">GEOGRAPHICLIB_MAGNETICMODEL_CPP</a>   "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">GEOGRAPHICLIB_MAGNETICMODEL_CPP</a>   "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#a45687ef771d809c1c369daea074cc109">GEOGRAPHICLIB_DATA</a>   "/usr/local/share/GeographicLib"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#a302055ff69e445c8103c09913de840ff">MAGNETIC_DEFAULT_NAME</a>   "wmm2010"</td></tr>
 </table>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_CPP   "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_CPP   "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"</td>
         </tr>
       </table>
 </div>
@@ -130,8 +143,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticModel_8cpp_source.html b/doc/html/MagneticModel_8cpp_source.html
index 7722eb3..0f70445 100644
--- a/doc/html/MagneticModel_8cpp_source.html
+++ b/doc/html/MagneticModel_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticModel.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -63,7 +78,7 @@
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00015"></a>00015 
 <a name="l00016"></a><a class="code" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">00016</a> <span class="preprocessor">#define GEOGRAPHICLIB_MAGNETICMODEL_CPP \</span>
-<a name="l00017"></a>00017 <span class="preprocessor">  "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">  "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"</span>
 <a name="l00018"></a>00018 <span class="preprocessor"></span>
 <a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">GEOGRAPHICLIB_MAGNETICMODEL_CPP</a>)
 <a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">GEOGRAPHICLIB_MAGNETICMODEL_HPP</a>)
@@ -134,7 +149,7 @@
 <a name="l00085"></a>00085       <span class="keywordtype">int</span> pos = int(coeffstr.tellg());
 <a name="l00086"></a>00086       coeffstr.seekg(0, ios::end);
 <a name="l00087"></a>00087       <span class="keywordflow">if</span> (pos != coeffstr.tellg())
-<a name="l00088"></a>00088         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in  "</span> + coeff);
+<a name="l00088"></a>00088         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in "</span> + coeff);
 <a name="l00089"></a>00089     }
 <a name="l00090"></a>00090   }
 <a name="l00091"></a>00091 
@@ -148,7 +163,7 @@
 <a name="l00099"></a>00099     getline(metastr, line);
 <a name="l00100"></a>00100     <span class="keywordflow">if</span> (!(line.size() >= 6 && line.substr(0,5) == <span class="stringliteral">"WMMF-"</span>))
 <a name="l00101"></a>00101       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(_filename + <span class="stringliteral">" does not contain WMMF-n signature"</span>);
-<a name="l00102"></a>00102     string::size_type n = line.find_first_of(spaces, 5);
+<a name="l00102"></a>00102     <span class="keywordtype">string</span>::size_type n = line.find_first_of(spaces, 5);
 <a name="l00103"></a>00103     <span class="keywordflow">if</span> (n != string::npos)
 <a name="l00104"></a>00104       n -= 5;
 <a name="l00105"></a>00105     <span class="keywordtype">string</span> version = line.substr(5, n);
@@ -166,7 +181,7 @@
 <a name="l00117"></a>00117       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReleaseDate"</span>)
 <a name="l00118"></a>00118         _date = val;
 <a name="l00119"></a>00119       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Radius"</span>)
-<a name="l00120"></a>00120         _a = Utility::num<real>(val);
+<a name="l00120"></a>00120         _a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
 <a name="l00121"></a>00121       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Type"</span>) {
 <a name="l00122"></a>00122         <span class="keywordflow">if</span> (!(val == <span class="stringliteral">"Linear"</span> || val == <span class="stringliteral">"linear"</span>))
 <a name="l00123"></a>00123           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Only linear models are supported"</span>);
@@ -181,14 +196,14 @@
 <a name="l00132"></a>00132       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"MaxTime"</span>)
 <a name="l00133"></a>00133         _tmax = Utility::num<real>(val);
 <a name="l00134"></a>00134       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"MinHeight"</span>)
-<a name="l00135"></a>00135         _hmin =  Utility::num<real>(val);
+<a name="l00135"></a>00135         _hmin = Utility::num<real>(val);
 <a name="l00136"></a>00136       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"MaxHeight"</span>)
-<a name="l00137"></a>00137         _hmax =  Utility::num<real>(val);
+<a name="l00137"></a>00137         _hmax = Utility::num<real>(val);
 <a name="l00138"></a>00138       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Normalization"</span>) {
 <a name="l00139"></a>00139         <span class="keywordflow">if</span> (val == <span class="stringliteral">"FULL"</span> || val == <span class="stringliteral">"Full"</span> || val == <span class="stringliteral">"full"</span>)
-<a name="l00140"></a>00140           _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">SphericalHarmonic::FULL</a>;
+<a name="l00140"></a>00140           _norm = SphericalHarmonic::FULL;
 <a name="l00141"></a>00141         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val == <span class="stringliteral">"SCHMIDT"</span> || val == <span class="stringliteral">"Schmidt"</span> || val == <span class="stringliteral">"schmidt"</span>)
-<a name="l00142"></a>00142           _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">SphericalHarmonic::SCHMIDT</a>;
+<a name="l00142"></a>00142           _norm = SphericalHarmonic::SCHMIDT;
 <a name="l00143"></a>00143         <span class="keywordflow">else</span>
 <a name="l00144"></a>00144           <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Unknown normalization "</span> + val);
 <a name="l00145"></a>00145       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ByteOrder"</span>) {
@@ -201,7 +216,7 @@
 <a name="l00152"></a>00152       <span class="comment">// else unrecognized keywords are skipped</span>
 <a name="l00153"></a>00153     }
 <a name="l00154"></a>00154     <span class="comment">// Check values</span>
-<a name="l00155"></a>00155     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00155"></a>00155     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00156"></a>00156       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Reference radius must be positive"</span>);
 <a name="l00157"></a>00157     <span class="keywordflow">if</span> (!(_t0 > 0))
 <a name="l00158"></a>00158       <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Epoch time not defined"</span>);
@@ -258,7 +273,7 @@
 <a name="l00209"></a>00209     <span class="keywordtype">int</span> n = max(min(<span class="keywordtype">int</span>(floor(t1 / _dt0)), _Nmodels - 1), 0);
 <a name="l00210"></a>00210     <span class="keywordtype">bool</span> interpolate = n + 1 < _Nmodels;
 <a name="l00211"></a>00211     t1 -= n * _dt0;
-<a name="l00212"></a>00212     real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00212"></a>00212     real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00213"></a>00213     _earth.IntForward(lat, 0, h, X, Y, Z, M);
 <a name="l00214"></a>00214     <span class="comment">// Y = 0, cphi = M[7], sphi = M[8];</span>
 <a name="l00215"></a>00215 
@@ -273,14 +288,14 @@
 <a name="l00224"></a>00224                                       real& H, real& F, real& D, real& I,
 <a name="l00225"></a>00225                                       real& Ht, real& Ft,
 <a name="l00226"></a>00226                                       real& Dt, real& It) <span class="keywordflow">throw</span>() {
-<a name="l00227"></a>00227     H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Bx, By);
-<a name="l00228"></a>00228     Ht = H ? (Bx * Bxt + By * Byt) / H : <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Bxt, Byt);
-<a name="l00229"></a>00229     D = (0 - (H ? atan2(-Bx, By) : atan2(-Bxt, Byt))) / Math::degree<real>();
-<a name="l00230"></a>00230     Dt = (H ? (By * Bxt - Bx * Byt) / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(H) : 0) / Math::degree<real>();
-<a name="l00231"></a>00231     F = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(H, Bz);
-<a name="l00232"></a>00232     Ft = F ? (H * Ht + Bz * Bzt) / F : <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Ht, Bzt);
+<a name="l00227"></a>00227     H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Bx, By);
+<a name="l00228"></a>00228     Ht = H ? (Bx * Bxt + By * Byt) / H : <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Bxt, Byt);
+<a name="l00229"></a>00229     D = (0 - (H ? atan2(-Bx, By) : atan2(-Bxt, Byt))) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00230"></a>00230     Dt = (H ? (By * Bxt - Bx * Byt) / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(H) : 0) / Math::degree<real>();
+<a name="l00231"></a>00231     F = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(H, Bz);
+<a name="l00232"></a>00232     Ft = F ? (H * Ht + Bz * Bzt) / F : <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Ht, Bzt);
 <a name="l00233"></a>00233     I = (F ? atan2(-Bz, H) : atan2(-Bzt, Ht)) / Math::degree<real>();
-<a name="l00234"></a>00234     It = (F ? (Bz * Ht - H * Bzt) / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(F) : 0) / Math::degree<real>();
+<a name="l00234"></a>00234     It = (F ? (Bz * Ht - H * Bzt) / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(F) : 0) / Math::degree<real>();
 <a name="l00235"></a>00235   }
 <a name="l00236"></a>00236 
 <a name="l00237"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">00237</a>   std::string <a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">MagneticModel::DefaultMagneticPath</a>() {
@@ -307,8 +322,13 @@
 <a name="l00258"></a>00258 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticModel_8hpp.html b/doc/html/MagneticModel_8hpp.html
index 9fd0f3b..9e8efc4 100644
--- a/doc/html/MagneticModel_8hpp.html
+++ b/doc/html/MagneticModel_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticModel.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,13 +86,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">GEOGRAPHICLIB_MAGNETICMODEL_HPP</a>   "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">GEOGRAPHICLIB_MAGNETICMODEL_HPP</a>   "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
@@ -90,7 +103,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_HPP   "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_HPP   "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"</td>
         </tr>
       </table>
 </div>
@@ -101,8 +114,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/MagneticModel_8hpp_source.html b/doc/html/MagneticModel_8hpp_source.html
index 2e5f8f9..9c86121 100644
--- a/doc/html/MagneticModel_8hpp_source.html
+++ b/doc/html/MagneticModel_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: MagneticModel.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MAGNETICMODEL_HPP)</span>
 <a name="l00011"></a><a class="code" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MAGNETICMODEL_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <sstream></span>
@@ -106,291 +121,299 @@
 <a name="l00056"></a>00056 <span class="comment">   *</span>
 <a name="l00057"></a>00057 <span class="comment">   * Example of use:</span>
 <a name="l00058"></a>00058 <span class="comment">   * \include example-MagneticModel.cpp</span>
-<a name="l00059"></a>00059 <span class="comment">   **********************************************************************/</span>
-<a name="l00060"></a>00060 
-<a name="l00061"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html">00061</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> {
-<a name="l00062"></a>00062   <span class="keyword">private</span>:
-<a name="l00063"></a>00063     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00064"></a>00064     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
-<a name="l00065"></a>00065     std::string _name, _dir, _description, _date, _filename, _id;
-<a name="l00066"></a>00066     real _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax;
-<a name="l00067"></a>00067     <span class="keywordtype">int</span> _Nmodels;
-<a name="l00068"></a>00068     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eb">SphericalHarmonic::normalization</a> _norm;
-<a name="l00069"></a>00069     <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> _earth;
-<a name="l00070"></a>00070     std::vector< std::vector<real> > _G;
-<a name="l00071"></a>00071     std::vector< std::vector<real> > _H;
-<a name="l00072"></a>00072     std::vector<SphericalHarmonic> _harm;
-<a name="l00073"></a>00073     <span class="keywordtype">void</span> Field(real t, real lat, real lon, real h, <span class="keywordtype">bool</span> diffp,
-<a name="l00074"></a>00074                real& Bx, real& By, real& Bz,
-<a name="l00075"></a>00075                real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00076"></a>00076     <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
-<a name="l00077"></a>00077     <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>&); <span class="comment">// copy constructor not allowed</span>
-<a name="l00078"></a>00078     <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>& operator=(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>&); <span class="comment">// nor copy assignment</span>
-<a name="l00079"></a>00079   <span class="keyword">public</span>:
-<a name="l00080"></a>00080 <span class="comment"></span>
-<a name="l00081"></a>00081 <span class="comment">    /** \name Setting up the magnetic model</span>
-<a name="l00082"></a>00082 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00083"></a>00083 <span class="comment">    ///@{</span>
-<a name="l00084"></a>00084 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00085"></a>00085 <span class="comment">     * Construct a magnetic model.</span>
-<a name="l00086"></a>00086 <span class="comment">     *</span>
-<a name="l00087"></a>00087 <span class="comment">     * @param[in] name the name of the model.</span>
-<a name="l00088"></a>00088 <span class="comment">     * @param[in] path (optional) directory for data file.</span>
-<a name="l00089"></a>00089 <span class="comment">     * @param[in] earth (optional) Geocentric object for converting</span>
-<a name="l00090"></a>00090 <span class="comment">     *   coordinates; default Geocentric::WGS84.</span>
-<a name="l00091"></a>00091 <span class="comment">     *</span>
-<a name="l00092"></a>00092 <span class="comment">     * A filename is formed by appending ".wmm" (World Magnetic Model) to the</span>
-<a name="l00093"></a>00093 <span class="comment">     * name.  If \e path is specified (and is non-empty), then the file is</span>
-<a name="l00094"></a>00094 <span class="comment">     * loaded from directory, \e path.  Otherwise the path is given by the</span>
-<a name="l00095"></a>00095 <span class="comment">     * DefaultMagneticPath().  This may throw an exception because the file</span>
-<a name="l00096"></a>00096 <span class="comment">     * does not exist, is unreadable, or is corrupt.</span>
-<a name="l00097"></a>00097 <span class="comment">     *</span>
-<a name="l00098"></a>00098 <span class="comment">     * This file contains the metadata which specifies the properties of the</span>
-<a name="l00099"></a>00099 <span class="comment">     * model.  The coefficients for the spherical harmonic sums are obtained</span>
-<a name="l00100"></a>00100 <span class="comment">     * from a file obtained by appending ".cof" to metadata file (so the</span>
-<a name="l00101"></a>00101 <span class="comment">     * filename ends in ".wwm.cof").</span>
-<a name="l00102"></a>00102 <span class="comment">     *</span>
-<a name="l00103"></a>00103 <span class="comment">     * The model is not tied to a particular ellipsoidal model of the earth.</span>
-<a name="l00104"></a>00104 <span class="comment">     * The final earth argument to the constructor specify an ellipsoid to</span>
-<a name="l00105"></a>00105 <span class="comment">     * allow geodetic coordinates to the transformed into the spherical</span>
-<a name="l00106"></a>00106 <span class="comment">     * coordinates used in the spherical harmonic sum.</span>
-<a name="l00107"></a>00107 <span class="comment">     **********************************************************************/</span>
-<a name="l00108"></a>00108     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>(<span class="keyword">const</span> std::string& name,
-<a name="l00109"></a>00109                            <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
-<a name="l00110"></a>00110                            <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>);<span class="comment"></span>
-<a name="l00111"></a>00111 <span class="comment">    ///@}</span>
-<a name="l00112"></a>00112 <span class="comment"></span><span class="comment"></span>
-<a name="l00113"></a>00113 <span class="comment">    /** \name Compute the magnetic field</span>
-<a name="l00114"></a>00114 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment">    ///@{</span>
-<a name="l00116"></a>00116 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00117"></a>00117 <span class="comment">     * Evaluate the components of the geomagnetic field.</span>
-<a name="l00118"></a>00118 <span class="comment">     *</span>
-<a name="l00119"></a>00119 <span class="comment">     * @param[in] t the time (years).</span>
-<a name="l00120"></a>00120 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00121"></a>00121 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00122"></a>00122 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00123"></a>00123 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00124"></a>00124 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00125"></a>00125 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00126"></a>00126 <span class="comment">     *   (nanotesla).</span>
-<a name="l00127"></a>00127 <span class="comment">     **********************************************************************/</span>
-<a name="l00128"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">00128</a>     <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
-<a name="l00129"></a>00129                     real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00130"></a>00130       real dummy;
-<a name="l00131"></a>00131       Field(t, lat, lon, h, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
-<a name="l00132"></a>00132     }
-<a name="l00133"></a>00133 <span class="comment"></span>
-<a name="l00134"></a>00134 <span class="comment">    /**</span>
-<a name="l00135"></a>00135 <span class="comment">     * Evaluate the components of the geomagnetic field and their time</span>
-<a name="l00136"></a>00136 <span class="comment">     * derivatives</span>
-<a name="l00137"></a>00137 <span class="comment">     *</span>
-<a name="l00138"></a>00138 <span class="comment">     * @param[in] t the time (years).</span>
-<a name="l00139"></a>00139 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00140"></a>00140 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00141"></a>00141 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00142"></a>00142 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00143"></a>00143 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00144"></a>00144 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00145"></a>00145 <span class="comment">     *   (nanotesla).</span>
-<a name="l00146"></a>00146 <span class="comment">     * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
-<a name="l00147"></a>00147 <span class="comment">     * @param[out] Byt the rate of change of \e By (nT/yr).</span>
-<a name="l00148"></a>00148 <span class="comment">     * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
-<a name="l00149"></a>00149 <span class="comment">     **********************************************************************/</span>
-<a name="l00150"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a11fed1ca7a45947f6f43f6ba7897250f">00150</a>     <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
-<a name="l00151"></a>00151                     real& Bx, real& By, real& Bz,
-<a name="l00152"></a>00152                     real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00153"></a>00153       Field(t, lat, lon, h, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
-<a name="l00154"></a>00154     }
-<a name="l00155"></a>00155 <span class="comment"></span>
-<a name="l00156"></a>00156 <span class="comment">    /**</span>
-<a name="l00157"></a>00157 <span class="comment">     * Create a MagneticCircle object to allow the geomagnetic field at many</span>
-<a name="l00158"></a>00158 <span class="comment">     * points with constant \e lat, \e h, and \e t and varying \e lon to be</span>
-<a name="l00159"></a>00159 <span class="comment">     * computed efficiently.</span>
-<a name="l00160"></a>00160 <span class="comment">     *</span>
-<a name="l00161"></a>00161 <span class="comment">     * @param[in] t the time (years).</span>
-<a name="l00162"></a>00162 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00163"></a>00163 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00164"></a>00164 <span class="comment">     * @return a MagneticCircle object whose MagneticCircle::operator()(real</span>
-<a name="l00165"></a>00165 <span class="comment">     *   lon) member function computes the field at particular values of \e</span>
-<a name="l00166"></a>00166 <span class="comment">     *   lon.</span>
-<a name="l00167"></a>00167 <span class="comment">     *</span>
-<a name="l00168"></a>00168 <span class="comment">     * If the field at several points on a circle of latitude need to be</span>
-<a name="l00169"></a>00169 <span class="comment">     * calculated then creating a MagneticCircle and using its member functions</span>
-<a name="l00170"></a>00170 <span class="comment">     * will be substantially faster, especially for high-degree models.</span>
-<a name="l00171"></a>00171 <span class="comment">     **********************************************************************/</span>
-<a name="l00172"></a>00172     <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h) <span class="keyword">const</span>;
-<a name="l00173"></a>00173 <span class="comment"></span>
-<a name="l00174"></a>00174 <span class="comment">    /**</span>
-<a name="l00175"></a>00175 <span class="comment">     * Compute various quantities dependent on the magnetic field.</span>
-<a name="l00176"></a>00176 <span class="comment">     *</span>
-<a name="l00177"></a>00177 <span class="comment">     * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
-<a name="l00178"></a>00178 <span class="comment">     * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
-<a name="l00179"></a>00179 <span class="comment">     * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
-<a name="l00180"></a>00180 <span class="comment">     *   field (nT).</span>
-<a name="l00181"></a>00181 <span class="comment">     * @param[out] H the horizontal magnetic field (nT).</span>
-<a name="l00182"></a>00182 <span class="comment">     * @param[out] F the total magnetic field (nT).</span>
-<a name="l00183"></a>00183 <span class="comment">     * @param[out] D the declination of the field (degrees east of north).</span>
-<a name="l00184"></a>00184 <span class="comment">     * @param[out] I the inclination of the field (degrees down from</span>
-<a name="l00185"></a>00185 <span class="comment">     *   horizontal).</span>
-<a name="l00186"></a>00186 <span class="comment">     **********************************************************************/</span>
-<a name="l00187"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">00187</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(real Bx, real By, real Bz,
-<a name="l00188"></a>00188                                 real& H, real& F, real& D, real& I) <span class="keywordflow">throw</span>() {
-<a name="l00189"></a>00189       real Ht, Ft, Dt, It;
-<a name="l00190"></a>00190       FieldComponents(Bx, By, Bz, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
-<a name="l00191"></a>00191                       H, F, D, I, Ht, Ft, Dt, It);
-<a name="l00192"></a>00192     }
-<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment">    /**</span>
-<a name="l00195"></a>00195 <span class="comment">     * Compute various quantities dependent on the magnetic field and its rate</span>
-<a name="l00196"></a>00196 <span class="comment">     * of change.</span>
-<a name="l00197"></a>00197 <span class="comment">     *</span>
-<a name="l00198"></a>00198 <span class="comment">     * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
-<a name="l00199"></a>00199 <span class="comment">     * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
-<a name="l00200"></a>00200 <span class="comment">     * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
-<a name="l00201"></a>00201 <span class="comment">     *   field (nT).</span>
-<a name="l00202"></a>00202 <span class="comment">     * @param[in] Bxt the rate of change of \e Bx (nT/yr).</span>
-<a name="l00203"></a>00203 <span class="comment">     * @param[in] Byt the rate of change of \e By (nT/yr).</span>
-<a name="l00204"></a>00204 <span class="comment">     * @param[in] Bzt the rate of change of \e Bz (nT/yr).</span>
-<a name="l00205"></a>00205 <span class="comment">     * @param[out] H the horizontal magnetic field (nT).</span>
-<a name="l00206"></a>00206 <span class="comment">     * @param[out] F the total magnetic field (nT).</span>
-<a name="l00207"></a>00207 <span class="comment">     * @param[out] D the declination of the field (degrees east of north).</span>
-<a name="l00208"></a>00208 <span class="comment">     * @param[out] I the inclination of the field (degrees down from</span>
-<a name="l00209"></a>00209 <span class="comment">     *   horizontal).</span>
-<a name="l00210"></a>00210 <span class="comment">     * @param[out] Ht the rate of change of \e H (nT/yr).</span>
-<a name="l00211"></a>00211 <span class="comment">     * @param[out] Ft the rate of change of \e F (nT/yr).</span>
-<a name="l00212"></a>00212 <span class="comment">     * @param[out] Dt the rate of change of \e D (degrees/yr).</span>
-<a name="l00213"></a>00213 <span class="comment">     * @param[out] It the rate of change of \e I (degrees/yr).</span>
-<a name="l00214"></a>00214 <span class="comment">     **********************************************************************/</span>
-<a name="l00215"></a>00215     <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bz,
-<a name="l00216"></a>00216                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bzt,
-<a name="l00217"></a>00217                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& H, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& F, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& D, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& I,
-<a name="l00218"></a>00218                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ht, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ft, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& It) <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment">    ///@}</span>
-<a name="l00220"></a>00220 <span class="comment"></span><span class="comment"></span>
-<a name="l00221"></a>00221 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00222"></a>00222 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00223"></a>00223 <span class="comment">    ///@{</span>
-<a name="l00224"></a>00224 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00225"></a>00225 <span class="comment">     * @return the description of the magnetic model, if available, from the</span>
-<a name="l00226"></a>00226 <span class="comment">     *   Description file in the data file; if absent, return "NONE".</span>
-<a name="l00227"></a>00227 <span class="comment">     **********************************************************************/</span>
-<a name="l00228"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">00228</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
-<a name="l00229"></a>00229 <span class="comment"></span>
-<a name="l00230"></a>00230 <span class="comment">    /**</span>
-<a name="l00231"></a>00231 <span class="comment">     * @return date of the model, if available, from the ReleaseDate field in</span>
-<a name="l00232"></a>00232 <span class="comment">     *   the data file; if absent, return "UNKNOWN".</span>
-<a name="l00233"></a>00233 <span class="comment">     **********************************************************************/</span>
-<a name="l00234"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">00234</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
-<a name="l00235"></a>00235 <span class="comment"></span>
-<a name="l00236"></a>00236 <span class="comment">    /**</span>
-<a name="l00237"></a>00237 <span class="comment">     * @return full file name used to load the magnetic model.</span>
-<a name="l00238"></a>00238 <span class="comment">     **********************************************************************/</span>
-<a name="l00239"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">00239</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
-<a name="l00240"></a>00240 <span class="comment"></span>
-<a name="l00241"></a>00241 <span class="comment">    /**</span>
-<a name="l00242"></a>00242 <span class="comment">     * @return "name" used to load the magnetic model (from the first argument</span>
-<a name="l00243"></a>00243 <span class="comment">     *   of the constructor, but this may be overridden by the model file).</span>
-<a name="l00244"></a>00244 <span class="comment">     **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">00245</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
-<a name="l00246"></a>00246 <span class="comment"></span>
-<a name="l00247"></a>00247 <span class="comment">    /**</span>
-<a name="l00248"></a>00248 <span class="comment">     * @return directory used to load the magnetic model.</span>
-<a name="l00249"></a>00249 <span class="comment">     **********************************************************************/</span>
-<a name="l00250"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">00250</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">MagneticModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
-<a name="l00251"></a>00251 <span class="comment"></span>
-<a name="l00252"></a>00252 <span class="comment">    /**</span>
-<a name="l00253"></a>00253 <span class="comment">     * @return the minimum height above the ellipsoid (in meters) for which</span>
-<a name="l00254"></a>00254 <span class="comment">     *   this MagneticModel should be used.</span>
-<a name="l00255"></a>00255 <span class="comment">     *</span>
-<a name="l00256"></a>00256 <span class="comment">     * Because the model will typically provide useful results</span>
-<a name="l00257"></a>00257 <span class="comment">     * slightly outside the range of allowed heights, no check of \e t</span>
-<a name="l00258"></a>00258 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
-<a name="l00259"></a>00259 <span class="comment">     * MagneticModel::Circle.</span>
-<a name="l00260"></a>00260 <span class="comment">     **********************************************************************/</span>
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">00261</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmin; }
-<a name="l00262"></a>00262 <span class="comment"></span>
-<a name="l00263"></a>00263 <span class="comment">    /**</span>
-<a name="l00264"></a>00264 <span class="comment">     * @return the maximum height above the ellipsoid (in meters) for which</span>
-<a name="l00265"></a>00265 <span class="comment">     *   this MagneticModel should be used.</span>
-<a name="l00266"></a>00266 <span class="comment">     *</span>
-<a name="l00267"></a>00267 <span class="comment">     * Because the model will typically provide useful results</span>
-<a name="l00268"></a>00268 <span class="comment">     * slightly outside the range of allowed heights, no check of \e t</span>
-<a name="l00269"></a>00269 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
-<a name="l00270"></a>00270 <span class="comment">     * MagneticModel::Circle.</span>
-<a name="l00271"></a>00271 <span class="comment">     **********************************************************************/</span>
-<a name="l00272"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">00272</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmax; }
-<a name="l00273"></a>00273 <span class="comment"></span>
-<a name="l00274"></a>00274 <span class="comment">    /**</span>
-<a name="l00275"></a>00275 <span class="comment">     * @return the minimum time (in years) for which this MagneticModel should</span>
-<a name="l00276"></a>00276 <span class="comment">     *   be used.</span>
-<a name="l00277"></a>00277 <span class="comment">     *</span>
-<a name="l00278"></a>00278 <span class="comment">     * Because the model will typically provide useful results</span>
-<a name="l00279"></a>00279 <span class="comment">     * slightly outside the range of allowed times, no check of \e t</span>
-<a name="l00280"></a>00280 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
-<a name="l00281"></a>00281 <span class="comment">     * MagneticModel::Circle.</span>
-<a name="l00282"></a>00282 <span class="comment">     **********************************************************************/</span>
-<a name="l00283"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">00283</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmin; }
-<a name="l00284"></a>00284 <span class="comment"></span>
-<a name="l00285"></a>00285 <span class="comment">    /**</span>
-<a name="l00286"></a>00286 <span class="comment">     * @return the maximum time (in years) for which this MagneticModel should</span>
-<a name="l00287"></a>00287 <span class="comment">     *   be used.</span>
-<a name="l00288"></a>00288 <span class="comment">     *</span>
-<a name="l00289"></a>00289 <span class="comment">     * Because the model will typically provide useful results</span>
-<a name="l00290"></a>00290 <span class="comment">     * slightly outside the range of allowed times, no check of \e t</span>
-<a name="l00291"></a>00291 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
-<a name="l00292"></a>00292 <span class="comment">     * MagneticModel::Circle.</span>
-<a name="l00293"></a>00293 <span class="comment">     **********************************************************************/</span>
-<a name="l00294"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">00294</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmax; }
-<a name="l00295"></a>00295 <span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment">    /**</span>
-<a name="l00297"></a>00297 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00298"></a>00298 <span class="comment">     *   the value of \e a inherited from the Geocentric object used in the</span>
-<a name="l00299"></a>00299 <span class="comment">     *   constructor.</span>
-<a name="l00300"></a>00300 <span class="comment">     **********************************************************************/</span>
-<a name="l00301"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">00301</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00302"></a>00302 <span class="comment"></span>
-<a name="l00303"></a>00303 <span class="comment">    /**</span>
-<a name="l00304"></a>00304 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00305"></a>00305 <span class="comment">     *   inherited from the Geocentric object used in the constructor.</span>
-<a name="l00306"></a>00306 <span class="comment">     **********************************************************************/</span>
-<a name="l00307"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">00307</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment"></span>
-<a name="l00308"></a>00308 <span class="comment">    ///@}</span>
-<a name="l00309"></a>00309 <span class="comment"></span><span class="comment"></span>
-<a name="l00310"></a>00310 <span class="comment">    /**</span>
-<a name="l00311"></a>00311 <span class="comment">     * @return the default path for magnetic model data files.</span>
-<a name="l00312"></a>00312 <span class="comment">     *</span>
-<a name="l00313"></a>00313 <span class="comment">     * This is the value of the environment variable MAGNETIC_PATH, if set;</span>
-<a name="l00314"></a>00314 <span class="comment">     * otherwise, it is $GEOGRAPHICLIB_DATA/magnetic if the environment</span>
-<a name="l00315"></a>00315 <span class="comment">     * variable GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time</span>
-<a name="l00316"></a>00316 <span class="comment">     * default (/usr/local/share/GeographicLib/magnetic on non-Windows systems</span>
-<a name="l00317"></a>00317 <span class="comment">     * and C:/Documents and Settings/All Users/Application</span>
-<a name="l00318"></a>00318 <span class="comment">     * Data/GeographicLib/magnetic on Windows systems).</span>
-<a name="l00319"></a>00319 <span class="comment">     **********************************************************************/</span>
-<a name="l00320"></a>00320     <span class="keyword">static</span> std::string DefaultMagneticPath();
-<a name="l00321"></a>00321 <span class="comment"></span>
-<a name="l00322"></a>00322 <span class="comment">    /**</span>
-<a name="l00323"></a>00323 <span class="comment">     * @return the default name for the magnetic model.</span>
-<a name="l00324"></a>00324 <span class="comment">     *</span>
-<a name="l00325"></a>00325 <span class="comment">     * This is the value of the environment variable MAGNETIC_NAME, if set,</span>
-<a name="l00326"></a>00326 <span class="comment">     * otherwise, it is "wmm2010".  The MagneticModel class does not use this</span>
-<a name="l00327"></a>00327 <span class="comment">     * function; it is just provided as a convenience for a calling program</span>
-<a name="l00328"></a>00328 <span class="comment">     * when constructing a MagneticModel object.</span>
-<a name="l00329"></a>00329 <span class="comment">     **********************************************************************/</span>
-<a name="l00330"></a>00330     <span class="keyword">static</span> std::string DefaultMagneticName();
-<a name="l00331"></a>00331   };
-<a name="l00332"></a>00332 
-<a name="l00333"></a>00333 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00334"></a>00334 
-<a name="l00335"></a>00335 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00336"></a>00336 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00337"></a>00337 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00338"></a>00338 <span class="preprocessor"></span>
-<a name="l00339"></a>00339 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MAGNETICMODEL_HPP</span>
+<a name="l00059"></a>00059 <span class="comment">   *</span>
+<a name="l00060"></a>00060 <span class="comment">   * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility</span>
+<a name="l00061"></a>00061 <span class="comment">   * providing access to the functionality of MagneticModel and MagneticCircle.</span>
+<a name="l00062"></a>00062 <span class="comment">   **********************************************************************/</span>
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> MagneticModel {
+<a name="l00065"></a>00065   <span class="keyword">private</span>:
+<a name="l00066"></a>00066     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
+<a name="l00068"></a>00068     std::string _name, _dir, _description, _date, _filename, _id;
+<a name="l00069"></a>00069     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax;
+<a name="l00070"></a>00070     <span class="keywordtype">int</span> _Nmodels;
+<a name="l00071"></a>00071     SphericalHarmonic::normalization _norm;
+<a name="l00072"></a>00072     Geocentric _earth;
+<a name="l00073"></a>00073     std::vector< std::vector<real> > _G;
+<a name="l00074"></a>00074     std::vector< std::vector<real> > _H;
+<a name="l00075"></a>00075     std::vector<SphericalHarmonic> _harm;
+<a name="l00076"></a>00076     <span class="keywordtype">void</span> Field(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <span class="keywordtype">bool</span> diffp,
+<a name="l00077"></a>00077                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bz,
+<a name="l00078"></a>00078                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00079"></a>00079     <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
+<a name="l00080"></a>00080     MagneticModel(<span class="keyword">const</span> MagneticModel&); <span class="comment">// copy constructor not allowed</span>
+<a name="l00081"></a>00081     MagneticModel& operator=(<span class="keyword">const</span> MagneticModel&); <span class="comment">// nor copy assignment</span>
+<a name="l00082"></a>00082   <span class="keyword">public</span>:
+<a name="l00083"></a>00083 <span class="comment"></span>
+<a name="l00084"></a>00084 <span class="comment">    /** \name Setting up the magnetic model</span>
+<a name="l00085"></a>00085 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00086"></a>00086 <span class="comment">    ///@{</span>
+<a name="l00087"></a>00087 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00088"></a>00088 <span class="comment">     * Construct a magnetic model.</span>
+<a name="l00089"></a>00089 <span class="comment">     *</span>
+<a name="l00090"></a>00090 <span class="comment">     * @param[in] name the name of the model.</span>
+<a name="l00091"></a>00091 <span class="comment">     * @param[in] path (optional) directory for data file.</span>
+<a name="l00092"></a>00092 <span class="comment">     * @param[in] earth (optional) Geocentric object for converting</span>
+<a name="l00093"></a>00093 <span class="comment">     *   coordinates; default Geocentric::WGS84.</span>
+<a name="l00094"></a>00094 <span class="comment">     *</span>
+<a name="l00095"></a>00095 <span class="comment">     * A filename is formed by appending ".wmm" (World Magnetic Model) to the</span>
+<a name="l00096"></a>00096 <span class="comment">     * name.  If \e path is specified (and is non-empty), then the file is</span>
+<a name="l00097"></a>00097 <span class="comment">     * loaded from directory, \e path.  Otherwise the path is given by the</span>
+<a name="l00098"></a>00098 <span class="comment">     * DefaultMagneticPath().  This may throw an exception because the file</span>
+<a name="l00099"></a>00099 <span class="comment">     * does not exist, is unreadable, or is corrupt.</span>
+<a name="l00100"></a>00100 <span class="comment">     *</span>
+<a name="l00101"></a>00101 <span class="comment">     * This file contains the metadata which specifies the properties of the</span>
+<a name="l00102"></a>00102 <span class="comment">     * model.  The coefficients for the spherical harmonic sums are obtained</span>
+<a name="l00103"></a>00103 <span class="comment">     * from a file obtained by appending ".cof" to metadata file (so the</span>
+<a name="l00104"></a>00104 <span class="comment">     * filename ends in ".wwm.cof").</span>
+<a name="l00105"></a>00105 <span class="comment">     *</span>
+<a name="l00106"></a>00106 <span class="comment">     * The model is not tied to a particular ellipsoidal model of the earth.</span>
+<a name="l00107"></a>00107 <span class="comment">     * The final earth argument to the constructor specify an ellipsoid to</span>
+<a name="l00108"></a>00108 <span class="comment">     * allow geodetic coordinates to the transformed into the spherical</span>
+<a name="l00109"></a>00109 <span class="comment">     * coordinates used in the spherical harmonic sum.</span>
+<a name="l00110"></a>00110 <span class="comment">     **********************************************************************/</span>
+<a name="l00111"></a>00111     <span class="keyword">explicit</span> MagneticModel(<span class="keyword">const</span> std::string& name,
+<a name="l00112"></a>00112                            <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
+<a name="l00113"></a>00113                            <span class="keyword">const</span> Geocentric& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>);<span class="comment"></span>
+<a name="l00114"></a>00114 <span class="comment">    ///@}</span>
+<a name="l00115"></a>00115 <span class="comment"></span><span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">    /** \name Compute the magnetic field</span>
+<a name="l00117"></a>00117 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment">    ///@{</span>
+<a name="l00119"></a>00119 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00120"></a>00120 <span class="comment">     * Evaluate the components of the geomagnetic field.</span>
+<a name="l00121"></a>00121 <span class="comment">     *</span>
+<a name="l00122"></a>00122 <span class="comment">     * @param[in] t the time (years).</span>
+<a name="l00123"></a>00123 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00124"></a>00124 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00125"></a>00125 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00126"></a>00126 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00127"></a>00127 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00128"></a>00128 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00129"></a>00129 <span class="comment">     *   (nanotesla).</span>
+<a name="l00130"></a>00130 <span class="comment">     **********************************************************************/</span>
+<a name="l00131"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">00131</a>     <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
+<a name="l00132"></a>00132                     real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00133"></a>00133       real dummy;
+<a name="l00134"></a>00134       Field(t, lat, lon, h, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
+<a name="l00135"></a>00135     }
+<a name="l00136"></a>00136 <span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment">    /**</span>
+<a name="l00138"></a>00138 <span class="comment">     * Evaluate the components of the geomagnetic field and their time</span>
+<a name="l00139"></a>00139 <span class="comment">     * derivatives</span>
+<a name="l00140"></a>00140 <span class="comment">     *</span>
+<a name="l00141"></a>00141 <span class="comment">     * @param[in] t the time (years).</span>
+<a name="l00142"></a>00142 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00143"></a>00143 <span class="comment">     * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00144"></a>00144 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00145"></a>00145 <span class="comment">     * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00146"></a>00146 <span class="comment">     * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00147"></a>00147 <span class="comment">     * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00148"></a>00148 <span class="comment">     *   (nanotesla).</span>
+<a name="l00149"></a>00149 <span class="comment">     * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
+<a name="l00150"></a>00150 <span class="comment">     * @param[out] Byt the rate of change of \e By (nT/yr).</span>
+<a name="l00151"></a>00151 <span class="comment">     * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
+<a name="l00152"></a>00152 <span class="comment">     **********************************************************************/</span>
+<a name="l00153"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a11fed1ca7a45947f6f43f6ba7897250f">00153</a>     <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
+<a name="l00154"></a>00154                     real& Bx, real& By, real& Bz,
+<a name="l00155"></a>00155                     real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00156"></a>00156       Field(t, lat, lon, h, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
+<a name="l00157"></a>00157     }
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment">    /**</span>
+<a name="l00160"></a>00160 <span class="comment">     * Create a MagneticCircle object to allow the geomagnetic field at many</span>
+<a name="l00161"></a>00161 <span class="comment">     * points with constant \e lat, \e h, and \e t and varying \e lon to be</span>
+<a name="l00162"></a>00162 <span class="comment">     * computed efficiently.</span>
+<a name="l00163"></a>00163 <span class="comment">     *</span>
+<a name="l00164"></a>00164 <span class="comment">     * @param[in] t the time (years).</span>
+<a name="l00165"></a>00165 <span class="comment">     * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00166"></a>00166 <span class="comment">     * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00167"></a>00167 <span class="comment">     * @return a MagneticCircle object whose MagneticCircle::operator()(real</span>
+<a name="l00168"></a>00168 <span class="comment">     *   lon) member function computes the field at particular values of \e</span>
+<a name="l00169"></a>00169 <span class="comment">     *   lon.</span>
+<a name="l00170"></a>00170 <span class="comment">     *</span>
+<a name="l00171"></a>00171 <span class="comment">     * If the field at several points on a circle of latitude need to be</span>
+<a name="l00172"></a>00172 <span class="comment">     * calculated then creating a MagneticCircle and using its member functions</span>
+<a name="l00173"></a>00173 <span class="comment">     * will be substantially faster, especially for high-degree models.</span>
+<a name="l00174"></a>00174 <span class="comment">     **********************************************************************/</span>
+<a name="l00175"></a>00175     <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h) <span class="keyword">const</span>;
+<a name="l00176"></a>00176 <span class="comment"></span>
+<a name="l00177"></a>00177 <span class="comment">    /**</span>
+<a name="l00178"></a>00178 <span class="comment">     * Compute various quantities dependent on the magnetic field.</span>
+<a name="l00179"></a>00179 <span class="comment">     *</span>
+<a name="l00180"></a>00180 <span class="comment">     * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
+<a name="l00181"></a>00181 <span class="comment">     * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
+<a name="l00182"></a>00182 <span class="comment">     * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
+<a name="l00183"></a>00183 <span class="comment">     *   field (nT).</span>
+<a name="l00184"></a>00184 <span class="comment">     * @param[out] H the horizontal magnetic field (nT).</span>
+<a name="l00185"></a>00185 <span class="comment">     * @param[out] F the total magnetic field (nT).</span>
+<a name="l00186"></a>00186 <span class="comment">     * @param[out] D the declination of the field (degrees east of north).</span>
+<a name="l00187"></a>00187 <span class="comment">     * @param[out] I the inclination of the field (degrees down from</span>
+<a name="l00188"></a>00188 <span class="comment">     *   horizontal).</span>
+<a name="l00189"></a>00189 <span class="comment">     **********************************************************************/</span>
+<a name="l00190"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">00190</a>     <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(real Bx, real By, real Bz,
+<a name="l00191"></a>00191                                 real& H, real& F, real& D, real& I) <span class="keywordflow">throw</span>() {
+<a name="l00192"></a>00192       real Ht, Ft, Dt, It;
+<a name="l00193"></a>00193       FieldComponents(Bx, By, Bz, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
+<a name="l00194"></a>00194                       H, F, D, I, Ht, Ft, Dt, It);
+<a name="l00195"></a>00195     }
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment">    /**</span>
+<a name="l00198"></a>00198 <span class="comment">     * Compute various quantities dependent on the magnetic field and its rate</span>
+<a name="l00199"></a>00199 <span class="comment">     * of change.</span>
+<a name="l00200"></a>00200 <span class="comment">     *</span>
+<a name="l00201"></a>00201 <span class="comment">     * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
+<a name="l00202"></a>00202 <span class="comment">     * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
+<a name="l00203"></a>00203 <span class="comment">     * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
+<a name="l00204"></a>00204 <span class="comment">     *   field (nT).</span>
+<a name="l00205"></a>00205 <span class="comment">     * @param[in] Bxt the rate of change of \e Bx (nT/yr).</span>
+<a name="l00206"></a>00206 <span class="comment">     * @param[in] Byt the rate of change of \e By (nT/yr).</span>
+<a name="l00207"></a>00207 <span class="comment">     * @param[in] Bzt the rate of change of \e Bz (nT/yr).</span>
+<a name="l00208"></a>00208 <span class="comment">     * @param[out] H the horizontal magnetic field (nT).</span>
+<a name="l00209"></a>00209 <span class="comment">     * @param[out] F the total magnetic field (nT).</span>
+<a name="l00210"></a>00210 <span class="comment">     * @param[out] D the declination of the field (degrees east of north).</span>
+<a name="l00211"></a>00211 <span class="comment">     * @param[out] I the inclination of the field (degrees down from</span>
+<a name="l00212"></a>00212 <span class="comment">     *   horizontal).</span>
+<a name="l00213"></a>00213 <span class="comment">     * @param[out] Ht the rate of change of \e H (nT/yr).</span>
+<a name="l00214"></a>00214 <span class="comment">     * @param[out] Ft the rate of change of \e F (nT/yr).</span>
+<a name="l00215"></a>00215 <span class="comment">     * @param[out] Dt the rate of change of \e D (degrees/yr).</span>
+<a name="l00216"></a>00216 <span class="comment">     * @param[out] It the rate of change of \e I (degrees/yr).</span>
+<a name="l00217"></a>00217 <span class="comment">     **********************************************************************/</span>
+<a name="l00218"></a>00218     <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bz,
+<a name="l00219"></a>00219                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bzt,
+<a name="l00220"></a>00220                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& H, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& F, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& D, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& I,
+<a name="l00221"></a>00221                                 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ht, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ft, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& It) <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment">    ///@}</span>
+<a name="l00223"></a>00223 <span class="comment"></span><span class="comment"></span>
+<a name="l00224"></a>00224 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00225"></a>00225 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00226"></a>00226 <span class="comment">    ///@{</span>
+<a name="l00227"></a>00227 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00228"></a>00228 <span class="comment">     * @return the description of the magnetic model, if available, from the</span>
+<a name="l00229"></a>00229 <span class="comment">     *   Description file in the data file; if absent, return "NONE".</span>
+<a name="l00230"></a>00230 <span class="comment">     **********************************************************************/</span>
+<a name="l00231"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">00231</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
+<a name="l00232"></a>00232 <span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment">    /**</span>
+<a name="l00234"></a>00234 <span class="comment">     * @return date of the model, if available, from the ReleaseDate field in</span>
+<a name="l00235"></a>00235 <span class="comment">     *   the data file; if absent, return "UNKNOWN".</span>
+<a name="l00236"></a>00236 <span class="comment">     **********************************************************************/</span>
+<a name="l00237"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">00237</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
+<a name="l00238"></a>00238 <span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">    /**</span>
+<a name="l00240"></a>00240 <span class="comment">     * @return full file name used to load the magnetic model.</span>
+<a name="l00241"></a>00241 <span class="comment">     **********************************************************************/</span>
+<a name="l00242"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">00242</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">    /**</span>
+<a name="l00245"></a>00245 <span class="comment">     * @return "name" used to load the magnetic model (from the first argument</span>
+<a name="l00246"></a>00246 <span class="comment">     *   of the constructor, but this may be overridden by the model file).</span>
+<a name="l00247"></a>00247 <span class="comment">     **********************************************************************/</span>
+<a name="l00248"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">00248</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
+<a name="l00249"></a>00249 <span class="comment"></span>
+<a name="l00250"></a>00250 <span class="comment">    /**</span>
+<a name="l00251"></a>00251 <span class="comment">     * @return directory used to load the magnetic model.</span>
+<a name="l00252"></a>00252 <span class="comment">     **********************************************************************/</span>
+<a name="l00253"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">00253</a>     <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">MagneticModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
+<a name="l00254"></a>00254 <span class="comment"></span>
+<a name="l00255"></a>00255 <span class="comment">    /**</span>
+<a name="l00256"></a>00256 <span class="comment">     * @return the minimum height above the ellipsoid (in meters) for which</span>
+<a name="l00257"></a>00257 <span class="comment">     *   this MagneticModel should be used.</span>
+<a name="l00258"></a>00258 <span class="comment">     *</span>
+<a name="l00259"></a>00259 <span class="comment">     * Because the model will typically provide useful results</span>
+<a name="l00260"></a>00260 <span class="comment">     * slightly outside the range of allowed heights, no check of \e t</span>
+<a name="l00261"></a>00261 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
+<a name="l00262"></a>00262 <span class="comment">     * MagneticModel::Circle.</span>
+<a name="l00263"></a>00263 <span class="comment">     **********************************************************************/</span>
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">00264</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmin; }
+<a name="l00265"></a>00265 <span class="comment"></span>
+<a name="l00266"></a>00266 <span class="comment">    /**</span>
+<a name="l00267"></a>00267 <span class="comment">     * @return the maximum height above the ellipsoid (in meters) for which</span>
+<a name="l00268"></a>00268 <span class="comment">     *   this MagneticModel should be used.</span>
+<a name="l00269"></a>00269 <span class="comment">     *</span>
+<a name="l00270"></a>00270 <span class="comment">     * Because the model will typically provide useful results</span>
+<a name="l00271"></a>00271 <span class="comment">     * slightly outside the range of allowed heights, no check of \e t</span>
+<a name="l00272"></a>00272 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
+<a name="l00273"></a>00273 <span class="comment">     * MagneticModel::Circle.</span>
+<a name="l00274"></a>00274 <span class="comment">     **********************************************************************/</span>
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">00275</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmax; }
+<a name="l00276"></a>00276 <span class="comment"></span>
+<a name="l00277"></a>00277 <span class="comment">    /**</span>
+<a name="l00278"></a>00278 <span class="comment">     * @return the minimum time (in years) for which this MagneticModel should</span>
+<a name="l00279"></a>00279 <span class="comment">     *   be used.</span>
+<a name="l00280"></a>00280 <span class="comment">     *</span>
+<a name="l00281"></a>00281 <span class="comment">     * Because the model will typically provide useful results</span>
+<a name="l00282"></a>00282 <span class="comment">     * slightly outside the range of allowed times, no check of \e t</span>
+<a name="l00283"></a>00283 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
+<a name="l00284"></a>00284 <span class="comment">     * MagneticModel::Circle.</span>
+<a name="l00285"></a>00285 <span class="comment">     **********************************************************************/</span>
+<a name="l00286"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">00286</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmin; }
+<a name="l00287"></a>00287 <span class="comment"></span>
+<a name="l00288"></a>00288 <span class="comment">    /**</span>
+<a name="l00289"></a>00289 <span class="comment">     * @return the maximum time (in years) for which this MagneticModel should</span>
+<a name="l00290"></a>00290 <span class="comment">     *   be used.</span>
+<a name="l00291"></a>00291 <span class="comment">     *</span>
+<a name="l00292"></a>00292 <span class="comment">     * Because the model will typically provide useful results</span>
+<a name="l00293"></a>00293 <span class="comment">     * slightly outside the range of allowed times, no check of \e t</span>
+<a name="l00294"></a>00294 <span class="comment">     * argument is made by MagneticModel::operator()() or</span>
+<a name="l00295"></a>00295 <span class="comment">     * MagneticModel::Circle.</span>
+<a name="l00296"></a>00296 <span class="comment">     **********************************************************************/</span>
+<a name="l00297"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">00297</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmax; }
+<a name="l00298"></a>00298 <span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment">    /**</span>
+<a name="l00300"></a>00300 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00301"></a>00301 <span class="comment">     *   the value of \e a inherited from the Geocentric object used in the</span>
+<a name="l00302"></a>00302 <span class="comment">     *   constructor.</span>
+<a name="l00303"></a>00303 <span class="comment">     **********************************************************************/</span>
+<a name="l00304"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">00304</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00305"></a>00305 <span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment">    /**</span>
+<a name="l00307"></a>00307 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00308"></a>00308 <span class="comment">     *   inherited from the Geocentric object used in the constructor.</span>
+<a name="l00309"></a>00309 <span class="comment">     **********************************************************************/</span>
+<a name="l00310"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">00310</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class [...]
+<a name="l00311"></a>00311 <span class="comment">    ///@}</span>
+<a name="l00312"></a>00312 <span class="comment"></span><span class="comment"></span>
+<a name="l00313"></a>00313 <span class="comment">    /**</span>
+<a name="l00314"></a>00314 <span class="comment">     * @return the default path for magnetic model data files.</span>
+<a name="l00315"></a>00315 <span class="comment">     *</span>
+<a name="l00316"></a>00316 <span class="comment">     * This is the value of the environment variable MAGNETIC_PATH, if set;</span>
+<a name="l00317"></a>00317 <span class="comment">     * otherwise, it is $GEOGRAPHICLIB_DATA/magnetic if the environment</span>
+<a name="l00318"></a>00318 <span class="comment">     * variable GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time</span>
+<a name="l00319"></a>00319 <span class="comment">     * default (/usr/local/share/GeographicLib/magnetic on non-Windows systems</span>
+<a name="l00320"></a>00320 <span class="comment">     * and C:/Documents and Settings/All Users/Application</span>
+<a name="l00321"></a>00321 <span class="comment">     * Data/GeographicLib/magnetic on Windows systems).</span>
+<a name="l00322"></a>00322 <span class="comment">     **********************************************************************/</span>
+<a name="l00323"></a>00323     <span class="keyword">static</span> std::string DefaultMagneticPath();
+<a name="l00324"></a>00324 <span class="comment"></span>
+<a name="l00325"></a>00325 <span class="comment">    /**</span>
+<a name="l00326"></a>00326 <span class="comment">     * @return the default name for the magnetic model.</span>
+<a name="l00327"></a>00327 <span class="comment">     *</span>
+<a name="l00328"></a>00328 <span class="comment">     * This is the value of the environment variable MAGNETIC_NAME, if set,</span>
+<a name="l00329"></a>00329 <span class="comment">     * otherwise, it is "wmm2010".  The MagneticModel class does not use this</span>
+<a name="l00330"></a>00330 <span class="comment">     * function; it is just provided as a convenience for a calling program</span>
+<a name="l00331"></a>00331 <span class="comment">     * when constructing a MagneticModel object.</span>
+<a name="l00332"></a>00332 <span class="comment">     **********************************************************************/</span>
+<a name="l00333"></a>00333     <span class="keyword">static</span> std::string DefaultMagneticName();
+<a name="l00334"></a>00334   };
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00339"></a>00339 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00340"></a>00340 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00341"></a>00341 <span class="preprocessor"></span>
+<a name="l00342"></a>00342 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MAGNETICMODEL_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Math_8hpp.html b/doc/html/Math_8hpp.html
index ec3fd2d..e1d5882 100644
--- a/doc/html/Math_8hpp.html
+++ b/doc/html/Math_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Math.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,20 +85,18 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">GEOGRAPHICLIB_MATH_HPP</a>   "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">GEOGRAPHICLIB_CPLUSPLUS0X_MATH</a>   0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">GEOGRAPHICLIB_MATH_HPP</a>   "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">GEOGRAPHICLIB_CPLUSPLUS11_MATH</a>   0</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a82e69009d3cd108c8aad8afe44fb1132">WORDS_BIGENDIAN</a>   0</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a8df061fdb3d6e90d150d4fdd749f96b1">GEOGRAPHICLIB_PREC</a>   1</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -92,7 +105,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_MATH_HPP   "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_MATH_HPP   "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"</td>
         </tr>
       </table>
 </div>
@@ -102,17 +115,17 @@ Defines</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a6cdc2f4c764d4116788cc5c24625e75d"></a><!-- doxytag: member="Math.hpp::GEOGRAPHICLIB_CPLUSPLUS0X_MATH" ref="a6cdc2f4c764d4116788cc5c24625e75d" args="" -->
+<a class="anchor" id="a2769cdfa2277e2728e4e157ec3f6318b"></a><!-- doxytag: member="Math.hpp::GEOGRAPHICLIB_CPLUSPLUS11_MATH" ref="a2769cdfa2277e2728e4e157ec3f6318b" args="" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_CPLUSPLUS0X_MATH   0</td>
+          <td class="memname">#define GEOGRAPHICLIB_CPLUSPLUS11_MATH   0</td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
-<p>Are C++0X math functions available? </p>
+<p>Are C++11 math functions available? </p>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00024">24</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
@@ -150,8 +163,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Math_8hpp_source.html b/doc/html/Math_8hpp_source.html
index 43fed2c..1531cb3 100644
--- a/doc/html/Math_8hpp_source.html
+++ b/doc/html/Math_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Math.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,8 +67,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Math.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Math class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
@@ -62,16 +77,16 @@
 <a name="l00012"></a>00012 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00013"></a>00013 
 <a name="l00014"></a>00014 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MATH_HPP)</span>
-<a name="l00015"></a><a class="code" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">00015</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MATH_HPP "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"</span>
+<a name="l00015"></a><a class="code" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">00015</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MATH_HPP "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"</span>
 <a name="l00016"></a>00016 <span class="preprocessor"></span><span class="comment"></span>
 <a name="l00017"></a>00017 <span class="comment">/**</span>
-<a name="l00018"></a>00018 <span class="comment"> * Are C++0X math functions available?</span>
+<a name="l00018"></a>00018 <span class="comment"> * Are C++11 math functions available?</span>
 <a name="l00019"></a>00019 <span class="comment"> **********************************************************************/</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#  if defined(__GXX_EXPERIMENTAL_CXX0X__)</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 1</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1</span>
 <a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#  else</span>
-<a name="l00024"></a><a class="code" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">00024</a> <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 0</span>
+<a name="l00024"></a><a class="code" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">00024</a> <span class="preprocessor"></span><span class="preprocessor">#    define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0</span>
 <a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#  endif</span>
 <a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00027"></a>00027 <span class="preprocessor"></span>
@@ -108,13 +123,13 @@
 <a name="l00058"></a>00058 <span class="comment">   * Example of use:</span>
 <a name="l00059"></a>00059 <span class="comment">   * \include example-Math.cpp</span>
 <a name="l00060"></a>00060 <span class="comment">   **********************************************************************/</span>
-<a name="l00061"></a><a class="code" href="classGeographicLib_1_1Math.html">00061</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a> {
+<a name="l00061"></a>00061   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Math {
 <a name="l00062"></a>00062   <span class="keyword">private</span>:
 <a name="l00063"></a>00063     <span class="keywordtype">void</span> dummy() {
 <a name="l00064"></a>00064       <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(<a class="code" href="Math_8hpp.html#a8df061fdb3d6e90d150d4fdd749f96b1">GEOGRAPHICLIB_PREC</a> >= 0 && <a class="code" href="Math_8hpp.html#a8df061fdb3d6e90d150d4fdd749f96b1">GEOGRAPHICLIB_PREC</a> <= 2,
 <a name="l00065"></a>00065                     <span class="stringliteral">"Bad value of precision"</span>);
 <a name="l00066"></a>00066     }
-<a name="l00067"></a>00067     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>();                     <span class="comment">// Disable constructor</span>
+<a name="l00067"></a>00067     Math();                     <span class="comment">// Disable constructor</span>
 <a name="l00068"></a>00068   <span class="keyword">public</span>:
 <a name="l00069"></a>00069 
 <a name="l00070"></a>00070 <span class="preprocessor">#if defined(HAVE_LONG_DOUBLE)</span>
@@ -122,7 +137,7 @@
 <a name="l00072"></a>00072 <span class="comment">     * The extended precision type for real numbers, used for some testing.</span>
 <a name="l00073"></a>00073 <span class="comment">     * This is long double on computers with this type; otherwise it is double.</span>
 <a name="l00074"></a>00074 <span class="comment">     **********************************************************************/</span>
-<a name="l00075"></a>00075     <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> <a class="code" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">extended</a>;
+<a name="l00075"></a>00075     <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> extended;
 <a name="l00076"></a>00076 <span class="preprocessor">#else</span>
 <a name="l00077"></a><a class="code" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">00077</a> <span class="preprocessor"></span>    <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">extended</a>;
 <a name="l00078"></a>00078 <span class="preprocessor">#endif</span>
@@ -152,7 +167,7 @@
 <a name="l00102"></a>00102 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00103"></a>00103 <span class="comment">     * @return \e pi.</span>
 <a name="l00104"></a>00104 <span class="comment">     **********************************************************************/</span>
-<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">00105</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T pi() throw()
+<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">00105</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T pi() throw()
 <a name="l00106"></a>00106     { <span class="keywordflow">return</span> std::atan2(T(0), -T(1)); }<span class="comment"></span>
 <a name="l00107"></a>00107 <span class="comment">    /**</span>
 <a name="l00108"></a>00108 <span class="comment">     * A synonym for pi<real>().</span>
@@ -163,7 +178,7 @@
 <a name="l00113"></a>00113 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00114"></a>00114 <span class="comment">     * @return the number of radians in a degree.</span>
 <a name="l00115"></a>00115 <span class="comment">     **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">00116</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T degree() throw()
+<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">00116</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T degree() throw()
 <a name="l00117"></a>00117     { <span class="keywordflow">return</span> pi<T>() / T(180); }<span class="comment"></span>
 <a name="l00118"></a>00118 <span class="comment">    /**</span>
 <a name="l00119"></a>00119 <span class="comment">     * A synonym for degree<real>().</span>
@@ -177,7 +192,7 @@
 <a name="l00127"></a>00127 <span class="comment">     * @param[in] x</span>
 <a name="l00128"></a>00128 <span class="comment">     * @return <i>x</i><sup>2</sup>.</span>
 <a name="l00129"></a>00129 <span class="comment">     **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">00130</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T sq(T x) <span class="keywordflow">throw</span>()
+<a name="l00130"></a><a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">00130</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T sq(T x) <span class="keywordflow">throw</span>()
 <a name="l00131"></a>00131     { <span class="keywordflow">return</span> x * x; }
 <a name="l00132"></a>00132 
 <a name="l00133"></a>00133 <span class="preprocessor">#if defined(DOXYGEN)</span>
@@ -189,20 +204,20 @@
 <a name="l00139"></a>00139 <span class="comment">     * @param[in] y</span>
 <a name="l00140"></a>00140 <span class="comment">     * @return sqrt(<i>x</i><sup>2</sup> + <i>y</i><sup>2</sup>).</span>
 <a name="l00141"></a>00141 <span class="comment">     **********************************************************************/</span>
-<a name="l00142"></a><a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">00142</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">hypot</a>(T x, T y) <span class="keywordflow">throw</span>() {
+<a name="l00142"></a><a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">00142</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">hypot</a>(T x, T y) <span class="keywordflow">throw</span>() {
 <a name="l00143"></a>00143       x = std::abs(x);
 <a name="l00144"></a>00144       y = std::abs(y);
 <a name="l00145"></a>00145       T a = (std::max)(x, y),
 <a name="l00146"></a>00146         b = (std::min)(x, y) / (a ? a : 1);
 <a name="l00147"></a>00147       <span class="keywordflow">return</span> a * std::sqrt(1 + b * b);
 <a name="l00148"></a>00148     }
-<a name="l00149"></a>00149 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00149"></a>00149 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
 <a name="l00150"></a>00150 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T hypot(T x, T y) <span class="keywordflow">throw</span>()
 <a name="l00151"></a>00151     { <span class="keywordflow">return</span> std::hypot(x, y); }
 <a name="l00152"></a>00152 <span class="preprocessor">#elif defined(_MSC_VER)</span>
 <a name="l00153"></a>00153 <span class="preprocessor"></span>    <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> hypot(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y) <span class="keywordflow">throw</span>()
 <a name="l00154"></a>00154     { <span class="keywordflow">return</span> _hypot(x, y); }
-<a name="l00155"></a>00155 <span class="preprocessor">#if (_MSC_VER < 1400)</span>
+<a name="l00155"></a>00155 <span class="preprocessor">#if _MSC_VER < 1400</span>
 <a name="l00156"></a>00156 <span class="preprocessor"></span>    <span class="comment">// Visual C++ 7.1/VS .NET 2003 does not have _hypotf()</span>
 <a name="l00157"></a>00157     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> hypot(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y) <span class="keywordflow">throw</span>()
 <a name="l00158"></a>00158     { <span class="keywordflow">return</span> float(_hypot(x, y)); }
@@ -226,7 +241,7 @@
 <a name="l00176"></a>00176 <span class="preprocessor">#endif</span>
 <a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00178"></a>00178 <span class="preprocessor"></span>
-<a name="l00179"></a>00179 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00179"></a>00179 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00180"></a>00180 <span class="preprocessor"></span><span class="comment">    /**</span>
 <a name="l00181"></a>00181 <span class="comment">     * exp(\e x) - 1 accurate near \e x = 0.  This is taken from</span>
 <a name="l00182"></a>00182 <span class="comment">     * N. J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd</span>
@@ -236,7 +251,7 @@
 <a name="l00186"></a>00186 <span class="comment">     * @param[in] x</span>
 <a name="l00187"></a>00187 <span class="comment">     * @return exp(\e x) - 1.</span>
 <a name="l00188"></a>00188 <span class="comment">     **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">00189</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">expm1</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00189"></a><a class="code" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">00189</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">expm1</a>(T x) <span class="keywordflow">throw</span>() {
 <a name="l00190"></a>00190       <span class="keyword">volatile</span> T
 <a name="l00191"></a>00191         y = std::exp(x),
 <a name="l00192"></a>00192         z = y - 1;
@@ -244,9 +259,9 @@
 <a name="l00194"></a>00194       <span class="comment">// mathematically reduces to exp(x) - 1, and the factor z/log(y) = (y -</span>
 <a name="l00195"></a>00195       <span class="comment">// 1)/log(y) is a slowly varying quantity near y = 1 and is accurately</span>
 <a name="l00196"></a>00196       <span class="comment">// computed.</span>
-<a name="l00197"></a>00197       <span class="keywordflow">return</span> std::abs(x) > 1 ? z : (z == 0 ?  x : x * z / std::log(y));
+<a name="l00197"></a>00197       <span class="keywordflow">return</span> std::abs(x) > 1 ? z : (z == 0 ? x : x * z / std::log(y));
 <a name="l00198"></a>00198     }
-<a name="l00199"></a>00199 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00199"></a>00199 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
 <a name="l00200"></a>00200 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T expm1(T x) <span class="keywordflow">throw</span>()
 <a name="l00201"></a>00201     { <span class="keywordflow">return</span> std::expm1(x); }
 <a name="l00202"></a>00202 <span class="preprocessor">#else</span>
@@ -258,7 +273,7 @@
 <a name="l00208"></a>00208 <span class="preprocessor">#endif</span>
 <a name="l00209"></a>00209 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00210"></a>00210 <span class="preprocessor"></span>
-<a name="l00211"></a>00211 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00211"></a>00211 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00212"></a>00212 <span class="preprocessor"></span><span class="comment">    /**</span>
 <a name="l00213"></a>00213 <span class="comment">     * log(1 + \e x) accurate near \e x = 0.</span>
 <a name="l00214"></a>00214 <span class="comment">     *</span>
@@ -271,7 +286,7 @@
 <a name="l00221"></a>00221 <span class="comment">     * @param[in] x</span>
 <a name="l00222"></a>00222 <span class="comment">     * @return log(1 + \e x).</span>
 <a name="l00223"></a>00223 <span class="comment">     **********************************************************************/</span>
-<a name="l00224"></a><a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">00224</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">log1p</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00224"></a><a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">00224</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">log1p</a>(T x) <span class="keywordflow">throw</span>() {
 <a name="l00225"></a>00225       <span class="keyword">volatile</span> T
 <a name="l00226"></a>00226         y = 1 + x,
 <a name="l00227"></a>00227         z = y - 1;
@@ -281,7 +296,7 @@
 <a name="l00231"></a>00231       <span class="comment">// (log(y)/z) introduces little additional error.</span>
 <a name="l00232"></a>00232       <span class="keywordflow">return</span> z == 0 ? x : x * std::log(y) / z;
 <a name="l00233"></a>00233     }
-<a name="l00234"></a>00234 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00234"></a>00234 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
 <a name="l00235"></a>00235 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T log1p(T x) <span class="keywordflow">throw</span>()
 <a name="l00236"></a>00236     { <span class="keywordflow">return</span> std::log1p(x); }
 <a name="l00237"></a>00237 <span class="preprocessor">#else</span>
@@ -293,7 +308,7 @@
 <a name="l00243"></a>00243 <span class="preprocessor">#endif</span>
 <a name="l00244"></a>00244 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00245"></a>00245 <span class="preprocessor"></span>
-<a name="l00246"></a>00246 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00246"></a>00246 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00247"></a>00247 <span class="preprocessor"></span><span class="comment">    /**</span>
 <a name="l00248"></a>00248 <span class="comment">     * The inverse hyperbolic sine function.  This is defined in terms of</span>
 <a name="l00249"></a>00249 <span class="comment">     * Math::log1p(\e x) in order to maintain accuracy near \e x = 0.  In</span>
@@ -303,12 +318,12 @@
 <a name="l00253"></a>00253 <span class="comment">     * @param[in] x</span>
 <a name="l00254"></a>00254 <span class="comment">     * @return asinh(\e x).</span>
 <a name="l00255"></a>00255 <span class="comment">     **********************************************************************/</span>
-<a name="l00256"></a><a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">00256</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">asinh</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00256"></a><a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">00256</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">asinh</a>(T x) <span class="keywordflow">throw</span>() {
 <a name="l00257"></a>00257       T y = std::abs(x);     <span class="comment">// Enforce odd parity</span>
 <a name="l00258"></a>00258       y = log1p(y * (1 + y/(hypot(T(1), y) + 1)));
 <a name="l00259"></a>00259       <span class="keywordflow">return</span> x < 0 ? -y : y;
 <a name="l00260"></a>00260     }
-<a name="l00261"></a>00261 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00261"></a>00261 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
 <a name="l00262"></a>00262 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T asinh(T x) <span class="keywordflow">throw</span>()
 <a name="l00263"></a>00263     { <span class="keywordflow">return</span> std::asinh(x); }
 <a name="l00264"></a>00264 <span class="preprocessor">#else</span>
@@ -320,7 +335,7 @@
 <a name="l00270"></a>00270 <span class="preprocessor">#endif</span>
 <a name="l00271"></a>00271 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00272"></a>00272 <span class="preprocessor"></span>
-<a name="l00273"></a>00273 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00273"></a>00273 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00274"></a>00274 <span class="preprocessor"></span><span class="comment">    /**</span>
 <a name="l00275"></a>00275 <span class="comment">     * The inverse hyperbolic tangent function.  This is defined in terms of</span>
 <a name="l00276"></a>00276 <span class="comment">     * Math::log1p(\e x) in order to maintain accuracy near \e x = 0.  In</span>
@@ -330,12 +345,12 @@
 <a name="l00280"></a>00280 <span class="comment">     * @param[in] x</span>
 <a name="l00281"></a>00281 <span class="comment">     * @return atanh(\e x).</span>
 <a name="l00282"></a>00282 <span class="comment">     **********************************************************************/</span>
-<a name="l00283"></a><a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">00283</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">atanh</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00283"></a><a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">00283</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">atanh</a>(T x) <span class="keywordflow">throw</span>() {
 <a name="l00284"></a>00284       T y = std::abs(x);     <span class="comment">// Enforce odd parity</span>
 <a name="l00285"></a>00285       y = log1p(2 * y/(1 - y))/2;
 <a name="l00286"></a>00286       <span class="keywordflow">return</span> x < 0 ? -y : y;
 <a name="l00287"></a>00287     }
-<a name="l00288"></a>00288 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00288"></a>00288 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
 <a name="l00289"></a>00289 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T atanh(T x) <span class="keywordflow">throw</span>()
 <a name="l00290"></a>00290     { <span class="keywordflow">return</span> std::atanh(x); }
 <a name="l00291"></a>00291 <span class="preprocessor">#else</span>
@@ -347,7 +362,7 @@
 <a name="l00297"></a>00297 <span class="preprocessor">#endif</span>
 <a name="l00298"></a>00298 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
 <a name="l00299"></a>00299 <span class="preprocessor"></span>
-<a name="l00300"></a>00300 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00300"></a>00300 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00301"></a>00301 <span class="preprocessor"></span><span class="comment">    /**</span>
 <a name="l00302"></a>00302 <span class="comment">     * The cube root function.</span>
 <a name="l00303"></a>00303 <span class="comment">     *</span>
@@ -355,11 +370,11 @@
 <a name="l00305"></a>00305 <span class="comment">     * @param[in] x</span>
 <a name="l00306"></a>00306 <span class="comment">     * @return the real cube root of \e x.</span>
 <a name="l00307"></a>00307 <span class="comment">     **********************************************************************/</span>
-<a name="l00308"></a><a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">00308</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">cbrt</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00308"></a><a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">00308</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">cbrt</a>(T x) <span class="keywordflow">throw</span>() {
 <a name="l00309"></a>00309       T y = std::pow(std::abs(x), 1/T(3)); <span class="comment">// Return the real cube root</span>
 <a name="l00310"></a>00310       <span class="keywordflow">return</span> x < 0 ? -y : y;
 <a name="l00311"></a>00311     }
-<a name="l00312"></a>00312 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00312"></a>00312 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
 <a name="l00313"></a>00313 <span class="preprocessor"></span>    <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T cbrt(T x) <span class="keywordflow">throw</span>()
 <a name="l00314"></a>00314     { <span class="keywordflow">return</span> std::cbrt(x); }
 <a name="l00315"></a>00315 <span class="preprocessor">#else</span>
@@ -377,10 +392,10 @@
 <a name="l00327"></a>00327 <span class="comment">     * @param[in] x</span>
 <a name="l00328"></a>00328 <span class="comment">     * @return true if number is finite, false if NaN or infinite.</span>
 <a name="l00329"></a>00329 <span class="comment">     **********************************************************************/</span>
-<a name="l00330"></a><a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">00330</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">isfinite</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00330"></a><a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">00330</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">isfinite</a>(T x) <span class="keywordflow">throw</span>() {
 <a name="l00331"></a>00331 <span class="preprocessor">#if defined(DOXYGEN)</span>
 <a name="l00332"></a>00332 <span class="preprocessor"></span>      <span class="keywordflow">return</span> std::abs(x) <= (std::numeric_limits<T>::max)();
-<a name="l00333"></a>00333 <span class="preprocessor">#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00333"></a>00333 <span class="preprocessor">#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00334"></a>00334 <span class="preprocessor"></span>      <span class="keywordflow">return</span> _finite(x) != 0;
 <a name="l00335"></a>00335 <span class="preprocessor">#else</span>
 <a name="l00336"></a>00336 <span class="preprocessor"></span>      <span class="keywordflow">return</span> std::isfinite(x);
@@ -393,7 +408,7 @@
 <a name="l00343"></a>00343 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00344"></a>00344 <span class="comment">     * @return NaN if available, otherwise return the max real.</span>
 <a name="l00345"></a>00345 <span class="comment">     **********************************************************************/</span>
-<a name="l00346"></a><a class="code" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">00346</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN</a>() throw() {
+<a name="l00346"></a><a class="code" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">00346</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN</a>() throw() {
 <a name="l00347"></a>00347       <span class="keywordflow">return</span> std::numeric_limits<T>::has_quiet_NaN ?
 <a name="l00348"></a>00348         std::numeric_limits<T>::quiet_NaN() :
 <a name="l00349"></a>00349         (std::numeric_limits<T>::max)();
@@ -410,8 +425,8 @@
 <a name="l00360"></a>00360 <span class="comment">     * @param[in] x</span>
 <a name="l00361"></a>00361 <span class="comment">     * @return true if argument is a NaN.</span>
 <a name="l00362"></a>00362 <span class="comment">     **********************************************************************/</span>
-<a name="l00363"></a><a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">00363</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">isnan</a>(T x) <span class="keywordflow">throw</span>() {
-<a name="l00364"></a>00364 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00363"></a><a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">00363</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">isnan</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00364"></a>00364 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
 <a name="l00365"></a>00365 <span class="preprocessor"></span>      <span class="keywordflow">return</span> x != x;
 <a name="l00366"></a>00366 <span class="preprocessor">#else</span>
 <a name="l00367"></a>00367 <span class="preprocessor"></span>      <span class="keywordflow">return</span> std::isnan(x);
@@ -424,7 +439,7 @@
 <a name="l00374"></a>00374 <span class="comment">     * @tparam T the type of the returned value.</span>
 <a name="l00375"></a>00375 <span class="comment">     * @return infinity if available, otherwise return the max real.</span>
 <a name="l00376"></a>00376 <span class="comment">     **********************************************************************/</span>
-<a name="l00377"></a><a class="code" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">00377</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity</a>() throw() {
+<a name="l00377"></a><a class="code" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">00377</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity</a>() throw() {
 <a name="l00378"></a>00378       <span class="keywordflow">return</span> std::numeric_limits<T>::has_infinity ?
 <a name="l00379"></a>00379         std::numeric_limits<T>::infinity() :
 <a name="l00380"></a>00380         (std::numeric_limits<T>::max)();
@@ -441,7 +456,7 @@
 <a name="l00391"></a>00391 <span class="comment">     * @param[in] x</span>
 <a name="l00392"></a>00392 <span class="comment">     * @return x with its bytes swapped.</span>
 <a name="l00393"></a>00393 <span class="comment">     **********************************************************************/</span>
-<a name="l00394"></a><a class="code" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">00394</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">swab</a>(T x) {
+<a name="l00394"></a><a class="code" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">00394</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">swab</a>(T x) {
 <a name="l00395"></a>00395       <span class="keyword">union </span>{
 <a name="l00396"></a>00396         T r;
 <a name="l00397"></a>00397         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c[<span class="keyword">sizeof</span>(T)];
@@ -458,8 +473,13 @@
 <a name="l00408"></a>00408 <span class="preprocessor">#endif  // GEOGRAPHICLIB_MATH_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/NormalGravity_8cpp.html b/doc/html/NormalGravity_8cpp.html
index d69293c..9022f38 100644
--- a/doc/html/NormalGravity_8cpp.html
+++ b/doc/html/NormalGravity_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: NormalGravity.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,13 +75,11 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">GEOGRAPHICLIB_NORMALGRAVITY_CPP</a>   "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">GEOGRAPHICLIB_NORMALGRAVITY_CPP</a>   "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_NORMALGRAVITY_CPP   "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_NORMALGRAVITY_CPP   "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/NormalGravity_8cpp_source.html b/doc/html/NormalGravity_8cpp_source.html
index a80b83e..acdb2a8 100644
--- a/doc/html/NormalGravity_8cpp_source.html
+++ b/doc/html/NormalGravity_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: NormalGravity.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="NormalGravity_8hpp.html" title="Header for GeographicLib::NormalGravity class.">GeographicLib/NormalGravity.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_NORMALGRAVITY_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">GEOGRAPHICLIB_NORMALGRAVITY_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="NormalGravity_8hpp.html#a3f83059dc418514a79fa4e6c94869b58">GEOGRAPHICLIB_NORMALGRAVITY_HPP</a>)
@@ -77,11 +92,11 @@
 <a name="l00028"></a>00028     , _omega2(<a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::sq(_omega))
 <a name="l00029"></a>00029     , _aomega2(<a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::sq(_omega * _a))
 <a name="l00030"></a>00030     {
-<a name="l00031"></a>00031       <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00031"></a>00031       <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00032"></a>00032         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_GM) && _GM > 0))
+<a name="l00033"></a>00033       <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_GM) && _GM > 0))
 <a name="l00034"></a>00034         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Gravitational constants is not positive"</span>);
-<a name="l00035"></a>00035       <span class="keywordtype">bool</span> flatp = _f > 0 && <a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f);
+<a name="l00035"></a>00035       <span class="keywordtype">bool</span> flatp = _f > 0 && <a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f);
 <a name="l00036"></a>00036       <span class="keywordflow">if</span> (_J2 > 0 && Math::isfinite(_J2) && flatp)
 <a name="l00037"></a>00037         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Cannot specify both f and J2"</span>);
 <a name="l00038"></a>00038       <span class="keywordflow">if</span> (!(_J2 > 0 && Math::isfinite(_J2)) && !flatp)
@@ -135,17 +150,17 @@
 <a name="l00086"></a>00086                        Constants::GRS80_omega<real>(),
 <a name="l00087"></a>00087                        0, Constants::GRS80_J2<real>());
 <a name="l00088"></a>00088 
-<a name="l00089"></a>00089   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NormalGravity::qf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
+<a name="l00089"></a>00089   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NormalGravity::qf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
 <a name="l00090"></a>00090     <span class="comment">// Compute</span>
 <a name="l00091"></a>00091     <span class="comment">//</span>
-<a name="l00092"></a>00092     <span class="comment">//  ((1 + 3/e'^2) * atan(e')  - 3/e')/2</span>
+<a name="l00092"></a>00092     <span class="comment">//   ((1 + 3/e'^2) * atan(e') - 3/e')/2</span>
 <a name="l00093"></a>00093     <span class="comment">//</span>
 <a name="l00094"></a>00094     <span class="comment">// See H+M, Eq 2-57, with E/u = e'.  This suffers from two levels of</span>
 <a name="l00095"></a>00095     <span class="comment">// cancelation.  The e'^-1 and e'^1 terms drop out, so that the leading</span>
 <a name="l00096"></a>00096     <span class="comment">// term is O(e'^3).</span>
 <a name="l00097"></a>00097     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep = sqrt(ep2);
-<a name="l00098"></a>00098     <span class="keywordflow">if</span> (abs(ep2) >  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))  <span class="comment">// Use the closed expression</span>
-<a name="l00099"></a>00099       <span class="keywordflow">return</span> ((1 + 3 / ep2) * atan(ep)  - 3 / ep)/2;
+<a name="l00098"></a>00098     <span class="keywordflow">if</span> (abs(ep2) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))  <span class="comment">// Use the closed expression</span>
+<a name="l00099"></a>00099       <span class="keywordflow">return</span> ((1 + 3 / ep2) * atan(ep) - 3 / ep)/2;
 <a name="l00100"></a>00100     <span class="keywordflow">else</span> {
 <a name="l00101"></a>00101       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2n = 1, q = 0;     <span class="comment">// The series expansion H+M, Eq 2-86</span>
 <a name="l00102"></a>00102       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> n = 1; ; ++n) {
@@ -162,10 +177,10 @@
 <a name="l00113"></a>00113     }
 <a name="l00114"></a>00114   }
 <a name="l00115"></a>00115 
-<a name="l00116"></a>00116   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NormalGravity::qpf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
+<a name="l00116"></a>00116   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NormalGravity::qpf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
 <a name="l00117"></a>00117     <span class="comment">// Compute</span>
 <a name="l00118"></a>00118     <span class="comment">//</span>
-<a name="l00119"></a>00119     <span class="comment">//  3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1</span>
+<a name="l00119"></a>00119     <span class="comment">//   3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1</span>
 <a name="l00120"></a>00120     <span class="comment">//</span>
 <a name="l00121"></a>00121     <span class="comment">// See H+M, Eq 2-67, with E/u = e'.  This suffers from two levels of</span>
 <a name="l00122"></a>00122     <span class="comment">// cancelation.  The e'^-2 and e'^0 terms drop out, so that the leading</span>
@@ -189,7 +204,7 @@
 <a name="l00140"></a>00140     }
 <a name="l00141"></a>00141   }
 <a name="l00142"></a>00142 
-<a name="l00143"></a>00143   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NormalGravity::Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00143"></a>00143   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NormalGravity::Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00144"></a>00144     <span class="comment">// Note Jn(0) = -1; Jn(2) = _J2; Jn(odd) = 0</span>
 <a name="l00145"></a>00145     <span class="keywordflow">if</span> (n & 1 || n < 0)
 <a name="l00146"></a>00146       <span class="keywordflow">return</span> 0;
@@ -201,50 +216,50 @@
 <a name="l00152"></a>00152       -3 * e2n * (1 - n + 5 * n * _J2 / _e2) / ((2 * n + 1) * (2 * n + 3));
 <a name="l00153"></a>00153   }
 <a name="l00154"></a>00154 
-<a name="l00155"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">00155</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">NormalGravity::SurfaceGravity</a>(real lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00155"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">00155</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">NormalGravity::SurfaceGravity</a>(real lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00156"></a>00156     real
-<a name="l00157"></a>00157       phi = lat * Math::degree<real>(),
-<a name="l00158"></a>00158       sphi2 = abs(lat) == 90 ? 1 : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sin(phi));
+<a name="l00157"></a>00157       phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
+<a name="l00158"></a>00158       sphi2 = abs(lat) == 90 ? 1 : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sin(phi));
 <a name="l00159"></a>00159     <span class="comment">// H+M, Eq 2-78</span>
 <a name="l00160"></a>00160     <span class="keywordflow">return</span> _gammae * (1 + _k * sphi2) / sqrt(1 - _e2 * sphi2);
 <a name="l00161"></a>00161   }
 <a name="l00162"></a>00162 
-<a name="l00163"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">00163</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">NormalGravity::V0</a>(real X, real Y, real Z,
+<a name="l00163"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">00163</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">NormalGravity::V0</a>(real X, real Y, real Z,
 <a name="l00164"></a>00164                                real& GammaX, real& GammaY, real& GammaZ)
 <a name="l00165"></a>00165     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00166"></a>00166     <span class="comment">// See H+M, Sec 6-2</span>
 <a name="l00167"></a>00167     real
-<a name="l00168"></a>00168       p = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),
+<a name="l00168"></a>00168       p = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y),
 <a name="l00169"></a>00169       clam = p ? X/p : 1,
 <a name="l00170"></a>00170       slam = p ? Y/p : 0,
-<a name="l00171"></a>00171       r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(p, Z),
-<a name="l00172"></a>00172       Q = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(r) - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_E),
-<a name="l00173"></a>00173       t2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(2 * _E * Z),
-<a name="l00174"></a>00174       disc = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(Q) + t2),
+<a name="l00171"></a>00171       r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(p, Z),
+<a name="l00172"></a>00172       Q = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(r) - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_E),
+<a name="l00173"></a>00173       t2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(2 * _E * Z),
+<a name="l00174"></a>00174       disc = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(Q) + t2),
 <a name="l00175"></a>00175       <span class="comment">// This is H+M, Eq 6-8a, but generalized to deal with Q negative</span>
 <a name="l00176"></a>00176       <span class="comment">// accurately.</span>
 <a name="l00177"></a>00177       u = sqrt((Q >= 0 ? (Q + disc) : t2 / (disc - Q)) / 2),
-<a name="l00178"></a>00178       uE = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(u, _E),
+<a name="l00178"></a>00178       uE = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(u, _E),
 <a name="l00179"></a>00179       <span class="comment">// H+M, Eq 6-8b</span>
 <a name="l00180"></a>00180       sbet = Z * uE,
 <a name="l00181"></a>00181       cbet = p * u,
-<a name="l00182"></a>00182       s = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(cbet, sbet);
+<a name="l00182"></a>00182       s = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(cbet, sbet);
 <a name="l00183"></a>00183     cbet = s ? cbet/s : 0;
 <a name="l00184"></a>00184     sbet = s ? sbet/s : 1;
 <a name="l00185"></a>00185     real
-<a name="l00186"></a>00186       invw = uE / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(u, _E * sbet), <span class="comment">// H+M, Eq 2-63</span>
+<a name="l00186"></a>00186       invw = uE / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(u, _E * sbet), <span class="comment">// H+M, Eq 2-63</span>
 <a name="l00187"></a>00187       ep = _E/u,
-<a name="l00188"></a>00188       ep2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(ep),
+<a name="l00188"></a>00188       ep2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(ep),
 <a name="l00189"></a>00189       q = qf(ep2) / _q0,
 <a name="l00190"></a>00190       qp = qpf(ep2) / _q0,
 <a name="l00191"></a>00191       <span class="comment">// H+M, Eqs 2-62 + 6-9, but omitting last (rotational) term .</span>
 <a name="l00192"></a>00192       Vres = (_GM / _E * atan(_E / u)
-<a name="l00193"></a>00193               + _aomega2 * q * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2),
+<a name="l00193"></a>00193               + _aomega2 * q * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2),
 <a name="l00194"></a>00194       <span class="comment">// H+M, Eq 6-10</span>
 <a name="l00195"></a>00195       gamu = - invw * (_GM
 <a name="l00196"></a>00196                        + (_aomega2 * _E * qp
-<a name="l00197"></a>00197                           * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2)) / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(uE),
-<a name="l00198"></a>00198       gamb = _aomega2 * q  * sbet * cbet * invw / uE,
+<a name="l00197"></a>00197                           * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2)) / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(uE),
+<a name="l00198"></a>00198       gamb = _aomega2 * q * sbet * cbet * invw / uE,
 <a name="l00199"></a>00199       t = u * invw / uE;
 <a name="l00200"></a>00200     <span class="comment">// H+M, Eq 6-12</span>
 <a name="l00201"></a>00201     GammaX = t * cbet * gamu - invw * sbet * gamb;
@@ -254,15 +269,15 @@
 <a name="l00205"></a>00205     <span class="keywordflow">return</span> Vres;
 <a name="l00206"></a>00206   }
 <a name="l00207"></a>00207 
-<a name="l00208"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">00208</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">NormalGravity::Phi</a>(real X, real Y, real& fX, real& fY)
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">00208</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">NormalGravity::Phi</a>(real X, real Y, real& fX, real& fY)
 <a name="l00209"></a>00209     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00210"></a>00210     fX = _omega2 * X;
 <a name="l00211"></a>00211     fY = _omega2 * Y;
 <a name="l00212"></a>00212     <span class="comment">// N.B. fZ = 0;</span>
-<a name="l00213"></a>00213     <span class="keywordflow">return</span> _omega2 * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(X) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(Y)) / 2;
+<a name="l00213"></a>00213     <span class="keywordflow">return</span> _omega2 * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(X) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(Y)) / 2;
 <a name="l00214"></a>00214   }
 <a name="l00215"></a>00215 
-<a name="l00216"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">00216</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">NormalGravity::U</a>(real X, real Y, real Z,
+<a name="l00216"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">00216</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">NormalGravity::U</a>(real X, real Y, real Z,
 <a name="l00217"></a>00217                               real& gammaX, real& gammaY, real& gammaZ)
 <a name="l00218"></a>00218     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00219"></a>00219     real fX, fY;
@@ -272,11 +287,11 @@
 <a name="l00223"></a>00223     <span class="keywordflow">return</span> Ures;
 <a name="l00224"></a>00224   }
 <a name="l00225"></a>00225 
-<a name="l00226"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">00226</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">NormalGravity::Gravity</a>(real lat, real h,
+<a name="l00226"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">00226</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">NormalGravity::Gravity</a>(real lat, real h,
 <a name="l00227"></a>00227                                     real& gammay, real& gammaz)
 <a name="l00228"></a>00228     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00229"></a>00229     real X, Y, Z;
-<a name="l00230"></a>00230     real M[Geocentric::dim2_];
+<a name="l00230"></a>00230     real M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
 <a name="l00231"></a>00231     _earth.IntForward(lat, 0, h, X, Y, Z, M);
 <a name="l00232"></a>00232     real gammaX, gammaY, gammaZ,
 <a name="l00233"></a>00233       Ures = U(X, Y, Z, gammaX, gammaY, gammaZ);
@@ -289,8 +304,13 @@
 <a name="l00240"></a>00240 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/NormalGravity_8hpp.html b/doc/html/NormalGravity_8hpp.html
index bc8f750..ed47932 100644
--- a/doc/html/NormalGravity_8hpp.html
+++ b/doc/html/NormalGravity_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: NormalGravity.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,10 +82,8 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8hpp.html#a3f83059dc418514a79fa4e6c94869b58">GEOGRAPHICLIB_NORMALGRAVITY_HPP</a>   "$Id: e4b65c9c5787d8ee14f476cbb518fd5007006344 $"</td></tr>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/NormalGravity_8hpp_source.html b/doc/html/NormalGravity_8hpp_source.html
index 5a56453..b30d559 100644
--- a/doc/html/NormalGravity_8hpp_source.html
+++ b/doc/html/NormalGravity_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: NormalGravity.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -108,17 +123,17 @@
 <a name="l00058"></a>00058 <span class="comment">   * \include example-NormalGravity.cpp</span>
 <a name="l00059"></a>00059 <span class="comment">   **********************************************************************/</span>
 <a name="l00060"></a>00060 
-<a name="l00061"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html">00061</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> {
+<a name="l00061"></a>00061   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> NormalGravity {
 <a name="l00062"></a>00062   <span class="keyword">private</span>:
 <a name="l00063"></a>00063     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxit_ = 10;
-<a name="l00064"></a>00064     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00064"></a>00064     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00065"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#ada1db1d9f480d8044753ed869c995519">00065</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>;
 <a name="l00066"></a>00066     real _a, _GM, _omega, _f, _J2, _omega2, _aomega2;
 <a name="l00067"></a>00067     real _e2, _ep2, _b, _E, _U0, _gammae, _gammap, _q0, _m, _k, _fstar;
 <a name="l00068"></a>00068     <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> _earth;
-<a name="l00069"></a>00069     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> qf(real ep2) <span class="keywordflow">throw</span>();
-<a name="l00070"></a>00070     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> qpf(real ep2) <span class="keywordflow">throw</span>();
-<a name="l00071"></a>00071     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00069"></a>00069     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real qf(real ep2) <span class="keywordflow">throw</span>();
+<a name="l00070"></a>00070     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real qpf(real ep2) <span class="keywordflow">throw</span>();
+<a name="l00071"></a>00071     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00072"></a>00072   <span class="keyword">public</span>:
 <a name="l00073"></a>00073 <span class="comment"></span>
 <a name="l00074"></a>00074 <span class="comment">    /** \name Setting up the normal gravity</span>
@@ -147,7 +162,7 @@
 <a name="l00097"></a>00097 <span class="comment">     *   A and \e C are the equatorial and polar moments of inertia and \e M is</span>
 <a name="l00098"></a>00098 <span class="comment">     *   the mass of the earth.</span>
 <a name="l00099"></a>00099 <span class="comment">     **********************************************************************/</span>
-<a name="l00100"></a>00100     <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>(real a, real GM, real omega, real f, real J2);
+<a name="l00100"></a>00100     NormalGravity(real a, real GM, real omega, real f, real J2);
 <a name="l00101"></a>00101 <span class="comment"></span>
 <a name="l00102"></a>00102 <span class="comment">    /**</span>
 <a name="l00103"></a>00103 <span class="comment">     * A default constructor for the normal gravity.  This sets up an</span>
@@ -172,7 +187,7 @@
 <a name="l00122"></a>00122 <span class="comment">     * surface of the ellipsoid.  It includes the effects of the earth's</span>
 <a name="l00123"></a>00123 <span class="comment">     * rotation.</span>
 <a name="l00124"></a>00124 <span class="comment">     **********************************************************************/</span>
-<a name="l00125"></a>00125     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SurfaceGravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00125"></a>00125     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> SurfaceGravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00126"></a>00126 <span class="comment"></span>
 <a name="l00127"></a>00127 <span class="comment">    /**</span>
 <a name="l00128"></a>00128 <span class="comment">     * Evaluate the gravity at an arbitrary point above (or below) the</span>
@@ -192,7 +207,7 @@
 <a name="l00142"></a>00142 <span class="comment">     * of the earth's rotation.  When \e h = 0, this function gives \e gammay =</span>
 <a name="l00143"></a>00143 <span class="comment">     * 0 and the returned value matches that of NormalGravity::SurfaceGravity.</span>
 <a name="l00144"></a>00144 <span class="comment">     **********************************************************************/</span>
-<a name="l00145"></a>00145     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& [...]
+<a name="l00145"></a>00145     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& [...]
 <a name="l00146"></a>00146       <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00147"></a>00147 <span class="comment"></span>
 <a name="l00148"></a>00148 <span class="comment">    /**</span>
@@ -215,7 +230,7 @@
 <a name="l00165"></a>00165 <span class="comment">     * The acceleration given by <b>gamma</b> = <b>grad</b> \e U = <b>grad</b></span>
 <a name="l00166"></a>00166 <span class="comment">     * <i>V</i><sub>0</sub> + <b>grad</b> \e Phi = <b>Gamma</b> + <b>f</b>.</span>
 <a name="l00167"></a>00167 <span class="comment">     **********************************************************************/</span>
-<a name="l00168"></a>00168     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> U(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00168"></a>00168     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> U(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
 <a name="l00169"></a>00169                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00170"></a>00170 <span class="comment"></span>
 <a name="l00171"></a>00171 <span class="comment">    /**</span>
@@ -239,7 +254,7 @@
 <a name="l00189"></a>00189 <span class="comment">     * function NormalGravity::U (which includes this effect) should usually be</span>
 <a name="l00190"></a>00190 <span class="comment">     * used.</span>
 <a name="l00191"></a>00191 <span class="comment">     **********************************************************************/</span>
-<a name="l00192"></a>00192     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> V0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00192"></a>00192     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> V0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
 <a name="l00193"></a>00193                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GammaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GammaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00194"></a>00194 <span class="comment"></span>
 <a name="l00195"></a>00195 <span class="comment">    /**</span>
@@ -257,7 +272,7 @@
 <a name="l00207"></a>00207 <span class="comment">     * NormalGravity::U sums the results of NormalGravity::V0 and</span>
 <a name="l00208"></a>00208 <span class="comment">     * NormalGravity::Phi.</span>
 <a name="l00209"></a>00209 <span class="comment">     **********************************************************************/</span>
-<a name="l00210"></a>00210     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Phi(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& fX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& fY) <span [...]
+<a name="l00210"></a>00210     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Phi(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& f [...]
 <a name="l00211"></a>00211 <span class="comment">    ///@}</span>
 <a name="l00212"></a>00212 <span class="comment"></span><span class="comment"></span>
 <a name="l00213"></a>00213 <span class="comment">    /** \name Inspector functions</span>
@@ -272,16 +287,16 @@
 <a name="l00222"></a>00222 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
 <a name="l00223"></a>00223 <span class="comment">     *   the value used in the constructor.</span>
 <a name="l00224"></a>00224 <span class="comment">     **********************************************************************/</span>
-<a name="l00225"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a9155d22c5a64a7ef346ce7f590a6264f">00225</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00226"></a>00226     { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
+<a name="l00225"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a9155d22c5a64a7ef346ce7f590a6264f">00225</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00226"></a>00226     { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00227"></a>00227 <span class="comment"></span>
 <a name="l00228"></a>00228 <span class="comment">    /**</span>
 <a name="l00229"></a>00229 <span class="comment">     * @return \e GM the mass constant of the ellipsoid</span>
 <a name="l00230"></a>00230 <span class="comment">     *   (m<sup>3</sup> s<sup>-2</sup>).  This is the value used in the</span>
 <a name="l00231"></a>00231 <span class="comment">     *   constructor.</span>
 <a name="l00232"></a>00232 <span class="comment">     **********************************************************************/</span>
-<a name="l00233"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3c6693dc7efe04cdbed408b2510c69da">00233</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MassConstant() <span class="keyword">const</span> throw()
-<a name="l00234"></a>00234     { <span class="keywordflow">return</span> Init() ? _GM : Math::NaN<real>(); }
+<a name="l00233"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3c6693dc7efe04cdbed408b2510c69da">00233</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MassConstant() <span class="keyword">const</span> throw()
+<a name="l00234"></a>00234     { <span class="keywordflow">return</span> Init() ? _GM : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00235"></a>00235 <span class="comment"></span>
 <a name="l00236"></a>00236 <span class="comment">    /**</span>
 <a name="l00237"></a>00237 <span class="comment">     * @return \e J<sub>n</sub> the dynamical form factors of the ellipsoid.</span>
@@ -293,50 +308,50 @@
 <a name="l00243"></a>00243 <span class="comment">     * normalized Legendre functions are used and the corresponding coefficient</span>
 <a name="l00244"></a>00244 <span class="comment">     * is <i>C</i><sub><i>n</i>0</sub> = -\e J<sub>n</sub> / sqrt(2 \e n + 1).</span>
 <a name="l00245"></a>00245 <span class="comment">     **********************************************************************/</span>
-<a name="l00246"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa52b03157eb0b199d331d6fca28a259a">00246</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DynamicalFormFactor(<span class="keywordtype">int</span> n = 2) <span class="keyword">const</span> throw()
+<a name="l00246"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa52b03157eb0b199d331d6fca28a259a">00246</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DynamicalFormFactor(<span class="keywordtype">int</span> n = 2) <span class="keyword">const</span> throw()
 <a name="l00247"></a>00247     { <span class="keywordflow">return</span> Init() ? ( n == 2 ? _J2 : Jn(n)) : Math::NaN<real>(); }
 <a name="l00248"></a>00248 <span class="comment"></span>
 <a name="l00249"></a>00249 <span class="comment">    /**</span>
 <a name="l00250"></a>00250 <span class="comment">     * @return \e omega the angular velocity of the ellipsoid</span>
 <a name="l00251"></a>00251 <span class="comment">     *   (rad s<sup>-1</sup>).  This is the value used in the constructor.</span>
 <a name="l00252"></a>00252 <span class="comment">     **********************************************************************/</span>
-<a name="l00253"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aefd6dfb7e6f806b63d099316dcc97f55">00253</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AngularVelocity() <span class="keyword">const</span> throw()
-<a name="l00254"></a>00254     { <span class="keywordflow">return</span> Init() ? _omega : Math::NaN<real>(); }
+<a name="l00253"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aefd6dfb7e6f806b63d099316dcc97f55">00253</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real AngularVelocity() <span class="keyword">const</span> throw()
+<a name="l00254"></a>00254     { <span class="keywordflow">return</span> Init() ? _omega : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00255"></a>00255 <span class="comment"></span>
 <a name="l00256"></a>00256 <span class="comment">    /**</span>
 <a name="l00257"></a>00257 <span class="comment">     * @return <i>f</i> the flattening of the ellipsoid (\e a - \e b)/\e a.</span>
 <a name="l00258"></a>00258 <span class="comment">     **********************************************************************/</span>
-<a name="l00259"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aba396954f43e623e755bdff7db7d850b">00259</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00260"></a>00260     { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
+<a name="l00259"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aba396954f43e623e755bdff7db7d850b">00259</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00260"></a>00260     { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00261"></a>00261 <span class="comment"></span>
 <a name="l00262"></a>00262 <span class="comment">    /**</span>
 <a name="l00263"></a>00263 <span class="comment">     * @return <i>gamma</i><sub>e</sub> the normal gravity at equator</span>
 <a name="l00264"></a>00264 <span class="comment">     *   (m s<sup>-2</sup>).</span>
 <a name="l00265"></a>00265 <span class="comment">     **********************************************************************/</span>
-<a name="l00266"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">00266</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EquatorialGravity() <span class="keyword">const</span> throw()
-<a name="l00267"></a>00267     { <span class="keywordflow">return</span> Init() ? _gammae : Math::NaN<real>(); }
+<a name="l00266"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">00266</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EquatorialGravity() <span class="keyword">const</span> throw()
+<a name="l00267"></a>00267     { <span class="keywordflow">return</span> Init() ? _gammae : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00268"></a>00268 <span class="comment"></span>
 <a name="l00269"></a>00269 <span class="comment">    /**</span>
 <a name="l00270"></a>00270 <span class="comment">     * @return <i>gamma</i><sub>p</sub> the normal gravity at poles</span>
 <a name="l00271"></a>00271 <span class="comment">     *   (m s<sup>-2</sup>).</span>
 <a name="l00272"></a>00272 <span class="comment">     **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">00273</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> PolarGravity() <span class="keyword">const</span> throw()
-<a name="l00274"></a>00274     { <span class="keywordflow">return</span> Init() ? _gammap : Math::NaN<real>(); }
+<a name="l00273"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">00273</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real PolarGravity() <span class="keyword">const</span> throw()
+<a name="l00274"></a>00274     { <span class="keywordflow">return</span> Init() ? _gammap : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00275"></a>00275 <span class="comment"></span>
 <a name="l00276"></a>00276 <span class="comment">    /**</span>
 <a name="l00277"></a>00277 <span class="comment">     * @return <i>f*</i> the gravity flattening</span>
 <a name="l00278"></a>00278 <span class="comment">     *   (<i>gamma</i><sub>p</sub> - <i>gamma</i><sub>e</sub>) /</span>
 <a name="l00279"></a>00279 <span class="comment">     *   <i>gamma</i><sub>e</sub>.</span>
 <a name="l00280"></a>00280 <span class="comment">     **********************************************************************/</span>
-<a name="l00281"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a7e9329f7b3120b7777a0c5be3ca424a7">00281</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityFlattening() <span class="keyword">const</span> throw()
-<a name="l00282"></a>00282     { <span class="keywordflow">return</span> Init() ? _fstar : Math::NaN<real>(); }
+<a name="l00281"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a7e9329f7b3120b7777a0c5be3ca424a7">00281</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real GravityFlattening() <span class="keyword">const</span> throw()
+<a name="l00282"></a>00282     { <span class="keywordflow">return</span> Init() ? _fstar : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00283"></a>00283 <span class="comment"></span>
 <a name="l00284"></a>00284 <span class="comment">    /**</span>
 <a name="l00285"></a>00285 <span class="comment">     * @return <i>U</i><sub>0</sub> the constant normal potential for the</span>
 <a name="l00286"></a>00286 <span class="comment">     *   surface of the ellipsoid (m<sup>2</sup> s<sup>-2</sup>).</span>
 <a name="l00287"></a>00287 <span class="comment">     **********************************************************************/</span>
-<a name="l00288"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a5bc3756dd7dbc82c07ef4afd1a182372">00288</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SurfacePotential() <span class="keyword">const</span> throw()
-<a name="l00289"></a>00289     { <span class="keywordflow">return</span> Init() ? _U0 : Math::NaN<real>(); }
+<a name="l00288"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a5bc3756dd7dbc82c07ef4afd1a182372">00288</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real SurfacePotential() <span class="keyword">const</span> throw()
+<a name="l00289"></a>00289     { <span class="keywordflow">return</span> Init() ? _U0 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
 <a name="l00290"></a>00290 <span class="comment"></span>
 <a name="l00291"></a>00291 <span class="comment">    /**</span>
 <a name="l00292"></a>00292 <span class="comment">     * @return the Geocentric object used by this instance.</span>
@@ -347,12 +362,12 @@
 <a name="l00297"></a>00297 <span class="comment">    /**</span>
 <a name="l00298"></a>00298 <span class="comment">     * A global instantiation of NormalGravity for the WGS84 ellipsoid.</span>
 <a name="l00299"></a>00299 <span class="comment">     **********************************************************************/</span>
-<a name="l00300"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">00300</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">WGS84</a>;
+<a name="l00300"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">00300</a>     <span class="keyword">static</span> <span class="keyword">const</span> NormalGravity <a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">WGS84</a>;
 <a name="l00301"></a>00301 <span class="comment"></span>
 <a name="l00302"></a>00302 <span class="comment">    /**</span>
 <a name="l00303"></a>00303 <span class="comment">     * A global instantiation of NormalGravity for the GRS80 ellipsoid.</span>
 <a name="l00304"></a>00304 <span class="comment">     **********************************************************************/</span>
-<a name="l00305"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">00305</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">GRS80</a>;
+<a name="l00305"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">00305</a>     <span class="keyword">static</span> <span class="keyword">const</span> NormalGravity <a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">GRS80</a>;
 <a name="l00306"></a>00306   };
 <a name="l00307"></a>00307 
 <a name="l00308"></a>00308 } <span class="comment">// namespace GeographicLib</span>
@@ -360,8 +375,13 @@
 <a name="l00310"></a>00310 <span class="preprocessor">#endif  // GEOGRAPHICLIB_NORMALGRAVITY_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/OSGB_8cpp.html b/doc/html/OSGB_8cpp.html
index 2f3f125..a2bae7c 100644
--- a/doc/html/OSGB_8cpp.html
+++ b/doc/html/OSGB_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: OSGB.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,17 +76,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">GEOGRAPHICLIB_OSGB_CPP</a>   "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">GEOGRAPHICLIB_OSGB_CPP</a>   "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
-<p>Copyright (c) Charles Karney (2010, 2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2010-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="OSGB_8cpp_source.html">OSGB.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -80,7 +93,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_OSGB_CPP   "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_OSGB_CPP   "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"</td>
         </tr>
       </table>
 </div>
@@ -91,8 +104,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/OSGB_8cpp_source.html b/doc/html/OSGB_8cpp_source.html
index 166eed4..e93490b 100644
--- a/doc/html/OSGB_8cpp_source.html
+++ b/doc/html/OSGB_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: OSGB.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file OSGB.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::OSGB class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010, 2011, 2012) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="OSGB_8hpp.html" title="Header for GeographicLib::OSGB class.">GeographicLib/OSGB.hpp</a>></span>
 <a name="l00011"></a>00011 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00012"></a>00012 
-<a name="l00013"></a><a class="code" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_OSGB_CPP "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"</span>
+<a name="l00013"></a><a class="code" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_OSGB_CPP "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">GEOGRAPHICLIB_OSGB_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">GEOGRAPHICLIB_OSGB_HPP</a>)
@@ -74,13 +89,13 @@
 <a name="l00025"></a>00025   <span class="keyword">const</span> TransverseMercator
 <a name="l00026"></a>00026   OSGB::OSGBTM_(MajorRadius(), Flattening(), CentralScale());
 <a name="l00027"></a>00027 
-<a name="l00028"></a>00028   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> OSGB::computenorthoffset() <span class="keywordflow">throw</span>() {
+<a name="l00028"></a>00028   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> OSGB::computenorthoffset() <span class="keywordflow">throw</span>() {
 <a name="l00029"></a>00029     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, y;
 <a name="l00030"></a>00030     OSGBTM_.Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), OriginLatitude(), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), x, y);
 <a name="l00031"></a>00031     <span class="keywordflow">return</span> FalseNorthing() - y;
 <a name="l00032"></a>00032   }
 <a name="l00033"></a>00033 
-<a name="l00034"></a>00034   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> OSGB::northoffset_ = computenorthoffset();
+<a name="l00034"></a>00034   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> OSGB::northoffset_ = computenorthoffset();
 <a name="l00035"></a>00035 
 <a name="l00036"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a0a79e8f2babae1eb0305a0e728fea8c8">00036</a>   <span class="keywordtype">void</span> OSGB::GridReference(real x, real y, <span class="keywordtype">int</span> prec, std::string& gridref) {
 <a name="l00037"></a>00037     CheckCoords(x, y);
@@ -207,8 +222,13 @@
 <a name="l00158"></a>00158 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/OSGB_8hpp.html b/doc/html/OSGB_8hpp.html
index 8a074c0..7273343 100644
--- a/doc/html/OSGB_8hpp.html
+++ b/doc/html/OSGB_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: OSGB.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,13 +84,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">GEOGRAPHICLIB_OSGB_HPP</a>   "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">GEOGRAPHICLIB_OSGB_HPP</a>   "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
@@ -88,7 +101,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_OSGB_HPP   "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_OSGB_HPP   "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"</td>
         </tr>
       </table>
 </div>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/OSGB_8hpp_source.html b/doc/html/OSGB_8hpp_source.html
index 2152046..8ae6724 100644
--- a/doc/html/OSGB_8hpp_source.html
+++ b/doc/html/OSGB_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: OSGB.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -58,7 +73,7 @@
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_OSGB_HPP)</span>
-<a name="l00011"></a><a class="code" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_OSGB_HPP "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"</span>
+<a name="l00011"></a><a class="code" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_OSGB_HPP "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"</span>
 <a name="l00012"></a>00012 <span class="preprocessor"></span>
 <a name="l00013"></a>00013 <span class="preprocessor">#include <string></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <sstream></span>
@@ -93,13 +108,13 @@
 <a name="l00043"></a>00043 <span class="comment">   * Example of use:</span>
 <a name="l00044"></a>00044 <span class="comment">   * \include example-OSGB.cpp</span>
 <a name="l00045"></a>00045 <span class="comment">   **********************************************************************/</span>
-<a name="l00046"></a><a class="code" href="classGeographicLib_1_1OSGB.html">00046</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> {
+<a name="l00046"></a>00046   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> OSGB {
 <a name="l00047"></a>00047   <span class="keyword">private</span>:
-<a name="l00048"></a>00048     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00048"></a>00048     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00049"></a>00049     <span class="keyword">static</span> <span class="keyword">const</span> std::string letters_;
 <a name="l00050"></a>00050     <span class="keyword">static</span> <span class="keyword">const</span> std::string digits_;
-<a name="l00051"></a>00051     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> OSGBTM_;
-<a name="l00052"></a>00052     <span class="keyword">static</span> <span class="keyword">const</span> real northoffset_;
+<a name="l00051"></a>00051     <span class="keyword">static</span> <span class="keyword">const</span> TransverseMercator OSGBTM_;
+<a name="l00052"></a>00052     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northoffset_;
 <a name="l00053"></a>00053     <span class="keyword">enum</span> {
 <a name="l00054"></a>00054       base_ = 10,
 <a name="l00055"></a>00055       tile_ = 100000,
@@ -114,9 +129,9 @@
 <a name="l00064"></a>00064       <span class="comment">// Maximum precision is um</span>
 <a name="l00065"></a>00065       maxprec_ = 5 + 6,
 <a name="l00066"></a>00066     };
-<a name="l00067"></a>00067     <span class="keyword">static</span> real computenorthoffset() <span class="keywordflow">throw</span>();
-<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(real x, real y);
-<a name="l00069"></a>00069     <a class="code" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a>();                     <span class="comment">// Disable constructor</span>
+<a name="l00067"></a>00067     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> computenorthoffset() <span class="keywordflow">throw</span>();
+<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y);
+<a name="l00069"></a>00069     OSGB();                     <span class="comment">// Disable constructor</span>
 <a name="l00070"></a>00070 
 <a name="l00071"></a>00071   <span class="keyword">public</span>:
 <a name="l00072"></a>00072 <span class="comment"></span>
@@ -229,7 +244,7 @@
 <a name="l00179"></a>00179 <span class="comment">     * 10^(9.48401603-10) m.  (The Airy 1830 value is returned because the OSGB</span>
 <a name="l00180"></a>00180 <span class="comment">     * projection is based on this ellipsoid.)</span>
 <a name="l00181"></a>00181 <span class="comment">     **********************************************************************/</span>
-<a name="l00182"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">00182</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() throw()
+<a name="l00182"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">00182</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() throw()
 <a name="l00183"></a>00183     <span class="comment">// result is about 6377563.3960320664406 m</span>
 <a name="l00184"></a>00184     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713) * std::pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.48401603L) - 1); }
 <a name="l00185"></a>00185 <span class="comment"></span>
@@ -241,55 +256,62 @@
 <a name="l00191"></a>00191 <span class="comment">     * 1/299.32496459...  (The Airy 1830 value is returned because the OSGB</span>
 <a name="l00192"></a>00192 <span class="comment">     * projection is based on this ellipsoid.)</span>
 <a name="l00193"></a>00193 <span class="comment">     **********************************************************************/</span>
-<a name="l00194"></a><a class="code" href="classGeographicLib_1_1OSGB.html#aae688ebd8c126f22517eaa0a01d659f8">00194</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() throw()
-<a name="l00195"></a>00195     { <span class="keywordflow">return</span>  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713 - 20853810) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713); }
+<a name="l00194"></a><a class="code" href="classGeographicLib_1_1OSGB.html#aae688ebd8c126f22517eaa0a01d659f8">00194</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() throw()
+<a name="l00195"></a>00195     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713 - 20853810) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713); }
 <a name="l00196"></a>00196 <span class="comment"></span>
-<a name="l00197"></a>00197 <span class="comment">    /**</span>
-<a name="l00198"></a>00198 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00199"></a>00199 <span class="comment">     * @return \e r the inverse flattening of the Airy 1830 ellipsoid.</span>
-<a name="l00200"></a>00200 <span class="comment">     **********************************************************************/</span>
-<a name="l00201"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">00201</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">InverseFlattening</a>() throw() { <span class="keywordflow">return</span> 1/Flattening(); }
-<a name="l00202"></a>00202 <span class="comment"></span>
-<a name="l00203"></a>00203 <span class="comment">    /**</span>
-<a name="l00204"></a>00204 <span class="comment">     * @return \e k0 central scale for the OSGB projection (0.9996012717).</span>
-<a name="l00205"></a>00205 <span class="comment">     **********************************************************************/</span>
-<a name="l00206"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a65210bfdcac362f393a8f81f28259ad0">00206</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> CentralScale() throw()
-<a name="l00207"></a>00207     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.9996012717L); }
-<a name="l00208"></a>00208 <span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment">    /**</span>
-<a name="l00210"></a>00210 <span class="comment">     * @return latitude of the origin for the OSGB projection (49 degrees).</span>
-<a name="l00211"></a>00211 <span class="comment">     **********************************************************************/</span>
-<a name="l00212"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">00212</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3 [...]
-<a name="l00213"></a>00213 <span class="comment"></span>
-<a name="l00214"></a>00214 <span class="comment">    /**</span>
-<a name="l00215"></a>00215 <span class="comment">     * @return longitude of the origin for the OSGB projection (-2 degrees).</span>
-<a name="l00216"></a>00216 <span class="comment">     **********************************************************************/</span>
-<a name="l00217"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">00217</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
-<a name="l00218"></a>00218 <span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment">    /**</span>
-<a name="l00220"></a>00220 <span class="comment">     * @return false northing the OSGB projection (-100000 meters).</span>
-<a name="l00221"></a>00221 <span class="comment">     **********************************************************************/</span>
-<a name="l00222"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">00222</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">FalseNorthing</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
-<a name="l00223"></a>00223 <span class="comment"></span>
-<a name="l00224"></a>00224 <span class="comment">    /**</span>
-<a name="l00225"></a>00225 <span class="comment">     * @return false easting the OSGB projection (400000 meters).</span>
-<a name="l00226"></a>00226 <span class="comment">     **********************************************************************/</span>
-<a name="l00227"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">00227</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">FalseEasting</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9 [...]
-<a name="l00228"></a>00228 <span class="comment">    ///@}</span>
-<a name="l00229"></a>00229 <span class="comment"></span>
-<a name="l00230"></a>00230   };
-<a name="l00231"></a>00231 
-<a name="l00232"></a>00232 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00197"></a>00197 <span class="comment">    /// \cond SKIP</span>
+<a name="l00198"></a>00198 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00199"></a>00199 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00200"></a>00200 <span class="comment">     * @return \e r the inverse flattening of the Airy 1830 ellipsoid.</span>
+<a name="l00201"></a>00201 <span class="comment">     **********************************************************************/</span>
+<a name="l00202"></a>00202     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() throw() { <span class="keywordflow">return</span> 1/Flattening(); }<span class="comment"></span>
+<a name="l00203"></a>00203 <span class="comment">    /// \endcond</span>
+<a name="l00204"></a>00204 <span class="comment"></span><span class="comment"></span>
+<a name="l00205"></a>00205 <span class="comment">    /**</span>
+<a name="l00206"></a>00206 <span class="comment">     * @return \e k0 central scale for the OSGB projection (0.9996012717).</span>
+<a name="l00207"></a>00207 <span class="comment">     **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a65210bfdcac362f393a8f81f28259ad0">00208</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real CentralScale() throw()
+<a name="l00209"></a>00209     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.9996012717L); }
+<a name="l00210"></a>00210 <span class="comment"></span>
+<a name="l00211"></a>00211 <span class="comment">    /**</span>
+<a name="l00212"></a>00212 <span class="comment">     * @return latitude of the origin for the OSGB projection (49 degrees).</span>
+<a name="l00213"></a>00213 <span class="comment">     **********************************************************************/</span>
+<a name="l00214"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">00214</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d4 [...]
+<a name="l00215"></a>00215 <span class="comment"></span>
+<a name="l00216"></a>00216 <span class="comment">    /**</span>
+<a name="l00217"></a>00217 <span class="comment">     * @return longitude of the origin for the OSGB projection (-2 degrees).</span>
+<a name="l00218"></a>00218 <span class="comment">     **********************************************************************/</span>
+<a name="l00219"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">00219</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d [...]
+<a name="l00220"></a>00220 <span class="comment"></span>
+<a name="l00221"></a>00221 <span class="comment">    /**</span>
+<a name="l00222"></a>00222 <span class="comment">     * @return false northing the OSGB projection (-100000 meters).</span>
+<a name="l00223"></a>00223 <span class="comment">     **********************************************************************/</span>
+<a name="l00224"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">00224</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">FalseNorthing</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46 [...]
+<a name="l00225"></a>00225 <span class="comment"></span>
+<a name="l00226"></a>00226 <span class="comment">    /**</span>
+<a name="l00227"></a>00227 <span class="comment">     * @return false easting the OSGB projection (400000 meters).</span>
+<a name="l00228"></a>00228 <span class="comment">     **********************************************************************/</span>
+<a name="l00229"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">00229</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">FalseEasting</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b [...]
+<a name="l00230"></a>00230 <span class="comment">    ///@}</span>
+<a name="l00231"></a>00231 <span class="comment"></span>
+<a name="l00232"></a>00232   };
 <a name="l00233"></a>00233 
-<a name="l00234"></a>00234 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00236"></a>00236 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00237"></a>00237 <span class="preprocessor"></span>
-<a name="l00238"></a>00238 <span class="preprocessor">#endif</span>
+<a name="l00234"></a>00234 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00235"></a>00235 
+<a name="l00236"></a>00236 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00237"></a>00237 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00238"></a>00238 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00239"></a>00239 <span class="preprocessor"></span>
+<a name="l00240"></a>00240 <span class="preprocessor">#endif</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Planimeter.1.html b/doc/html/Planimeter.1.html
index 4705c61..37d5415 100644
--- a/doc/html/Planimeter.1.html
+++ b/doc/html/Planimeter.1.html
@@ -43,8 +43,10 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>Planimeter</strong> [ <strong>-r</strong> ] [ <strong>-s</strong> ] [ <strong>-l</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -109,6 +111,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 coordinates, use the default ellipsoid, since the conversion of these
 coordinates to latitude and longitude uses the WGS84 parameters.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing.  For a given polygon, the last such string found will be
+appended to the output line (separated by a space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -134,8 +145,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/doc/html/Planimeter_8cpp.html b/doc/html/Planimeter_8cpp.html
index e9e2762..add05c6 100644
--- a/doc/html/Planimeter_8cpp.html
+++ b/doc/html/Planimeter_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Planimeter.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for measuring the area of geodesic polygons. </p>
-<p>Copyright (c) Charles Karney (2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2010-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o Planimeter \ <a class="el" href="Planimeter_8cpp.html" title="Command line utility for measuring the area of geodesic polygons.">Planimeter.cpp</a> \ ../src/DMS.cpp \ ../src/GeoCoords.cpp \ ../src/Geodesic.cpp \ ../src/GeodesicLine.cpp \ ../src/MGRS.cpp \ ../src/PolarStereographic.cpp \ ../src/PolygonArea.cpp \ ../src/TransverseMercator.cpp \ ../src/UTMUPS.cpp</p>
 <p>See the <a href="Planimeter.1.html">man page</a> for usage information. </p>
 
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Planimeter_8cpp_source.html#l00037">37</a> of file <a class="el" href="Planimeter_8cpp_source.html">Planimeter.cpp</a>.</p>
 
-<p>References <a class="el" href="PolygonArea_8cpp_source.html#l00023">GeographicLib::PolygonArea::AddPoint()</a>, <a class="el" href="PolygonArea_8hpp_source.html#l00107">GeographicLib::PolygonArea::Clear()</a>, <a class="el" href="PolygonArea_8cpp_source.html#l00041">GeographicLib::PolygonArea::Compute()</a>, <a class="el" href="Math_8hpp_source.html#l00363">GeographicLib::Math::isnan()</a>, and <a class="el" href="GeoCoords_8cpp_source.html#l00027">GeographicLib::GeoCoords::Reset()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00363">GeographicLib::Math::isnan()</a>, <a class="el" href="PolygonArea_8cpp_source.html#l00041">GeographicLib::PolygonArea::Compute()</a>, <a class="el" href="PolygonArea_8hpp_source.html#l00110">GeographicLib::PolygonArea::Clear()</a>, and <a class="el" href="PolygonArea_8cpp_source.html#l00023">GeographicLib::PolygonArea::AddPoint()</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Planimeter_8cpp_source.html b/doc/html/Planimeter_8cpp_source.html
index 52f6fef..c0f7f90 100644
--- a/doc/html/Planimeter_8cpp_source.html
+++ b/doc/html/Planimeter_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Planimeter.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,7 +66,7 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file Planimeter.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for measuring the area of geodesic polygons</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010, 2011) <charles at karney.com> and licensed</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed</span>
 <a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
@@ -86,144 +101,170 @@
 <a name="l00037"></a><a class="code" href="Planimeter_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00037</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00038"></a>00038   <span class="keywordflow">try</span> {
 <a name="l00039"></a>00039     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00040"></a>00040     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00040"></a>00040     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00041"></a>00041     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00042"></a>00042       a = Constants::WGS84_a<real>(),
+<a name="l00042"></a>00042       a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
 <a name="l00043"></a>00043       f = Constants::WGS84_f<real>();
 <a name="l00044"></a>00044     <span class="keywordtype">bool</span> reverse = <span class="keyword">false</span>, sign = <span class="keyword">true</span>, polyline = <span class="keyword">false</span>;
-<a name="l00045"></a>00045     std::string istring, ifile, ofile;
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00048"></a>00048       std::string arg(argv[m]);
-<a name="l00049"></a>00049       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00050"></a>00050         reverse = !reverse;
-<a name="l00051"></a>00051       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
-<a name="l00052"></a>00052         sign = !sign;
-<a name="l00053"></a>00053       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>)
-<a name="l00054"></a>00054         polyline = !polyline;
-<a name="l00055"></a>00055       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00056"></a>00056         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00057"></a>00057         <span class="keywordflow">try</span> {
-<a name="l00058"></a>00058           a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00059"></a>00059           f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00060"></a>00060         }
-<a name="l00061"></a>00061         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00062"></a>00062           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00063"></a>00063           <span class="keywordflow">return</span> 1;
-<a name="l00064"></a>00064         }
-<a name="l00065"></a>00065         m += 2;
-<a name="l00066"></a>00066       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00067"></a>00067         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00068"></a>00068         istring = argv[m];
-<a name="l00069"></a>00069       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00070"></a>00070         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00071"></a>00071         ifile = argv[m];
-<a name="l00072"></a>00072       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00073"></a>00073         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00074"></a>00074         ofile = argv[m];
-<a name="l00075"></a>00075       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00076"></a>00076         std::cout
-<a name="l00077"></a>00077           << argv[0]
-<a name="l00078"></a>00078           << <span class="stringliteral">": $Id: 9e86fcfa71ff796f3ac3b4395f565456f2ae86eb $\n"</span>
-<a name="l00079"></a>00079           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00080"></a>00080         <span class="keywordflow">return</span> 0;
-<a name="l00081"></a>00081       } <span class="keywordflow">else</span>
-<a name="l00082"></a>00082         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00083"></a>00083     }
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00086"></a>00086       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00087"></a>00087       <span class="keywordflow">return</span> 1;
-<a name="l00088"></a>00088     }
-<a name="l00089"></a>00089     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00090"></a>00090     std::ifstream infile;
-<a name="l00091"></a>00091     std::istringstream instring;
-<a name="l00092"></a>00092     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00093"></a>00093       infile.open(ifile.c_str());
-<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00095"></a>00095         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00096"></a>00096         <span class="keywordflow">return</span> 1;
-<a name="l00097"></a>00097       }
-<a name="l00098"></a>00098     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00099"></a>00099       std::string::size_type m = 0;
-<a name="l00100"></a>00100       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00101"></a>00101         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00102"></a>00102         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00103"></a>00103           <span class="keywordflow">break</span>;
-<a name="l00104"></a>00104         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00105"></a>00105       }
-<a name="l00106"></a>00106       instring.str(istring);
-<a name="l00107"></a>00107     }
-<a name="l00108"></a>00108     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00109"></a>00109       (!istring.empty() ? &instring : &std::cin);
-<a name="l00110"></a>00110 
-<a name="l00111"></a>00111     std::ofstream outfile;
-<a name="l00112"></a>00112     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00113"></a>00113     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00114"></a>00114       outfile.open(ofile.c_str());
-<a name="l00115"></a>00115       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00116"></a>00116         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00117"></a>00117         <span class="keywordflow">return</span> 1;
-<a name="l00118"></a>00118       }
-<a name="l00119"></a>00119     }
-<a name="l00120"></a>00120     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00045"></a>00045     std::string istring, ifile, ofile, cdelim;
+<a name="l00046"></a>00046     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00049"></a>00049       std::string arg(argv[m]);
+<a name="l00050"></a>00050       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00051"></a>00051         reverse = !reverse;
+<a name="l00052"></a>00052       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
+<a name="l00053"></a>00053         sign = !sign;
+<a name="l00054"></a>00054       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>)
+<a name="l00055"></a>00055         polyline = !polyline;
+<a name="l00056"></a>00056       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00057"></a>00057         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00058"></a>00058         <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059           a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00060"></a>00060           f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00061"></a>00061         }
+<a name="l00062"></a>00062         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00063"></a>00063           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00064"></a>00064           <span class="keywordflow">return</span> 1;
+<a name="l00065"></a>00065         }
+<a name="l00066"></a>00066         m += 2;
+<a name="l00067"></a>00067       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00068"></a>00068         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00069"></a>00069         istring = argv[m];
+<a name="l00070"></a>00070       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00071"></a>00071         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00072"></a>00072         ifile = argv[m];
+<a name="l00073"></a>00073       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00074"></a>00074         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00075"></a>00075         ofile = argv[m];
+<a name="l00076"></a>00076       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00077"></a>00077         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00078"></a>00078         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00079"></a>00079           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00080"></a>00080           <span class="keywordflow">return</span> 1;
+<a name="l00081"></a>00081         }
+<a name="l00082"></a>00082         lsep = argv[m][0];
+<a name="l00083"></a>00083       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00084"></a>00084         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00085"></a>00085         cdelim = argv[m];
+<a name="l00086"></a>00086       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00087"></a>00087         std::cout
+<a name="l00088"></a>00088           << argv[0]
+<a name="l00089"></a>00089           << <span class="stringliteral">": $Id: dbb8a9a0d79f172256044e72f65ebc667801eeac $\n"</span>
+<a name="l00090"></a>00090           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00091"></a>00091         <span class="keywordflow">return</span> 0;
+<a name="l00092"></a>00092       } <span class="keywordflow">else</span>
+<a name="l00093"></a>00093         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00094"></a>00094     }
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00097"></a>00097       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00098"></a>00098       <span class="keywordflow">return</span> 1;
+<a name="l00099"></a>00099     }
+<a name="l00100"></a>00100     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00101"></a>00101     std::ifstream infile;
+<a name="l00102"></a>00102     std::istringstream instring;
+<a name="l00103"></a>00103     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00104"></a>00104       infile.open(ifile.c_str());
+<a name="l00105"></a>00105       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00106"></a>00106         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00107"></a>00107         <span class="keywordflow">return</span> 1;
+<a name="l00108"></a>00108       }
+<a name="l00109"></a>00109     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00110"></a>00110       std::string::size_type m = 0;
+<a name="l00111"></a>00111       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00112"></a>00112         m = istring.find(lsep, m);
+<a name="l00113"></a>00113         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00114"></a>00114           <span class="keywordflow">break</span>;
+<a name="l00115"></a>00115         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00116"></a>00116       }
+<a name="l00117"></a>00117       instring.str(istring);
+<a name="l00118"></a>00118     }
+<a name="l00119"></a>00119     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00120"></a>00120       (!istring.empty() ? &instring : &std::cin);
 <a name="l00121"></a>00121 
-<a name="l00122"></a>00122     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
-<a name="l00123"></a>00123     <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> poly(geod, polyline);
-<a name="l00124"></a>00124     <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
-<a name="l00125"></a>00125 
-<a name="l00126"></a>00126     std::string s;
-<a name="l00127"></a>00127     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> perimeter, area;
-<a name="l00128"></a>00128     <span class="keywordtype">unsigned</span> num;
-<a name="l00129"></a>00129     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00130"></a>00130       <span class="keywordtype">bool</span> endpoly = s.empty();
-<a name="l00131"></a>00131       <span class="keywordflow">if</span> (!endpoly) {
-<a name="l00132"></a>00132         <span class="keywordflow">try</span> {
-<a name="l00133"></a>00133           p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s);
-<a name="l00134"></a>00134           <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(p.Latitude()) || <a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(p.Longitude()))
-<a name="l00135"></a>00135             endpoly = <span class="keyword">true</span>;
-<a name="l00136"></a>00136         }
-<a name="l00137"></a>00137         <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>&) {
-<a name="l00138"></a>00138           endpoly = <span class="keyword">true</span>;
-<a name="l00139"></a>00139         }
-<a name="l00140"></a>00140       }
-<a name="l00141"></a>00141       <span class="keywordflow">if</span> (endpoly) {
-<a name="l00142"></a>00142         num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
-<a name="l00143"></a>00143         <span class="keywordflow">if</span> (num > 0) {
-<a name="l00144"></a>00144           *output << num << <span class="stringliteral">" "</span>
-<a name="l00145"></a>00145                   << Utility::str<real>(perimeter, 8);
-<a name="l00146"></a>00146           <span class="keywordflow">if</span> (!polyline)
-<a name="l00147"></a>00147             *output << <span class="stringliteral">" "</span> << Utility::str<real>(area, 3);
-<a name="l00148"></a>00148           *output << <span class="stringliteral">"\n"</span>;
-<a name="l00149"></a>00149         }
-<a name="l00150"></a>00150         poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
-<a name="l00151"></a>00151       } <span class="keywordflow">else</span>
-<a name="l00152"></a>00152         poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#acfec56f0e136a534192e1e71589299f1">AddPoint</a>(p.Latitude(), p.Longitude());
-<a name="l00153"></a>00153     }
-<a name="l00154"></a>00154     num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
-<a name="l00155"></a>00155     <span class="keywordflow">if</span> (num > 0) {
-<a name="l00156"></a>00156       *output << num << <span class="stringliteral">" "</span>
-<a name="l00157"></a>00157               << Utility::str<real>(perimeter, 8);
-<a name="l00158"></a>00158       <span class="keywordflow">if</span> (!polyline)
-<a name="l00159"></a>00159         *output << <span class="stringliteral">" "</span> << Utility::str<real>(area, 3);
-<a name="l00160"></a>00160       *output << <span class="stringliteral">"\n"</span>;
-<a name="l00161"></a>00161     }
-<a name="l00162"></a>00162     poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
-<a name="l00163"></a>00163     <span class="keywordflow">return</span> 0;
-<a name="l00164"></a>00164   }
-<a name="l00165"></a>00165   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00166"></a>00166     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00167"></a>00167     <span class="keywordflow">return</span> 1;
-<a name="l00168"></a>00168   }
-<a name="l00169"></a>00169   <span class="keywordflow">catch</span> (...) {
-<a name="l00170"></a>00170     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00171"></a>00171     <span class="keywordflow">return</span> 1;
-<a name="l00172"></a>00172   }
-<a name="l00173"></a>00173 }
+<a name="l00122"></a>00122     std::ofstream outfile;
+<a name="l00123"></a>00123     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00124"></a>00124     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00125"></a>00125       outfile.open(ofile.c_str());
+<a name="l00126"></a>00126       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00127"></a>00127         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00128"></a>00128         <span class="keywordflow">return</span> 1;
+<a name="l00129"></a>00129       }
+<a name="l00130"></a>00130     }
+<a name="l00131"></a>00131     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
+<a name="l00134"></a>00134     <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> poly(geod, polyline);
+<a name="l00135"></a>00135     <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
+<a name="l00136"></a>00136 
+<a name="l00137"></a>00137     std::string s;
+<a name="l00138"></a>00138     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> perimeter, area;
+<a name="l00139"></a>00139     <span class="keywordtype">unsigned</span> num;
+<a name="l00140"></a>00140     std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00141"></a>00141     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00142"></a>00142       <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00143"></a>00143         std::string::size_type m = s.find(cdelim);
+<a name="l00144"></a>00144         <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00145"></a>00145           eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00146"></a>00146           s = s.substr(0, m);
+<a name="l00147"></a>00147         }
+<a name="l00148"></a>00148       }
+<a name="l00149"></a>00149       <span class="keywordtype">bool</span> endpoly = s.empty();
+<a name="l00150"></a>00150       <span class="keywordflow">if</span> (!endpoly) {
+<a name="l00151"></a>00151         <span class="keywordflow">try</span> {
+<a name="l00152"></a>00152           p.Reset(s);
+<a name="l00153"></a>00153           <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(p.Latitude()) || <a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(p.Longitude()))
+<a name="l00154"></a>00154             endpoly = <span class="keyword">true</span>;
+<a name="l00155"></a>00155         }
+<a name="l00156"></a>00156         <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>&) {
+<a name="l00157"></a>00157           endpoly = <span class="keyword">true</span>;
+<a name="l00158"></a>00158         }
+<a name="l00159"></a>00159       }
+<a name="l00160"></a>00160       <span class="keywordflow">if</span> (endpoly) {
+<a name="l00161"></a>00161         num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
+<a name="l00162"></a>00162         <span class="keywordflow">if</span> (num > 0) {
+<a name="l00163"></a>00163           *output << num << <span class="stringliteral">" "</span>
+<a name="l00164"></a>00164                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(perimeter, 8);
+<a name="l00165"></a>00165           <span class="keywordflow">if</span> (!polyline)
+<a name="l00166"></a>00166             *output << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(area, 3);
+<a name="l00167"></a>00167           *output << eol;
+<a name="l00168"></a>00168         }
+<a name="l00169"></a>00169         poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
+<a name="l00170"></a>00170         eol = <span class="stringliteral">"\n"</span>;
+<a name="l00171"></a>00171       } <span class="keywordflow">else</span>
+<a name="l00172"></a>00172         poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#acfec56f0e136a534192e1e71589299f1">AddPoint</a>(p.Latitude(), p.Longitude());
+<a name="l00173"></a>00173     }
+<a name="l00174"></a>00174     num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
+<a name="l00175"></a>00175     <span class="keywordflow">if</span> (num > 0) {
+<a name="l00176"></a>00176       *output << num << <span class="stringliteral">" "</span>
+<a name="l00177"></a>00177               << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(perimeter, 8);
+<a name="l00178"></a>00178       <span class="keywordflow">if</span> (!polyline)
+<a name="l00179"></a>00179         *output << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(area, 3);
+<a name="l00180"></a>00180       *output << eol;
+<a name="l00181"></a>00181     }
+<a name="l00182"></a>00182     poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
+<a name="l00183"></a>00183     eol = <span class="stringliteral">"\n"</span>;
+<a name="l00184"></a>00184     <span class="keywordflow">return</span> 0;
+<a name="l00185"></a>00185   }
+<a name="l00186"></a>00186   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00187"></a>00187     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00188"></a>00188     <span class="keywordflow">return</span> 1;
+<a name="l00189"></a>00189   }
+<a name="l00190"></a>00190   <span class="keywordflow">catch</span> (...) {
+<a name="l00191"></a>00191     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00192"></a>00192     <span class="keywordflow">return</span> 1;
+<a name="l00193"></a>00193   }
+<a name="l00194"></a>00194 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolarStereographic_8cpp.html b/doc/html/PolarStereographic_8cpp.html
index 5ec27eb..117622e 100644
--- a/doc/html/PolarStereographic_8cpp.html
+++ b/doc/html/PolarStereographic_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolarStereographic.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP</a>   "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP</a>   "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="PolarStereographic_8cpp_source.html">PolarStereographic.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP   "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP   "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"</td>
         </tr>
       </table>
 </div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolarStereographic_8cpp_source.html b/doc/html/PolarStereographic_8cpp_source.html
index 1f1ea27..a15928e 100644
--- a/doc/html/PolarStereographic_8cpp_source.html
+++ b/doc/html/PolarStereographic_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolarStereographic.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file PolarStereographic.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::PolarStereographic class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="PolarStereographic_8hpp.html" title="Header for GeographicLib::PolarStereographic class.">GeographicLib/PolarStereographic.hpp</a>></span>
 <a name="l00011"></a>00011 
 <a name="l00012"></a><a class="code" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">  "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"</span>
 <a name="l00014"></a>00014 <span class="preprocessor"></span>
 <a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP</a>)
 <a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</a>)
@@ -68,10 +83,10 @@
 <a name="l00019"></a>00019 
 <a name="l00020"></a>00020   <span class="keyword">using namespace </span>std;
 <a name="l00021"></a>00021 
-<a name="l00022"></a>00022   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> PolarStereographic::tol_ =
+<a name="l00022"></a>00022   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> PolarStereographic::tol_ =
 <a name="l00023"></a>00023     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1)*sqrt(numeric_limits<real>::epsilon());
 <a name="l00024"></a>00024   <span class="comment">// Overflow value s.t. atan(overflow_) = pi/2</span>
-<a name="l00025"></a>00025   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> PolarStereographic::overflow_ =
+<a name="l00025"></a>00025   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> PolarStereographic::overflow_ =
 <a name="l00026"></a>00026     1 / Math::sq(numeric_limits<real>::epsilon());
 <a name="l00027"></a>00027 
 <a name="l00028"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a170d21f9c7a2e922c57fc83a44ea3dfa">00028</a>   PolarStereographic::PolarStereographic(real a, real f, real k0)
@@ -84,11 +99,11 @@
 <a name="l00035"></a>00035     , _c( (1 - _f) * _Cx )
 <a name="l00036"></a>00036     , _k0(k0)
 <a name="l00037"></a>00037   {
-<a name="l00038"></a>00038     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00038"></a>00038     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00039"></a>00039       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00040"></a>00040     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00040"></a>00040     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00041"></a>00041       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00042"></a>00042     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_k0) && _k0 > 0))
+<a name="l00042"></a>00042     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_k0) && _k0 > 0))
 <a name="l00043"></a>00043       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00044"></a>00044   }
 <a name="l00045"></a>00045 
@@ -123,19 +138,19 @@
 <a name="l00074"></a>00074     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00075"></a>00075     lat *= northp ? 1 : -1;
 <a name="l00076"></a>00076     real
-<a name="l00077"></a>00077       phi = lat * Math::degree<real>(),
+<a name="l00077"></a>00077       phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00078"></a>00078       tau = lat != -90 ? tanx(phi) : -overflow_,
-<a name="l00079"></a>00079       secphi = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00079"></a>00079       secphi = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
 <a name="l00080"></a>00080       sig = sinh( eatanhe(tau / secphi) ),
-<a name="l00081"></a>00081       taup = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi,
-<a name="l00082"></a>00082       rho =  <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup) + abs(taup);
+<a name="l00081"></a>00081       taup = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi,
+<a name="l00082"></a>00082       rho = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup) + abs(taup);
 <a name="l00083"></a>00083     rho = taup >= 0 ? (lat != 90 ? 1/rho : 0) : rho;
 <a name="l00084"></a>00084     rho *= 2 * _k0 * _a / _c;
-<a name="l00085"></a>00085     k = lat != 90 ? (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(secphi)) :
+<a name="l00085"></a>00085     k = lat != 90 ? (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(secphi)) :
 <a name="l00086"></a>00086       _k0;
 <a name="l00087"></a>00087     lon = lon >= 180 ? lon - 360 : (lon < -180 ? lon + 360 : lon);
 <a name="l00088"></a>00088     real
-<a name="l00089"></a>00089       lam = lon * Math::degree<real>();
+<a name="l00089"></a>00089       lam = lon * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00090"></a>00090     x = rho * (lon == -180 ? 0 : sin(lam));
 <a name="l00091"></a>00091     y = (northp ? -rho : rho) * (abs(lon) == 90 ? 0 : cos(lam));
 <a name="l00092"></a>00092     gamma = northp ? lon : -lon;
@@ -145,7 +160,7 @@
 <a name="l00096"></a>00096                                    real& lat, real& lon, real& gamma, real& k)
 <a name="l00097"></a>00097     <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00098"></a>00098     real
-<a name="l00099"></a>00099       rho = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(x, y),
+<a name="l00099"></a>00099       rho = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(x, y),
 <a name="l00100"></a>00100       t = rho / (2 * _k0 * _a / _c),
 <a name="l00101"></a>00101       taup = (1 / t - t) / 2,
 <a name="l00102"></a>00102       tau = taup * _Cx,
@@ -153,27 +168,27 @@
 <a name="l00104"></a>00104     <span class="comment">// min iterations = 1, max iterations = 2; mean = 1.99</span>
 <a name="l00105"></a>00105     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < numit_; ++i) {
 <a name="l00106"></a>00106       real
-<a name="l00107"></a>00107         tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00107"></a>00107         tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
 <a name="l00108"></a>00108         sig = sinh( eatanhe( tau / tau1 ) ),
-<a name="l00109"></a>00109         taupa = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
-<a name="l00110"></a>00110         dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau)) /
-<a name="l00111"></a>00111         ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
+<a name="l00109"></a>00109         taupa = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
+<a name="l00110"></a>00110         dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau)) /
+<a name="l00111"></a>00111         ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
 <a name="l00112"></a>00112       tau += dtau;
 <a name="l00113"></a>00113       <span class="keywordflow">if</span> (!(abs(dtau) >= stol))
 <a name="l00114"></a>00114         <span class="keywordflow">break</span>;
 <a name="l00115"></a>00115     }
 <a name="l00116"></a>00116     real
 <a name="l00117"></a>00117       phi = atan(tau),
-<a name="l00118"></a>00118       secphi = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau);
+<a name="l00118"></a>00118       secphi = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau);
 <a name="l00119"></a>00119     k = rho != 0 ?
-<a name="l00120"></a>00120       (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(secphi)) : _k0;
+<a name="l00120"></a>00120       (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(secphi)) : _k0;
 <a name="l00121"></a>00121     lat = (northp ? 1 : -1) * (rho != 0 ? phi / Math::degree<real>() : 90);
-<a name="l00122"></a>00122     lon = -atan2( -x, northp ? -y : y ) / Math::degree<real>();
+<a name="l00122"></a>00122     lon = -atan2( -x, northp ? -y : y ) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00123"></a>00123     gamma = northp ? lon : -lon;
 <a name="l00124"></a>00124   }
 <a name="l00125"></a>00125 
 <a name="l00126"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">00126</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">PolarStereographic::SetScale</a>(real lat, real k) {
-<a name="l00127"></a>00127     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k) && k > 0))
+<a name="l00127"></a>00127     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k) && k > 0))
 <a name="l00128"></a>00128       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00129"></a>00129     <span class="keywordflow">if</span> (!(-90 < lat && lat <= 90))
 <a name="l00130"></a>00130       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude must be in (-90d, 90d]"</span>);
@@ -186,8 +201,13 @@
 <a name="l00137"></a>00137 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolarStereographic_8hpp.html b/doc/html/PolarStereographic_8hpp.html
index 11e679b..e1e18d7 100644
--- a/doc/html/PolarStereographic_8hpp.html
+++ b/doc/html/PolarStereographic_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolarStereographic.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,17 +81,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</a>   "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</a>   "$Id: 07add8492c46e42012007a8738060abc902a5504 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP   "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP   "$Id: 07add8492c46e42012007a8738060abc902a5504 $"</td>
         </tr>
       </table>
 </div>
@@ -96,8 +109,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolarStereographic_8hpp_source.html b/doc/html/PolarStereographic_8hpp_source.html
index 28b836b..00a4664 100644
--- a/doc/html/PolarStereographic_8hpp_source.html
+++ b/doc/html/PolarStereographic_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolarStereographic.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file PolarStereographic.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::PolarStereographic class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP)</span>
 <a name="l00011"></a><a class="code" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 07add8492c46e42012007a8738060abc902a5504 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 
@@ -80,25 +95,25 @@
 <a name="l00030"></a>00030 <span class="comment">   * Example of use:</span>
 <a name="l00031"></a>00031 <span class="comment">   * \include example-PolarStereographic.cpp</span>
 <a name="l00032"></a>00032 <span class="comment">   **********************************************************************/</span>
-<a name="l00033"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html">00033</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> {
+<a name="l00033"></a>00033   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> PolarStereographic {
 <a name="l00034"></a>00034   <span class="keyword">private</span>:
-<a name="l00035"></a>00035     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00035"></a>00035     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00036"></a>00036     <span class="comment">// _Cx used to be _C but g++ 3.4 has a macro of that name</span>
-<a name="l00037"></a>00037     real _a, _f, _e2, _e, _e2m, _Cx, _c;
-<a name="l00038"></a>00038     real _k0;
-<a name="l00039"></a>00039     <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00040"></a>00040     <span class="keyword">static</span> <span class="keyword">const</span> real overflow_;
+<a name="l00037"></a>00037     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _e2, _e, _e2m, _Cx, _c;
+<a name="l00038"></a>00038     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _k0;
+<a name="l00039"></a>00039     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00040"></a>00040     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> overflow_;
 <a name="l00041"></a>00041     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
 <a name="l00042"></a>00042     <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
-<a name="l00043"></a>00043     <span class="keyword">static</span> <span class="keyword">inline</span> real tanx(real x) <span class="keywordflow">throw</span>() {
-<a name="l00044"></a>00044       real t = std::tan(x);
+<a name="l00043"></a>00043     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tanx(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00044"></a>00044       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = std::tan(x);
 <a name="l00045"></a>00045       <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
 <a name="l00046"></a>00046       <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
 <a name="l00047"></a>00047     }
 <a name="l00048"></a>00048     <span class="comment">// Return e * atanh(e * x) for f >= 0, else return</span>
 <a name="l00049"></a>00049     <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) for f < 0</span>
-<a name="l00050"></a>00050     <span class="keyword">inline</span> real eatanhe(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00051"></a>00051       <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
+<a name="l00050"></a>00050     <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00051"></a>00051       <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
 <a name="l00052"></a>00052     }
 <a name="l00053"></a>00053   <span class="keyword">public</span>:
 <a name="l00054"></a>00054 <span class="comment"></span>
@@ -114,7 +129,7 @@
 <a name="l00064"></a>00064 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid is</span>
 <a name="l00065"></a>00065 <span class="comment">     * not positive \e a or if \e k0 is not positive.</span>
 <a name="l00066"></a>00066 <span class="comment">     **********************************************************************/</span>
-<a name="l00067"></a>00067     <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a>(real a, real f, real k0);
+<a name="l00067"></a>00067     PolarStereographic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
 <a name="l00068"></a>00068 <span class="comment"></span>
 <a name="l00069"></a>00069 <span class="comment">    /**</span>
 <a name="l00070"></a>00070 <span class="comment">     * Set the scale for the projection.</span>
@@ -126,7 +141,7 @@
 <a name="l00076"></a>00076 <span class="comment">     * thrown if \e k is not positive or if \e lat is not in the range (-90,</span>
 <a name="l00077"></a>00077 <span class="comment">     * 90].</span>
 <a name="l00078"></a>00078 <span class="comment">     **********************************************************************/</span>
-<a name="l00079"></a>00079     <span class="keywordtype">void</span> SetScale(real lat, real k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
+<a name="l00079"></a>00079     <span class="keywordtype">void</span> SetScale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
 <a name="l00080"></a>00080 <span class="comment"></span>
 <a name="l00081"></a>00081 <span class="comment">    /**</span>
 <a name="l00082"></a>00082 <span class="comment">     * Forward projection, from geographic to polar stereographic.</span>
@@ -144,8 +159,8 @@
 <a name="l00094"></a>00094 <span class="comment">     * (-90, 90] for \e northp = true and in the range [-90, 90) for \e northp</span>
 <a name="l00095"></a>00095 <span class="comment">     * = false; \e lon should be in the range [-180, 360].</span>
 <a name="l00096"></a>00096 <span class="comment">     **********************************************************************/</span>
-<a name="l00097"></a>00097     <span class="keywordtype">void</span> Forward(<span class="keywordtype">bool</span> northp, real lat, real lon,
-<a name="l00098"></a>00098                  real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00097"></a>00097     <span class="keywordtype">void</span> Forward(<span class="keywordtype">bool</span> northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00098"></a>00098                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00099"></a>00099 <span class="comment"></span>
 <a name="l00100"></a>00100 <span class="comment">    /**</span>
 <a name="l00101"></a>00101 <span class="comment">     * Reverse projection, from polar stereographic to geographic.</span>
@@ -162,8 +177,8 @@
 <a name="l00112"></a>00112 <span class="comment">     * No false easting or northing is added.  The value of \e lon returned is</span>
 <a name="l00113"></a>00113 <span class="comment">     * in the range [-180, 180).</span>
 <a name="l00114"></a>00114 <span class="comment">     **********************************************************************/</span>
-<a name="l00115"></a>00115     <span class="keywordtype">void</span> Reverse(<span class="keywordtype">bool</span> northp, real x, real y,
-<a name="l00116"></a>00116                  real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00115"></a>00115     <span class="keywordtype">void</span> Reverse(<span class="keywordtype">bool</span> northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00116"></a>00116                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00117"></a>00117 <span class="comment"></span>
 <a name="l00118"></a>00118 <span class="comment">    /**</span>
 <a name="l00119"></a>00119 <span class="comment">     * PolarStereographic::Forward without returning the convergence and scale.</span>
@@ -190,43 +205,50 @@
 <a name="l00140"></a>00140 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
 <a name="l00141"></a>00141 <span class="comment">     *   the value used in the constructor.</span>
 <a name="l00142"></a>00142 <span class="comment">     **********************************************************************/</span>
-<a name="l00143"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">00143</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00143"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">00143</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
 <a name="l00144"></a>00144 <span class="comment"></span>
 <a name="l00145"></a>00145 <span class="comment">    /**</span>
 <a name="l00146"></a>00146 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
 <a name="l00147"></a>00147 <span class="comment">     *   the constructor.</span>
 <a name="l00148"></a>00148 <span class="comment">     **********************************************************************/</span>
-<a name="l00149"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">00149</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00149"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">00149</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
 <a name="l00150"></a>00150 <span class="comment"></span>
-<a name="l00151"></a>00151 <span class="comment">    /**</span>
-<a name="l00152"></a>00152 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00153"></a>00153 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00154"></a>00154 <span class="comment">     **********************************************************************/</span>
-<a name="l00155"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">00155</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00156"></a>00156 <span class="comment"></span>
-<a name="l00157"></a>00157 <span class="comment">    /**</span>
-<a name="l00158"></a>00158 <span class="comment">     * The central scale for the projection.  This is the value of \e k0 used</span>
-<a name="l00159"></a>00159 <span class="comment">     * in the constructor and is the scale at the pole unless overridden by</span>
-<a name="l00160"></a>00160 <span class="comment">     * PolarStereographic::SetScale.</span>
-<a name="l00161"></a>00161 <span class="comment">     **********************************************************************/</span>
-<a name="l00162"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">00162</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00163"></a>00163 <span class="comment">    ///@}</span>
-<a name="l00164"></a>00164 <span class="comment"></span><span class="comment"></span>
-<a name="l00165"></a>00165 <span class="comment">    /**</span>
-<a name="l00166"></a>00166 <span class="comment">     * A global instantiation of PolarStereographic with the WGS84 ellipsoid</span>
-<a name="l00167"></a>00167 <span class="comment">     * and the UPS scale factor.  However, unlike UPS, no false easting or</span>
-<a name="l00168"></a>00168 <span class="comment">     * northing is added.</span>
-<a name="l00169"></a>00169 <span class="comment">     **********************************************************************/</span>
-<a name="l00170"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">00170</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">UPS</a>;
-<a name="l00171"></a>00171   };
-<a name="l00172"></a>00172 
-<a name="l00173"></a>00173 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00151"></a>00151 <span class="comment">    /// \cond SKIP</span>
+<a name="l00152"></a>00152 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00153"></a>00153 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00154"></a>00154 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00155"></a>00155 <span class="comment">     **********************************************************************/</span>
+<a name="l00156"></a>00156     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment">    /// \endcond</span>
+<a name="l00158"></a>00158 <span class="comment"></span><span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment">    /**</span>
+<a name="l00160"></a>00160 <span class="comment">     * The central scale for the projection.  This is the value of \e k0 used</span>
+<a name="l00161"></a>00161 <span class="comment">     * in the constructor and is the scale at the pole unless overridden by</span>
+<a name="l00162"></a>00162 <span class="comment">     * PolarStereographic::SetScale.</span>
+<a name="l00163"></a>00163 <span class="comment">     **********************************************************************/</span>
+<a name="l00164"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">00164</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="co [...]
+<a name="l00165"></a>00165 <span class="comment">    ///@}</span>
+<a name="l00166"></a>00166 <span class="comment"></span><span class="comment"></span>
+<a name="l00167"></a>00167 <span class="comment">    /**</span>
+<a name="l00168"></a>00168 <span class="comment">     * A global instantiation of PolarStereographic with the WGS84 ellipsoid</span>
+<a name="l00169"></a>00169 <span class="comment">     * and the UPS scale factor.  However, unlike UPS, no false easting or</span>
+<a name="l00170"></a>00170 <span class="comment">     * northing is added.</span>
+<a name="l00171"></a>00171 <span class="comment">     **********************************************************************/</span>
+<a name="l00172"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">00172</a>     <span class="keyword">static</span> <span class="keyword">const</span> PolarStereographic <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">UPS</a>;
+<a name="l00173"></a>00173   };
 <a name="l00174"></a>00174 
-<a name="l00175"></a>00175 <span class="preprocessor">#endif  // GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</span>
+<a name="l00175"></a>00175 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177 <span class="preprocessor">#endif  // GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolygonArea_8cpp.html b/doc/html/PolygonArea_8cpp.html
index 11711f0..3c89aea 100644
--- a/doc/html/PolygonArea_8cpp.html
+++ b/doc/html/PolygonArea_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolygonArea.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8cpp.html#adda27aeacbbca888326b0f4cd9577254">GEOGRAPHICLIB_POLYGONAREA_CPP</a>   "$Id: ae2fce0b24653309ca8835d962b1a3e047a6768a $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolygonArea_8cpp_source.html b/doc/html/PolygonArea_8cpp_source.html
index 53cb8ab..b179ec9 100644
--- a/doc/html/PolygonArea_8cpp_source.html
+++ b/doc/html/PolygonArea_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolygonArea.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -180,8 +195,13 @@
 <a name="l00131"></a>00131 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolygonArea_8hpp.html b/doc/html/PolygonArea_8hpp.html
index a9b7efc..1d29700 100644
--- a/doc/html/PolygonArea_8hpp.html
+++ b/doc/html/PolygonArea_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolygonArea.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,13 +83,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8hpp.html#a284051319ec399ec9363ace180fc1203">GEOGRAPHICLIB_POLYGONAREA_HPP</a>   "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8hpp.html#a284051319ec399ec9363ace180fc1203">GEOGRAPHICLIB_POLYGONAREA_HPP</a>   "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_POLYGONAREA_HPP   "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_POLYGONAREA_HPP   "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"</td>
         </tr>
       </table>
 </div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/PolygonArea_8hpp_source.html b/doc/html/PolygonArea_8hpp_source.html
index ac268aa..8d17b8a 100644
--- a/doc/html/PolygonArea_8hpp_source.html
+++ b/doc/html/PolygonArea_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: PolygonArea.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_POLYGONAREA_HPP)</span>
 <a name="l00011"></a><a class="code" href="PolygonArea_8hpp.html#a284051319ec399ec9363ace180fc1203">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_POLYGONAREA_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -95,153 +110,161 @@
 <a name="l00045"></a>00045 <span class="comment">   *</span>
 <a name="l00046"></a>00046 <span class="comment">   * Example of use:</span>
 <a name="l00047"></a>00047 <span class="comment">   * \include example-PolygonArea.cpp</span>
-<a name="l00048"></a>00048 <span class="comment">   **********************************************************************/</span>
-<a name="l00049"></a>00049 
-<a name="l00050"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html">00050</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> {
-<a name="l00051"></a>00051   <span class="keyword">private</span>:
-<a name="l00052"></a>00052     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00053"></a>00053     <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00054"></a>00054     real _area0;                <span class="comment">// Full ellipsoid area</span>
-<a name="l00055"></a>00055     <span class="keywordtype">bool</span> _polyline;             <span class="comment">// Assume polyline (don't close and skip area)</span>
-<a name="l00056"></a>00056     <span class="keywordtype">unsigned</span> _mask;
-<a name="l00057"></a>00057     <span class="keywordtype">unsigned</span> _num;
-<a name="l00058"></a>00058     <span class="keywordtype">int</span> _crossings;
-<a name="l00059"></a>00059     <a class="code" href="classGeographicLib_1_1Accumulator.html">Accumulator<real></a> _areasum, _perimetersum;
-<a name="l00060"></a>00060     real _lat0, _lon0, _lat1, _lon1;
-<a name="l00061"></a>00061     <span class="comment">// Copied from Geodesic class</span>
-<a name="l00062"></a>00062     <span class="keyword">static</span> <span class="keyword">inline</span> real AngNormalize(real x) <span class="keywordflow">throw</span>() {
-<a name="l00063"></a>00063       <span class="comment">// Place angle in [-180, 180).  Assumes x is in [-540, 540).</span>
-<a name="l00064"></a>00064       <span class="comment">//</span>
-<a name="l00065"></a>00065       <span class="comment">// g++ 4.4.4 holds a temporary in an extended register causing an error</span>
-<a name="l00066"></a>00066       <span class="comment">// with the triangle 89,0.1;89,90.1;89,-179.9.  The volatile declaration</span>
-<a name="l00067"></a>00067       <span class="comment">// fixes this.  (The bug probably triggered because transit and</span>
-<a name="l00068"></a>00068       <span class="comment">// AngNormalize are inline functions.  So don't port this change over to</span>
-<a name="l00069"></a>00069       <span class="comment">// Geodesic.hpp.)</span>
-<a name="l00070"></a>00070       <span class="keyword">volatile</span> real y = x;
-<a name="l00071"></a>00071       <span class="keywordflow">return</span> y >= 180 ? y - 360 : (y < -180 ? y + 360 : y);
-<a name="l00072"></a>00072     }
-<a name="l00073"></a>00073     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> transit(real lon1, real lon2) {
-<a name="l00074"></a>00074       <span class="comment">// Return 1 or -1 if crossing prime meridian in east or west direction.</span>
-<a name="l00075"></a>00075       <span class="comment">// Otherwise return zero.</span>
-<a name="l00076"></a>00076       lon1 = AngNormalize(lon1);
-<a name="l00077"></a>00077       lon2 = AngNormalize(lon2);
-<a name="l00078"></a>00078       <span class="comment">// treat lon12 = -180 as an eastward geodesic, so convert to 180.</span>
-<a name="l00079"></a>00079       real lon12 = -AngNormalize(lon1 - lon2); <span class="comment">// In (-180, 180]</span>
-<a name="l00080"></a>00080       <span class="keywordtype">int</span> cross =
-<a name="l00081"></a>00081         lon1 < 0 && lon2 >= 0 && lon12 > 0 ? 1 :
-<a name="l00082"></a>00082         (lon2 < 0 && lon1 >= 0 && lon12 < 0 ? -1 : 0);
-<a name="l00083"></a>00083       <span class="keywordflow">return</span> cross;
-<a name="l00084"></a>00084     }
-<a name="l00085"></a>00085   <span class="keyword">public</span>:
-<a name="l00086"></a>00086 <span class="comment"></span>
-<a name="l00087"></a>00087 <span class="comment">    /**</span>
-<a name="l00088"></a>00088 <span class="comment">     * Constructor for PolygonArea.</span>
-<a name="l00089"></a>00089 <span class="comment">     *</span>
-<a name="l00090"></a>00090 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00091"></a>00091 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
-<a name="l00092"></a>00092 <span class="comment">     * @param[in] polyline if true that treat the points as defining a polyline</span>
-<a name="l00093"></a>00093 <span class="comment">     *   instead of a polygon (default = false).</span>
-<a name="l00094"></a>00094 <span class="comment">     **********************************************************************/</span>
-<a name="l00095"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a060a1dc499bd079c62f62ed5cad929e5">00095</a>     <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth, <span class="keywordtype">bool</span> polyline = <span class="keyword">false</span>) throw()
-<a name="l00096"></a>00096       : _earth(earth)
-<a name="l00097"></a>00097       , _area0(_earth.EllipsoidArea())
-<a name="l00098"></a>00098       , _polyline(polyline)
-<a name="l00099"></a>00099       , _mask(<a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE | (_polyline ? 0 : <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AREA))
-<a name="l00100"></a>00100     {
-<a name="l00101"></a>00101       Clear();
-<a name="l00102"></a>00102     }
-<a name="l00103"></a>00103 <span class="comment"></span>
-<a name="l00104"></a>00104 <span class="comment">    /**</span>
-<a name="l00105"></a>00105 <span class="comment">     * Clear PolygonArea, allowing a new polygon to be started.</span>
-<a name="l00106"></a>00106 <span class="comment">     **********************************************************************/</span>
-<a name="l00107"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">00107</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>() throw() {
-<a name="l00108"></a>00108       _num = 0;
-<a name="l00109"></a>00109       _crossings = 0;
-<a name="l00110"></a>00110       _areasum = 0;
-<a name="l00111"></a>00111       _perimetersum = 0;
-<a name="l00112"></a>00112       _lat0 = _lon0 = _lat1 = _lon1 = 0;
-<a name="l00113"></a>00113     }
-<a name="l00114"></a>00114 <span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment">    /**</span>
-<a name="l00116"></a>00116 <span class="comment">     * Add a point to the polygon or polyline.</span>
-<a name="l00117"></a>00117 <span class="comment">     *</span>
-<a name="l00118"></a>00118 <span class="comment">     * @param[in] lat the latitude of the point (degrees).</span>
-<a name="l00119"></a>00119 <span class="comment">     * @param[in] lon the latitude of the point (degrees).</span>
+<a name="l00048"></a>00048 <span class="comment">   *</span>
+<a name="l00049"></a>00049 <span class="comment">   * <a href="Planimeter.1.html">Planimeter</a> is a command-line utility</span>
+<a name="l00050"></a>00050 <span class="comment">   * providing access to the functionality of PolygonArea.</span>
+<a name="l00051"></a>00051 <span class="comment">   **********************************************************************/</span>
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> PolygonArea {
+<a name="l00054"></a>00054   <span class="keyword">private</span>:
+<a name="l00055"></a>00055     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00056"></a>00056     Geodesic _earth;
+<a name="l00057"></a>00057     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _area0;                <span class="comment">// Full ellipsoid area</span>
+<a name="l00058"></a>00058     <span class="keywordtype">bool</span> _polyline;             <span class="comment">// Assume polyline (don't close and skip area)</span>
+<a name="l00059"></a>00059     <span class="keywordtype">unsigned</span> _mask;
+<a name="l00060"></a>00060     <span class="keywordtype">unsigned</span> _num;
+<a name="l00061"></a>00061     <span class="keywordtype">int</span> _crossings;
+<a name="l00062"></a>00062     Accumulator<real> _areasum, _perimetersum;
+<a name="l00063"></a>00063     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _lat0, _lon0, _lat1, _lon1;
+<a name="l00064"></a>00064     <span class="comment">// Copied from Geodesic class</span>
+<a name="l00065"></a>00065     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00066"></a>00066       <span class="comment">// Place angle in [-180, 180).  Assumes x is in [-540, 540).</span>
+<a name="l00067"></a>00067       <span class="comment">//</span>
+<a name="l00068"></a>00068       <span class="comment">// g++ 4.4.4 holds a temporary in an extended register causing an error</span>
+<a name="l00069"></a>00069       <span class="comment">// with the triangle 89,0.1;89,90.1;89,-179.9.  The volatile declaration</span>
+<a name="l00070"></a>00070       <span class="comment">// fixes this.  (The bug probably triggered because transit and</span>
+<a name="l00071"></a>00071       <span class="comment">// AngNormalize are inline functions.  So don't port this change over to</span>
+<a name="l00072"></a>00072       <span class="comment">// Geodesic.hpp.)</span>
+<a name="l00073"></a>00073       <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = x;
+<a name="l00074"></a>00074       <span class="keywordflow">return</span> y >= 180 ? y - 360 : (y < -180 ? y + 360 : y);
+<a name="l00075"></a>00075     }
+<a name="l00076"></a>00076     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> transit(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon2) {
+<a name="l00077"></a>00077       <span class="comment">// Return 1 or -1 if crossing prime meridian in east or west direction.</span>
+<a name="l00078"></a>00078       <span class="comment">// Otherwise return zero.</span>
+<a name="l00079"></a>00079       lon1 = AngNormalize(lon1);
+<a name="l00080"></a>00080       lon2 = AngNormalize(lon2);
+<a name="l00081"></a>00081       <span class="comment">// treat lon12 = -180 as an eastward geodesic, so convert to 180.</span>
+<a name="l00082"></a>00082       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon12 = -AngNormalize(lon1 - lon2); <span class="comment">// In (-180, 180]</span>
+<a name="l00083"></a>00083       <span class="keywordtype">int</span> cross =
+<a name="l00084"></a>00084         lon1 < 0 && lon2 >= 0 && lon12 > 0 ? 1 :
+<a name="l00085"></a>00085         (lon2 < 0 && lon1 >= 0 && lon12 < 0 ? -1 : 0);
+<a name="l00086"></a>00086       <span class="keywordflow">return</span> cross;
+<a name="l00087"></a>00087     }
+<a name="l00088"></a>00088   <span class="keyword">public</span>:
+<a name="l00089"></a>00089 <span class="comment"></span>
+<a name="l00090"></a>00090 <span class="comment">    /**</span>
+<a name="l00091"></a>00091 <span class="comment">     * Constructor for PolygonArea.</span>
+<a name="l00092"></a>00092 <span class="comment">     *</span>
+<a name="l00093"></a>00093 <span class="comment">     * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00094"></a>00094 <span class="comment">     *   By default this uses the WGS84 ellipsoid.</span>
+<a name="l00095"></a>00095 <span class="comment">     * @param[in] polyline if true that treat the points as defining a polyline</span>
+<a name="l00096"></a>00096 <span class="comment">     *   instead of a polygon (default = false).</span>
+<a name="l00097"></a>00097 <span class="comment">     **********************************************************************/</span>
+<a name="l00098"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a060a1dc499bd079c62f62ed5cad929e5">00098</a>     PolygonArea(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth, <span class="keywordtype">bool</span> polyline = <span class="keyword">false</span>) throw()
+<a name="l00099"></a>00099       : _earth(earth)
+<a name="l00100"></a>00100       , _area0(_earth.EllipsoidArea())
+<a name="l00101"></a>00101       , _polyline(polyline)
+<a name="l00102"></a>00102       , _mask(<a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE | (_polyline ? 0 : <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AREA))
+<a name="l00103"></a>00103     {
+<a name="l00104"></a>00104       Clear();
+<a name="l00105"></a>00105     }
+<a name="l00106"></a>00106 <span class="comment"></span>
+<a name="l00107"></a>00107 <span class="comment">    /**</span>
+<a name="l00108"></a>00108 <span class="comment">     * Clear PolygonArea, allowing a new polygon to be started.</span>
+<a name="l00109"></a>00109 <span class="comment">     **********************************************************************/</span>
+<a name="l00110"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">00110</a>     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>() throw() {
+<a name="l00111"></a>00111       _num = 0;
+<a name="l00112"></a>00112       _crossings = 0;
+<a name="l00113"></a>00113       _areasum = 0;
+<a name="l00114"></a>00114       _perimetersum = 0;
+<a name="l00115"></a>00115       _lat0 = _lon0 = _lat1 = _lon1 = 0;
+<a name="l00116"></a>00116     }
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment">    /**</span>
+<a name="l00119"></a>00119 <span class="comment">     * Add a point to the polygon or polyline.</span>
 <a name="l00120"></a>00120 <span class="comment">     *</span>
-<a name="l00121"></a>00121 <span class="comment">     * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
-<a name="l00122"></a>00122 <span class="comment">     * range [-180, 360].</span>
-<a name="l00123"></a>00123 <span class="comment">     **********************************************************************/</span>
-<a name="l00124"></a>00124     <span class="keywordtype">void</span> AddPoint(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keywordflow">throw</span>();
-<a name="l00125"></a>00125 <span class="comment"></span>
-<a name="l00126"></a>00126 <span class="comment">    /**</span>
-<a name="l00127"></a>00127 <span class="comment">     * Return the results so far.</span>
-<a name="l00128"></a>00128 <span class="comment">     *</span>
-<a name="l00129"></a>00129 <span class="comment">     * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
-<a name="l00130"></a>00130 <span class="comment">     *   traversal counts as a positive area.</span>
-<a name="l00131"></a>00131 <span class="comment">     * @param[in] sign if true then return a signed result for the area if</span>
-<a name="l00132"></a>00132 <span class="comment">     *   the polygon is traversed in the "wrong" direction instead of returning</span>
-<a name="l00133"></a>00133 <span class="comment">     *   the area for the rest of the earth.</span>
-<a name="l00134"></a>00134 <span class="comment">     * @param[out] perimeter the perimeter of the polygon or length of the</span>
-<a name="l00135"></a>00135 <span class="comment">     *   polyline (meters).</span>
-<a name="l00136"></a>00136 <span class="comment">     * @param[out] area the area of the polygon (meters^2); only set if</span>
-<a name="l00137"></a>00137 <span class="comment">     *   polyline is false in the constructor.</span>
-<a name="l00138"></a>00138 <span class="comment">     * @return the number of points.</span>
-<a name="l00139"></a>00139 <span class="comment">     **********************************************************************/</span>
-<a name="l00140"></a>00140     <span class="keywordtype">unsigned</span> Compute(<span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
-<a name="l00141"></a>00141                      <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00142"></a>00142 <span class="comment"></span>
-<a name="l00143"></a>00143 <span class="comment">    /**</span>
-<a name="l00144"></a>00144 <span class="comment">     * Return the results assuming a tentative final test point is added;</span>
-<a name="l00145"></a>00145 <span class="comment">     * however, the data for the test point is not saved.  This lets you report</span>
-<a name="l00146"></a>00146 <span class="comment">     * a running result for the perimeter and area as the user moves the mouse</span>
-<a name="l00147"></a>00147 <span class="comment">     * cursor.  Ordinary floating point arithmetic is used to accumulate the</span>
-<a name="l00148"></a>00148 <span class="comment">     * data for the test point; thus the area and perimeter returned are less</span>
-<a name="l00149"></a>00149 <span class="comment">     * accurate than if AddPoint and Compute are used.</span>
-<a name="l00150"></a>00150 <span class="comment">     *</span>
-<a name="l00151"></a>00151 <span class="comment">     * @param[in] lat the latitude of the test point (degrees).</span>
-<a name="l00152"></a>00152 <span class="comment">     * @param[in] lon the longitude of the test point (degrees).</span>
-<a name="l00153"></a>00153 <span class="comment">     * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
-<a name="l00154"></a>00154 <span class="comment">     *   traversal counts as a positive area.</span>
-<a name="l00155"></a>00155 <span class="comment">     * @param[in] sign if true then return a signed result for the area if</span>
-<a name="l00156"></a>00156 <span class="comment">     *   the polygon is traversed in the "wrong" direction instead of returning</span>
-<a name="l00157"></a>00157 <span class="comment">     *   the area for the rest of the earth.</span>
-<a name="l00158"></a>00158 <span class="comment">     * @param[out] perimeter the approximate perimeter of the polygon or length</span>
-<a name="l00159"></a>00159 <span class="comment">     *   of the polyline (meters).</span>
-<a name="l00160"></a>00160 <span class="comment">     * @param[out] area the approximate area of the polygon (meters^2); only</span>
-<a name="l00161"></a>00161 <span class="comment">     *   set if polyline is false in the constructor.</span>
-<a name="l00162"></a>00162 <span class="comment">     * @return the number of points.</span>
-<a name="l00163"></a>00163 <span class="comment">     *</span>
-<a name="l00164"></a>00164 <span class="comment">     * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
-<a name="l00165"></a>00165 <span class="comment">     * range [-180, 360].</span>
-<a name="l00166"></a>00166 <span class="comment">     **********************************************************************/</span>
-<a name="l00167"></a>00167     <span class="keywordtype">unsigned</span> TestCompute(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
-<a name="l00168"></a>00168                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00169"></a>00169 <span class="comment"></span>
-<a name="l00170"></a>00170 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00171"></a>00171 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00172"></a>00172 <span class="comment">    ///@{</span>
-<a name="l00173"></a>00173 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00174"></a>00174 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00175"></a>00175 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00176"></a>00176 <span class="comment">     **********************************************************************/</span>
-<a name="l00177"></a>00177 
-<a name="l00178"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">00178</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00179"></a>00179 <span class="comment"></span>
-<a name="l00180"></a>00180 <span class="comment">    /**</span>
-<a name="l00181"></a>00181 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
-<a name="l00182"></a>00182 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
-<a name="l00183"></a>00183 <span class="comment">     **********************************************************************/</span>
-<a name="l00184"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">00184</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment"></span>
-<a name="l00185"></a>00185 <span class="comment">    ///@}</span>
-<a name="l00186"></a>00186 <span class="comment"></span>  };
-<a name="l00187"></a>00187 
-<a name="l00188"></a>00188 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00189"></a>00189 
-<a name="l00190"></a>00190 <span class="preprocessor">#endif  // GEOGRAPHICLIB_POLYGONAREA_HPP</span>
+<a name="l00121"></a>00121 <span class="comment">     * @param[in] lat the latitude of the point (degrees).</span>
+<a name="l00122"></a>00122 <span class="comment">     * @param[in] lon the latitude of the point (degrees).</span>
+<a name="l00123"></a>00123 <span class="comment">     *</span>
+<a name="l00124"></a>00124 <span class="comment">     * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
+<a name="l00125"></a>00125 <span class="comment">     * range [-180, 360].</span>
+<a name="l00126"></a>00126 <span class="comment">     **********************************************************************/</span>
+<a name="l00127"></a>00127     <span class="keywordtype">void</span> AddPoint(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keywordflow">throw</span>();
+<a name="l00128"></a>00128 <span class="comment"></span>
+<a name="l00129"></a>00129 <span class="comment">    /**</span>
+<a name="l00130"></a>00130 <span class="comment">     * Return the results so far.</span>
+<a name="l00131"></a>00131 <span class="comment">     *</span>
+<a name="l00132"></a>00132 <span class="comment">     * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
+<a name="l00133"></a>00133 <span class="comment">     *   traversal counts as a positive area.</span>
+<a name="l00134"></a>00134 <span class="comment">     * @param[in] sign if true then return a signed result for the area if</span>
+<a name="l00135"></a>00135 <span class="comment">     *   the polygon is traversed in the "wrong" direction instead of returning</span>
+<a name="l00136"></a>00136 <span class="comment">     *   the area for the rest of the earth.</span>
+<a name="l00137"></a>00137 <span class="comment">     * @param[out] perimeter the perimeter of the polygon or length of the</span>
+<a name="l00138"></a>00138 <span class="comment">     *   polyline (meters).</span>
+<a name="l00139"></a>00139 <span class="comment">     * @param[out] area the area of the polygon (meters^2); only set if</span>
+<a name="l00140"></a>00140 <span class="comment">     *   polyline is false in the constructor.</span>
+<a name="l00141"></a>00141 <span class="comment">     * @return the number of points.</span>
+<a name="l00142"></a>00142 <span class="comment">     **********************************************************************/</span>
+<a name="l00143"></a>00143     <span class="keywordtype">unsigned</span> Compute(<span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
+<a name="l00144"></a>00144                      <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00145"></a>00145 <span class="comment"></span>
+<a name="l00146"></a>00146 <span class="comment">    /**</span>
+<a name="l00147"></a>00147 <span class="comment">     * Return the results assuming a tentative final test point is added;</span>
+<a name="l00148"></a>00148 <span class="comment">     * however, the data for the test point is not saved.  This lets you report</span>
+<a name="l00149"></a>00149 <span class="comment">     * a running result for the perimeter and area as the user moves the mouse</span>
+<a name="l00150"></a>00150 <span class="comment">     * cursor.  Ordinary floating point arithmetic is used to accumulate the</span>
+<a name="l00151"></a>00151 <span class="comment">     * data for the test point; thus the area and perimeter returned are less</span>
+<a name="l00152"></a>00152 <span class="comment">     * accurate than if AddPoint and Compute are used.</span>
+<a name="l00153"></a>00153 <span class="comment">     *</span>
+<a name="l00154"></a>00154 <span class="comment">     * @param[in] lat the latitude of the test point (degrees).</span>
+<a name="l00155"></a>00155 <span class="comment">     * @param[in] lon the longitude of the test point (degrees).</span>
+<a name="l00156"></a>00156 <span class="comment">     * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
+<a name="l00157"></a>00157 <span class="comment">     *   traversal counts as a positive area.</span>
+<a name="l00158"></a>00158 <span class="comment">     * @param[in] sign if true then return a signed result for the area if</span>
+<a name="l00159"></a>00159 <span class="comment">     *   the polygon is traversed in the "wrong" direction instead of returning</span>
+<a name="l00160"></a>00160 <span class="comment">     *   the area for the rest of the earth.</span>
+<a name="l00161"></a>00161 <span class="comment">     * @param[out] perimeter the approximate perimeter of the polygon or length</span>
+<a name="l00162"></a>00162 <span class="comment">     *   of the polyline (meters).</span>
+<a name="l00163"></a>00163 <span class="comment">     * @param[out] area the approximate area of the polygon (meters^2); only</span>
+<a name="l00164"></a>00164 <span class="comment">     *   set if polyline is false in the constructor.</span>
+<a name="l00165"></a>00165 <span class="comment">     * @return the number of points.</span>
+<a name="l00166"></a>00166 <span class="comment">     *</span>
+<a name="l00167"></a>00167 <span class="comment">     * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
+<a name="l00168"></a>00168 <span class="comment">     * range [-180, 360].</span>
+<a name="l00169"></a>00169 <span class="comment">     **********************************************************************/</span>
+<a name="l00170"></a>00170     <span class="keywordtype">unsigned</span> TestCompute(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
+<a name="l00171"></a>00171                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00172"></a>00172 <span class="comment"></span>
+<a name="l00173"></a>00173 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00174"></a>00174 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment">    ///@{</span>
+<a name="l00176"></a>00176 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00177"></a>00177 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00178"></a>00178 <span class="comment">     *   the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00179"></a>00179 <span class="comment">     **********************************************************************/</span>
+<a name="l00180"></a>00180 
+<a name="l00181"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">00181</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00182"></a>00182 <span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment">    /**</span>
+<a name="l00184"></a>00184 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value</span>
+<a name="l00185"></a>00185 <span class="comment">     *   inherited from the Geodesic object used in the constructor.</span>
+<a name="l00186"></a>00186 <span class="comment">     **********************************************************************/</span>
+<a name="l00187"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">00187</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="co [...]
+<a name="l00188"></a>00188 <span class="comment">    ///@}</span>
+<a name="l00189"></a>00189 <span class="comment"></span>  };
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193 <span class="preprocessor">#endif  // GEOGRAPHICLIB_POLYGONAREA_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalEngine_8cpp.html b/doc/html/SphericalEngine_8cpp.html
index d347d9b..4788635 100644
--- a/doc/html/SphericalEngine_8cpp.html
+++ b/doc/html/SphericalEngine_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalEngine.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -64,13 +79,11 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">GEOGRAPHICLIB_SPHERICALENGINE_CPP</a>   "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">GEOGRAPHICLIB_SPHERICALENGINE_CPP</a>   "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
@@ -179,7 +192,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_CPP   "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_CPP   "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"</td>
         </tr>
       </table>
 </div>
@@ -190,8 +203,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalEngine_8cpp_source.html b/doc/html/SphericalEngine_8cpp_source.html
index a73ff00..023a470 100644
--- a/doc/html/SphericalEngine_8cpp_source.html
+++ b/doc/html/SphericalEngine_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalEngine.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -186,7 +201,7 @@
 <a name="l00137"></a>00137 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00138"></a>00138 
 <a name="l00139"></a><a class="code" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">00139</a> <span class="preprocessor">#define GEOGRAPHICLIB_SPHERICALENGINE_CPP \</span>
-<a name="l00140"></a>00140 <span class="preprocessor">  "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"</span>
+<a name="l00140"></a>00140 <span class="preprocessor">  "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"</span>
 <a name="l00141"></a>00141 <span class="preprocessor"></span>
 <a name="l00142"></a>00142 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">GEOGRAPHICLIB_SPHERICALENGINE_CPP</a>)
 <a name="l00143"></a>00143 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">GEOGRAPHICLIB_SPHERICALENGINE_HPP</a>)
@@ -195,17 +210,17 @@
 <a name="l00146"></a>00146 
 <a name="l00147"></a>00147   <span class="keyword">using namespace </span>std;
 <a name="l00148"></a>00148 
-<a name="l00149"></a>00149   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> SphericalEngine::scale_ =
+<a name="l00149"></a>00149   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> SphericalEngine::scale_ =
 <a name="l00150"></a>00150     pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::radix),
 <a name="l00151"></a>00151         -3 * numeric_limits<real>::max_exponent / 5);
-<a name="l00152"></a>00152   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> SphericalEngine::eps_ =
+<a name="l00152"></a>00152   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> SphericalEngine::eps_ =
 <a name="l00153"></a>00153     numeric_limits<real>::epsilon() * sqrt(numeric_limits<real>::epsilon());
 <a name="l00154"></a>00154 
 <a name="l00155"></a>00155   <span class="keyword">const</span> vector<Math::real> SphericalEngine::Z_(0);
 <a name="l00156"></a>00156   vector<Math::real> SphericalEngine::root_(0);
 <a name="l00157"></a>00157 
 <a name="l00158"></a>00158   <span class="keyword">template</span><<span class="keywordtype">bool</span> gradp, SphericalEngine::normalization norm, <span class="keywordtype">int</span> L>
-<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">00159</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const</span> real f[],
+<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">00159</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real SphericalEngine::Value(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const</spa [...]
 <a name="l00160"></a>00160                                     real x, real y, real z, real a,
 <a name="l00161"></a>00161                                     real& gradx, real& grady, real& gradz)
 <a name="l00162"></a>00162     <span class="keywordflow">throw</span>() {
@@ -298,7 +313,7 @@
 <a name="l00249"></a>00249         v = A * vc  + B * vc2  +  wc ; vc2  = vc ; vc  = v;
 <a name="l00250"></a>00250         v = A * vs  + B * vs2  +  ws ; vs2  = vs ; vs  = v;
 <a name="l00251"></a>00251         <span class="keywordflow">if</span> (gradp) {
-<a name="l00252"></a>00252           <span class="comment">// Include the terms Sc[m] * P'[m,m](t) and  Ss[m] * P'[m,m](t)</span>
+<a name="l00252"></a>00252           <span class="comment">// Include the terms Sc[m] * P'[m,m](t) and Ss[m] * P'[m,m](t)</span>
 <a name="l00253"></a>00253           wtc += m * tu * wc; wts += m * tu * ws;
 <a name="l00254"></a>00254           v = A * vrc + B * vrc2 +  wrc; vrc2 = vrc; vrc = v;
 <a name="l00255"></a>00255           v = A * vrs + B * vrs2 +  wrs; vrs2 = vrs; vrs = v;
@@ -344,7 +359,7 @@
 <a name="l00295"></a>00295   }
 <a name="l00296"></a>00296 
 <a name="l00297"></a>00297   <span class="keyword">template</span><<span class="keywordtype">bool</span> gradp, SphericalEngine::normalization norm, <span class="keywordtype">int</span> L>
-<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">00298</a>   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const [...]
+<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">00298</a>   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const [...]
 <a name="l00299"></a>00299                                          real p, real z, real a) {
 <a name="l00300"></a>00300 
 <a name="l00301"></a>00301     <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(L > 0, <span class="stringliteral">"L must be positive"</span>);
@@ -432,104 +447,109 @@
 <a name="l00383"></a>00383                                           std::vector<real>& C,
 <a name="l00384"></a>00384                                           std::vector<real>& S) {
 <a name="l00385"></a>00385     <span class="keywordtype">int</span> nm[2];
-<a name="l00386"></a>00386     Utility::readarray<int, int, false>(stream, nm, 2);
+<a name="l00386"></a>00386     <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<int, int, false>(stream, nm, 2);
 <a name="l00387"></a>00387     N = nm[0]; M = nm[1];
 <a name="l00388"></a>00388     <span class="keywordflow">if</span> (!(N >= M && M >= -1 && N * M >= 0))
 <a name="l00389"></a>00389       <span class="comment">// The last condition is that M = -1 implies N = -1 and vice versa.</span>
 <a name="l00390"></a>00390       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad degree and order "</span> +
 <a name="l00391"></a>00391                           Utility::str(N) + <span class="stringliteral">" "</span> + Utility::str(M));
 <a name="l00392"></a>00392     C.resize(SphericalEngine::coeff::Csize(N, M));
-<a name="l00393"></a>00393     Utility::readarray<double, real, false>(stream, C);
+<a name="l00393"></a>00393     <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<double, real, false>(stream, C);
 <a name="l00394"></a>00394     S.resize(SphericalEngine::coeff::Ssize(N, M));
-<a name="l00395"></a>00395     Utility::readarray<double, real, false>(stream, S);
+<a name="l00395"></a>00395     <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<double, real, false>(stream, S);
 <a name="l00396"></a>00396     <span class="keywordflow">return</span>;
 <a name="l00397"></a>00397   }
 <a name="l00398"></a>00398 <span class="comment"></span>
 <a name="l00399"></a>00399 <span class="comment">  /// \cond SKIP</span>
 <a name="l00400"></a>00400 <span class="comment"></span>  <span class="keyword">template</span>
-<a name="l00401"></a>00401   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::FULL, 1>
+<a name="l00401"></a>00401   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 1>
 <a name="l00402"></a>00402   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00403"></a>00403   <span class="keyword">template</span>
-<a name="l00404"></a>00404   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::FULL, 1>
+<a name="l00404"></a>00404   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 1>
 <a name="l00405"></a>00405   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00406"></a>00406   <span class="keyword">template</span>
-<a name="l00407"></a>00407   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00407"></a>00407   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 1>
 <a name="l00408"></a>00408   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00409"></a>00409   <span class="keyword">template</span>
-<a name="l00410"></a>00410   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 1>
+<a name="l00410"></a>00410   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 1>
 <a name="l00411"></a>00411   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00412"></a>00412 
 <a name="l00413"></a>00413   <span class="keyword">template</span>
-<a name="l00414"></a>00414   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::FULL, 2>
+<a name="l00414"></a>00414   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 2>
 <a name="l00415"></a>00415   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00416"></a>00416   <span class="keyword">template</span>
-<a name="l00417"></a>00417   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::FULL, 2>
+<a name="l00417"></a>00417   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 2>
 <a name="l00418"></a>00418   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00419"></a>00419   <span class="keyword">template</span>
-<a name="l00420"></a>00420   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00420"></a>00420   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 2>
 <a name="l00421"></a>00421   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00422"></a>00422   <span class="keyword">template</span>
-<a name="l00423"></a>00423   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 2>
+<a name="l00423"></a>00423   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 2>
 <a name="l00424"></a>00424   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00425"></a>00425 
 <a name="l00426"></a>00426   <span class="keyword">template</span>
-<a name="l00427"></a>00427   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::FULL, 3>
+<a name="l00427"></a>00427   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 3>
 <a name="l00428"></a>00428   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00429"></a>00429   <span class="keyword">template</span>
-<a name="l00430"></a>00430   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::FULL, 3>
+<a name="l00430"></a>00430   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 3>
 <a name="l00431"></a>00431   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00432"></a>00432   <span class="keyword">template</span>
-<a name="l00433"></a>00433   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00433"></a>00433   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 3>
 <a name="l00434"></a>00434   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00435"></a>00435   <span class="keyword">template</span>
-<a name="l00436"></a>00436   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 3>
+<a name="l00436"></a>00436   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 3>
 <a name="l00437"></a>00437   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00438"></a>00438 
 <a name="l00439"></a>00439   <span class="keyword">template</span>
-<a name="l00440"></a>00440   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::FULL, 1>
+<a name="l00440"></a>00440   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 1>
 <a name="l00441"></a>00441   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00442"></a>00442   <span class="keyword">template</span>
-<a name="l00443"></a>00443   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::FULL, 1>
+<a name="l00443"></a>00443   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::FULL, 1>
 <a name="l00444"></a>00444   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00445"></a>00445   <span class="keyword">template</span>
-<a name="l00446"></a>00446   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00446"></a>00446   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 1>
 <a name="l00447"></a>00447   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00448"></a>00448   <span class="keyword">template</span>
-<a name="l00449"></a>00449   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 1>
+<a name="l00449"></a>00449   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::SCHMIDT, 1>
 <a name="l00450"></a>00450   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00451"></a>00451 
 <a name="l00452"></a>00452   <span class="keyword">template</span>
-<a name="l00453"></a>00453   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::FULL, 2>
+<a name="l00453"></a>00453   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 2>
 <a name="l00454"></a>00454   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00455"></a>00455   <span class="keyword">template</span>
-<a name="l00456"></a>00456   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::FULL, 2>
+<a name="l00456"></a>00456   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::FULL, 2>
 <a name="l00457"></a>00457   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00458"></a>00458   <span class="keyword">template</span>
-<a name="l00459"></a>00459   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00459"></a>00459   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 2>
 <a name="l00460"></a>00460   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00461"></a>00461   <span class="keyword">template</span>
-<a name="l00462"></a>00462   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 2>
+<a name="l00462"></a>00462   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::SCHMIDT, 2>
 <a name="l00463"></a>00463   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00464"></a>00464 
 <a name="l00465"></a>00465   <span class="keyword">template</span>
-<a name="l00466"></a>00466   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::FULL, 3>
+<a name="l00466"></a>00466   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 3>
 <a name="l00467"></a>00467   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00468"></a>00468   <span class="keyword">template</span>
-<a name="l00469"></a>00469   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::FULL, 3>
+<a name="l00469"></a>00469   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::FULL, 3>
 <a name="l00470"></a>00470   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00471"></a>00471   <span class="keyword">template</span>
-<a name="l00472"></a>00472   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00472"></a>00472   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 3>
 <a name="l00473"></a>00473   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
 <a name="l00474"></a>00474   <span class="keyword">template</span>
-<a name="l00475"></a>00475   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 3>
+<a name="l00475"></a>00475   <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::SCHMIDT, 3>
 <a name="l00476"></a>00476   (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
 <a name="l00477"></a>00477 <span class="comment">  /// \endcond</span>
 <a name="l00478"></a>00478 <span class="comment"></span>
 <a name="l00479"></a>00479 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalEngine_8hpp.html b/doc/html/SphericalEngine_8hpp.html
index 58a8598..ff67994 100644
--- a/doc/html/SphericalEngine_8hpp.html
+++ b/doc/html/SphericalEngine_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalEngine.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,13 +85,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">GEOGRAPHICLIB_SPHERICALENGINE_HPP</a>   "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">GEOGRAPHICLIB_SPHERICALENGINE_HPP</a>   "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
@@ -89,7 +102,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_HPP   "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_HPP   "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"</td>
         </tr>
       </table>
 </div>
@@ -100,8 +113,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalEngine_8hpp_source.html b/doc/html/SphericalEngine_8hpp_source.html
index db2916a..cdb8098 100644
--- a/doc/html/SphericalEngine_8hpp_source.html
+++ b/doc/html/SphericalEngine_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalEngine.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_SPHERICALENGINE_HPP)</span>
 <a name="l00011"></a><a class="code" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_SPHERICALENGINE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <vector></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <istream></span>
@@ -88,9 +103,9 @@
 <a name="l00038"></a>00038 <span class="comment">   * \include example-SphericalEngine.cpp</span>
 <a name="l00039"></a>00039 <span class="comment">   **********************************************************************/</span>
 <a name="l00040"></a>00040 
-<a name="l00041"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html">00041</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a> {
+<a name="l00041"></a>00041   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalEngine {
 <a name="l00042"></a>00042   <span class="keyword">private</span>:
-<a name="l00043"></a>00043     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00043"></a>00043     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00044"></a>00044     <span class="comment">// A table of the square roots of integers</span>
 <a name="l00045"></a>00045     <span class="keyword">static</span> std::vector<real> root_;
 <a name="l00046"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a0c689dbf7b6bf2fb4cffb109085b1d3b">00046</a>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>; <span class="comment">// CircularEngine needs access to root_, scale_</span>
@@ -100,7 +115,7 @@
 <a name="l00050"></a>00050     <span class="comment">// Move latitudes near the pole off the axis by this amount.</span>
 <a name="l00051"></a>00051     <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
 <a name="l00052"></a>00052     <span class="keyword">static</span> <span class="keyword">const</span> std::vector<real> Z_;
-<a name="l00053"></a>00053     <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>();          <span class="comment">// Disable constructor</span>
+<a name="l00053"></a>00053     SphericalEngine();          <span class="comment">// Disable constructor</span>
 <a name="l00054"></a>00054   <span class="keyword">public</span>:<span class="comment"></span>
 <a name="l00055"></a>00055 <span class="comment">    /**</span>
 <a name="l00056"></a>00056 <span class="comment">     * Supported normalizations for associated Legendre polynomials.</span>
@@ -139,7 +154,7 @@
 <a name="l00089"></a>00089 <span class="comment">     * The storage layout of the coefficients is documented in</span>
 <a name="l00090"></a>00090 <span class="comment">     * SphericalHarmonic and SphericalHarmonic::SphericalHarmonic.</span>
 <a name="l00091"></a>00091 <span class="comment">     **********************************************************************/</span>
-<a name="l00092"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">00092</a>     <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> {
+<a name="l00092"></a>00092     <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> coeff {
 <a name="l00093"></a>00093     <span class="keyword">private</span>:
 <a name="l00094"></a>00094       <span class="keywordtype">int</span> _N, _nmx, _mmx;
 <a name="l00095"></a>00095       std::vector<real>::const_iterator _Cnm;
@@ -174,7 +189,7 @@
 <a name="l00124"></a>00124         , _nmx(nmx)
 <a name="l00125"></a>00125         , _mmx(mmx)
 <a name="l00126"></a>00126         , _Cnm(C.begin())
-<a name="l00127"></a>00127         , _Snm(S.begin() - (_N + 1))
+<a name="l00127"></a>00127         , _Snm(S.begin())
 <a name="l00128"></a>00128       {
 <a name="l00129"></a>00129         <span class="keywordflow">if</span> (!(_N >= _nmx && _nmx >= _mmx && _mmx >= -1))
 <a name="l00130"></a>00130           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad indices for coeff"</span>);
@@ -200,7 +215,7 @@
 <a name="l00150"></a>00150         , _nmx(N)
 <a name="l00151"></a>00151         , _mmx(N)
 <a name="l00152"></a>00152         , _Cnm(C.begin())
-<a name="l00153"></a>00153         , _Snm(S.begin() - (_N + 1))
+<a name="l00153"></a>00153         , _Snm(S.begin())
 <a name="l00154"></a>00154       {
 <a name="l00155"></a>00155         <span class="keywordflow">if</span> (!(_N >= -1))
 <a name="l00156"></a>00156           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad indices for coeff"</span>);
@@ -236,14 +251,14 @@
 <a name="l00186"></a>00186 <span class="comment">       * @param[in] k the one-dimensional index.</span>
 <a name="l00187"></a>00187 <span class="comment">       * @return the value of the \e C coefficient.</span>
 <a name="l00188"></a>00188 <span class="comment">       **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">00189</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">Cv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const </span>{ <span class=" [...]
+<a name="l00189"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">00189</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">Cv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const  [...]
 <a name="l00190"></a>00190 <span class="comment">      /**</span>
 <a name="l00191"></a>00191 <span class="comment">       * An element of \e S.</span>
 <a name="l00192"></a>00192 <span class="comment">       *</span>
 <a name="l00193"></a>00193 <span class="comment">       * @param[in] k the one-dimensional index.</span>
 <a name="l00194"></a>00194 <span class="comment">       * @return the value of the \e S coefficient.</span>
 <a name="l00195"></a>00195 <span class="comment">       **********************************************************************/</span>
-<a name="l00196"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">00196</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">Sv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const </span>{ <span class=" [...]
+<a name="l00196"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">00196</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">Sv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const  [...]
 <a name="l00197"></a>00197 <span class="comment">      /**</span>
 <a name="l00198"></a>00198 <span class="comment">       * An element of \e C with checking.</span>
 <a name="l00199"></a>00199 <span class="comment">       *</span>
@@ -254,7 +269,7 @@
 <a name="l00204"></a>00204 <span class="comment">       * @return the value of the \e C coefficient multiplied by \e f in \e n</span>
 <a name="l00205"></a>00205 <span class="comment">       *   and \e m are in range else 0.</span>
 <a name="l00206"></a>00206 <span class="comment">       **********************************************************************/</span>
-<a name="l00207"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ad30081b2dfdee79652aacbc24bacb635">00207</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Cv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
+<a name="l00207"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ad30081b2dfdee79652aacbc24bacb635">00207</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Cv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
 <a name="l00208"></a>00208 <span class="keyword">      </span>{ <span class="keywordflow">return</span> m > _mmx || n > _nmx ? 0 : *(_Cnm + k) * f; }<span class="comment"></span>
 <a name="l00209"></a>00209 <span class="comment">      /**</span>
 <a name="l00210"></a>00210 <span class="comment">       * An element of \e S with checking.</span>
@@ -266,8 +281,8 @@
 <a name="l00216"></a>00216 <span class="comment">       * @return the value of the \e S coefficient multiplied by \e f in \e n</span>
 <a name="l00217"></a>00217 <span class="comment">       *   and \e m are in range else 0.</span>
 <a name="l00218"></a>00218 <span class="comment">       **********************************************************************/</span>
-<a name="l00219"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">00219</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Sv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
-<a name="l00220"></a>00220 <span class="keyword">      </span>{ <span class="keywordflow">return</span> m > _mmx || n > _nmx ? 0 : *(_Snm + k) * f; }
+<a name="l00219"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">00219</a>       <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Sv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
+<a name="l00220"></a>00220 <span class="keyword">      </span>{ <span class="keywordflow">return</span> m > _mmx || n > _nmx ? 0 : *(_Snm + (k - (_N + 1))) * f; }
 <a name="l00221"></a>00221 <span class="comment"></span>
 <a name="l00222"></a>00222 <span class="comment">      /**</span>
 <a name="l00223"></a>00223 <span class="comment">       * The size of the coefficient vector for the cosine terms.</span>
@@ -342,7 +357,7 @@
 <a name="l00292"></a>00292 <span class="comment">     * throws an exception.</span>
 <a name="l00293"></a>00293 <span class="comment">     **********************************************************************/</span>
 <a name="l00294"></a>00294     <span class="keyword">template</span><<span class="keywordtype">bool</span> gradp, normalization norm, <span class="keywordtype">int</span> L>
-<a name="l00295"></a>00295       <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Value(<span class="keyword">const</span> coeff c[], <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f[],
+<a name="l00295"></a>00295       <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Value(<span class="keyword">const</span> coeff c[], <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f[],
 <a name="l00296"></a>00296                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a,
 <a name="l00297"></a>00297                               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grady, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradz) <span class="keywordflow">throw</span>();
 <a name="l00298"></a>00298 <span class="comment"></span>
@@ -412,8 +427,13 @@
 <a name="l00362"></a>00362 <span class="preprocessor">#endif  // GEOGRAPHICLIB_SPHERICALENGINE_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalHarmonic1_8hpp.html b/doc/html/SphericalHarmonic1_8hpp.html
index 53bffea..73bda18 100644
--- a/doc/html/SphericalHarmonic1_8hpp.html
+++ b/doc/html/SphericalHarmonic1_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalHarmonic1.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,10 +84,8 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic1_8hpp.html#a16f04a6cf043288bc2d78f51d9c42186">GEOGRAPHICLIB_SPHERICALHARMONIC1_HPP</a>   "$Id: 9dd895ded08db0f7fdd82159399da511f40a17e1 $"</td></tr>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalHarmonic1_8hpp_source.html b/doc/html/SphericalHarmonic1_8hpp_source.html
index 8dd61b3..5bde964 100644
--- a/doc/html/SphericalHarmonic1_8hpp_source.html
+++ b/doc/html/SphericalHarmonic1_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalHarmonic1.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -79,7 +94,7 @@
 <a name="l00029"></a>00029 <span class="comment">   * \include example-SphericalHarmonic1.cpp</span>
 <a name="l00030"></a>00030 <span class="comment">   **********************************************************************/</span>
 <a name="l00031"></a>00031 
-<a name="l00032"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html">00032</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a> {
+<a name="l00032"></a>00032   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalHarmonic1 {
 <a name="l00033"></a>00033   <span class="keyword">public</span>:<span class="comment"></span>
 <a name="l00034"></a>00034 <span class="comment">    /**</span>
 <a name="l00035"></a>00035 <span class="comment">     * Supported normalizations for associate Legendre polynomials.</span>
@@ -91,14 +106,14 @@
 <a name="l00041"></a>00041 <span class="comment">       *</span>
 <a name="l00042"></a>00042 <span class="comment">       * @hideinitializer</span>
 <a name="l00043"></a>00043 <span class="comment">       **********************************************************************/</span>
-<a name="l00044"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aafd320d946e992459e0013da6b769638">00044</a>       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,<span class="comment"></span>
+<a name="l00044"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aafd320d946e992459e0013da6b769638">00044</a>       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::FULL,<span class="comment"></span>
 <a name="l00045"></a>00045 <span class="comment">      /**</span>
 <a name="l00046"></a>00046 <span class="comment">       * Schmidt semi-normalized associated Legendre polynomials.  See</span>
 <a name="l00047"></a>00047 <span class="comment">       * SphericalHarmonic::SCHMIDT for documentation.</span>
 <a name="l00048"></a>00048 <span class="comment">       *</span>
 <a name="l00049"></a>00049 <span class="comment">       * @hideinitializer</span>
 <a name="l00050"></a>00050 <span class="comment">       **********************************************************************/</span>
-<a name="l00051"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aa1959e3e2bdf7c01f596692757858231">00051</a>       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,<span class="comment"></span>
+<a name="l00051"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aa1959e3e2bdf7c01f596692757858231">00051</a>       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::SCHMIDT,<span class="comment"></span>
 <a name="l00052"></a>00052 <span class="comment">      /// \cond SKIP</span>
 <a name="l00053"></a>00053 <span class="comment"></span>      <span class="comment">// These are deprecated...</span>
 <a name="l00054"></a>00054       full = FULL,
@@ -107,8 +122,8 @@
 <a name="l00057"></a>00057 <span class="comment"></span>    };
 <a name="l00058"></a>00058 
 <a name="l00059"></a>00059   <span class="keyword">private</span>:
-<a name="l00060"></a>00060     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00061"></a>00061     <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> _c[2];
+<a name="l00060"></a>00060     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00061"></a>00061     <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff _c[2];
 <a name="l00062"></a>00062     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a;
 <a name="l00063"></a>00063     <span class="keywordtype">unsigned</span> _norm;
 <a name="l00064"></a>00064 
@@ -136,7 +151,7 @@
 <a name="l00086"></a>00086 <span class="comment">     * C', and \e S'.  These arrays should not be altered or destroyed during</span>
 <a name="l00087"></a>00087 <span class="comment">     * the lifetime of a SphericalHarmonic object.</span>
 <a name="l00088"></a>00088 <span class="comment">     **********************************************************************/</span>
-<a name="l00089"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aeb3299ea40b0bedae55fd0a6f0c1fa40">00089</a>     <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00089"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aeb3299ea40b0bedae55fd0a6f0c1fa40">00089</a>     SphericalHarmonic1(<span class="keyword">const</span> std::vector<real>& C,
 <a name="l00090"></a>00090                        <span class="keyword">const</span> std::vector<real>& S,
 <a name="l00091"></a>00091                        <span class="keywordtype">int</span> N,
 <a name="l00092"></a>00092                        <span class="keyword">const</span> std::vector<real>& C1,
@@ -177,7 +192,7 @@
 <a name="l00127"></a>00127 <span class="comment">     * C', and \e S'.  These arrays should not be altered or destroyed during</span>
 <a name="l00128"></a>00128 <span class="comment">     * the lifetime of a SphericalHarmonic object.</span>
 <a name="l00129"></a>00129 <span class="comment">     **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aca472a143f7e000e232f4c261550b626">00130</a>     <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00130"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aca472a143f7e000e232f4c261550b626">00130</a>     SphericalHarmonic1(<span class="keyword">const</span> std::vector<real>& C,
 <a name="l00131"></a>00131                        <span class="keyword">const</span> std::vector<real>& S,
 <a name="l00132"></a>00132                        <span class="keywordtype">int</span> N, <span class="keywordtype">int</span> nmx, <span class="keywordtype">int</span> mmx,
 <a name="l00133"></a>00133                        <span class="keyword">const</span> std::vector<real>& C1,
@@ -213,17 +228,17 @@
 <a name="l00163"></a>00163 <span class="comment">     * This routine requires constant memory and thus never throws</span>
 <a name="l00164"></a>00164 <span class="comment">     * an exception.</span>
 <a name="l00165"></a>00165 <span class="comment">     **********************************************************************/</span>
-<a name="l00166"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">00166</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">operator()</a>(real tau, real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00166"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">00166</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">operator()</a>(real tau, real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00167"></a>00167       real f[] = {1, tau};
 <a name="l00168"></a>00168       real v = 0;
 <a name="l00169"></a>00169       real dummy;
 <a name="l00170"></a>00170       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00171"></a>00171       <span class="keywordflow">case</span> FULL:
-<a name="l00172"></a>00172         v = SphericalEngine::Value<false, SphericalEngine::FULL, 2>
+<a name="l00172"></a>00172         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 2>
 <a name="l00173"></a>00173           (_c, f, x, y, z, _a, dummy, dummy, dummy);
 <a name="l00174"></a>00174         <span class="keywordflow">break</span>;
 <a name="l00175"></a>00175       <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00176"></a>00176         v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 2>
+<a name="l00176"></a>00176         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 2>
 <a name="l00177"></a>00177           (_c, f, x, y, z, _a, dummy, dummy, dummy);
 <a name="l00178"></a>00178         <span class="keywordflow">break</span>;
 <a name="l00179"></a>00179       }
@@ -248,17 +263,17 @@
 <a name="l00198"></a>00198 <span class="comment">     * computed.  This routine requires constant memory and thus never throws</span>
 <a name="l00199"></a>00199 <span class="comment">     * an exception.</span>
 <a name="l00200"></a>00200 <span class="comment">     **********************************************************************/</span>
-<a name="l00201"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac732f25af07eee71ad0ca288a2e86fbd">00201</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real tau, real x, real y, real z,
+<a name="l00201"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac732f25af07eee71ad0ca288a2e86fbd">00201</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real tau, real x, real y, real z,
 <a name="l00202"></a>00202                           real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00203"></a>00203       real f[] = {1, tau};
 <a name="l00204"></a>00204       real v = 0;
 <a name="l00205"></a>00205       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00206"></a>00206       <span class="keywordflow">case</span> FULL:
-<a name="l00207"></a>00207         v = SphericalEngine::Value<true, SphericalEngine::FULL, 2>
+<a name="l00207"></a>00207         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 2>
 <a name="l00208"></a>00208           (_c, f, x, y, z, _a, gradx, grady, gradz);
 <a name="l00209"></a>00209         <span class="keywordflow">break</span>;
 <a name="l00210"></a>00210       <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00211"></a>00211         v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00211"></a>00211         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 2>
 <a name="l00212"></a>00212           (_c, f, x, y, z, _a, gradx, grady, gradz);
 <a name="l00213"></a>00213         <span class="keywordflow">break</span>;
 <a name="l00214"></a>00214       }
@@ -292,7 +307,7 @@
 <a name="l00242"></a>00242       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00243"></a>00243       <span class="keywordflow">case</span> FULL:
 <a name="l00244"></a>00244         <span class="keywordflow">return</span> gradp ?
-<a name="l00245"></a>00245           SphericalEngine::Circle<true, SphericalEngine::FULL, 2>
+<a name="l00245"></a>00245           <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 2>
 <a name="l00246"></a>00246           (_c, f, p, z, _a) :
 <a name="l00247"></a>00247           SphericalEngine::Circle<false, SphericalEngine::FULL, 2>
 <a name="l00248"></a>00248           (_c, f, p, z, _a);
@@ -300,7 +315,7 @@
 <a name="l00250"></a>00250       <span class="keywordflow">case</span> SCHMIDT:
 <a name="l00251"></a>00251       <span class="keywordflow">default</span>:                  <span class="comment">// To avoid compiler warnings</span>
 <a name="l00252"></a>00252         <span class="keywordflow">return</span> gradp ?
-<a name="l00253"></a>00253           SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00253"></a>00253           <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 2>
 <a name="l00254"></a>00254           (_c, f, p, z, _a) :
 <a name="l00255"></a>00255           SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 2>
 <a name="l00256"></a>00256           (_c, f, p, z, _a);
@@ -311,12 +326,12 @@
 <a name="l00261"></a>00261 <span class="comment">    /**</span>
 <a name="l00262"></a>00262 <span class="comment">     * @return the zeroth SphericalEngine::coeff object.</span>
 <a name="l00263"></a>00263 <span class="comment">     **********************************************************************/</span>
-<a name="l00264"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a67fe3c8ab08be94a300d07c98814aab0">00264</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients() <span class="keyword">const</span> throw()
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a67fe3c8ab08be94a300d07c98814aab0">00264</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients() <span class="keyword">const</span> throw()
 <a name="l00265"></a>00265     { <span class="keywordflow">return</span> _c[0]; }<span class="comment"></span>
 <a name="l00266"></a>00266 <span class="comment">    /**</span>
 <a name="l00267"></a>00267 <span class="comment">     * @return the first SphericalEngine::coeff object.</span>
 <a name="l00268"></a>00268 <span class="comment">     **********************************************************************/</span>
-<a name="l00269"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ad200e309790cd6e41bb79529d9076274">00269</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients1() <span class="keyword">const</span> throw()
+<a name="l00269"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ad200e309790cd6e41bb79529d9076274">00269</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients1() <span class="keyword">const</span> throw()
 <a name="l00270"></a>00270     { <span class="keywordflow">return</span> _c[1]; }
 <a name="l00271"></a>00271   };
 <a name="l00272"></a>00272 
@@ -325,8 +340,13 @@
 <a name="l00275"></a>00275 <span class="preprocessor">#endif  // GEOGRAPHICLIB_SPHERICALHARMONIC1_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalHarmonic2_8hpp.html b/doc/html/SphericalHarmonic2_8hpp.html
index bed1bcd..28cd7ee 100644
--- a/doc/html/SphericalHarmonic2_8hpp.html
+++ b/doc/html/SphericalHarmonic2_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalHarmonic2.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,10 +84,8 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic2_8hpp.html#a15f930b306cf77dee059d32d2bb417ad">GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP</a>   "$Id: ce4cda614c1966dea65610bc73bc4db562677fa8 $"</td></tr>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalHarmonic2_8hpp_source.html b/doc/html/SphericalHarmonic2_8hpp_source.html
index bde58b2..ca3f00a 100644
--- a/doc/html/SphericalHarmonic2_8hpp_source.html
+++ b/doc/html/SphericalHarmonic2_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalHarmonic2.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,7 +95,7 @@
 <a name="l00030"></a>00030 <span class="comment">   * \include example-SphericalHarmonic2.cpp</span>
 <a name="l00031"></a>00031 <span class="comment">   **********************************************************************/</span>
 <a name="l00032"></a>00032 
-<a name="l00033"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html">00033</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a> {
+<a name="l00033"></a>00033   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalHarmonic2 {
 <a name="l00034"></a>00034   <span class="keyword">public</span>:<span class="comment"></span>
 <a name="l00035"></a>00035 <span class="comment">    /**</span>
 <a name="l00036"></a>00036 <span class="comment">     * Supported normalizations for associate Legendre polynomials.</span>
@@ -92,14 +107,14 @@
 <a name="l00042"></a>00042 <span class="comment">       *</span>
 <a name="l00043"></a>00043 <span class="comment">       * @hideinitializer</span>
 <a name="l00044"></a>00044 <span class="comment">       **********************************************************************/</span>
-<a name="l00045"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea4b8746ff0805a8a819130794c103e946">00045</a>       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,<span class="comment"></span>
+<a name="l00045"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea4b8746ff0805a8a819130794c103e946">00045</a>       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::FULL,<span class="comment"></span>
 <a name="l00046"></a>00046 <span class="comment">      /**</span>
 <a name="l00047"></a>00047 <span class="comment">       * Schmidt semi-normalized associated Legendre polynomials.  See</span>
 <a name="l00048"></a>00048 <span class="comment">       * SphericalHarmonic::SCHMIDT for documentation.</span>
 <a name="l00049"></a>00049 <span class="comment">       *</span>
 <a name="l00050"></a>00050 <span class="comment">       * @hideinitializer</span>
 <a name="l00051"></a>00051 <span class="comment">       **********************************************************************/</span>
-<a name="l00052"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea326a84d3094b558a1c43b4b61f9c2d58">00052</a>       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,<span class="comment"></span>
+<a name="l00052"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea326a84d3094b558a1c43b4b61f9c2d58">00052</a>       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::SCHMIDT,<span class="comment"></span>
 <a name="l00053"></a>00053 <span class="comment">      /// \cond SKIP</span>
 <a name="l00054"></a>00054 <span class="comment"></span>      <span class="comment">// These are deprecated...</span>
 <a name="l00055"></a>00055       full = FULL,
@@ -108,8 +123,8 @@
 <a name="l00058"></a>00058 <span class="comment"></span>    };
 <a name="l00059"></a>00059 
 <a name="l00060"></a>00060   <span class="keyword">private</span>:
-<a name="l00061"></a>00061     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00062"></a>00062     <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> _c[3];
+<a name="l00061"></a>00061     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00062"></a>00062     <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff _c[3];
 <a name="l00063"></a>00063     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a;
 <a name="l00064"></a>00064     <span class="keywordtype">unsigned</span> _norm;
 <a name="l00065"></a>00065 
@@ -141,7 +156,7 @@
 <a name="l00091"></a>00091 <span class="comment">     * C', \e S', \e C'', and \e S''.  These arrays should not be altered or</span>
 <a name="l00092"></a>00092 <span class="comment">     * destroyed during the lifetime of a SphericalHarmonic object.</span>
 <a name="l00093"></a>00093 <span class="comment">     **********************************************************************/</span>
-<a name="l00094"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">00094</a>     <a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00094"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">00094</a>     SphericalHarmonic2(<span class="keyword">const</span> std::vector<real>& C,
 <a name="l00095"></a>00095                        <span class="keyword">const</span> std::vector<real>& S,
 <a name="l00096"></a>00096                        <span class="keywordtype">int</span> N,
 <a name="l00097"></a>00097                        <span class="keyword">const</span> std::vector<real>& C1,
@@ -192,7 +207,7 @@
 <a name="l00142"></a>00142 <span class="comment">     * C', \e S', \e C'', and \e S''.  These arrays should not be altered or</span>
 <a name="l00143"></a>00143 <span class="comment">     * destroyed during the lifetime of a SphericalHarmonic object.</span>
 <a name="l00144"></a>00144 <span class="comment">     **********************************************************************/</span>
-<a name="l00145"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a19300de2d629c014883026bf0042b6f0">00145</a>     <a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00145"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a19300de2d629c014883026bf0042b6f0">00145</a>     SphericalHarmonic2(<span class="keyword">const</span> std::vector<real>& C,
 <a name="l00146"></a>00146                        <span class="keyword">const</span> std::vector<real>& S,
 <a name="l00147"></a>00147                        <span class="keywordtype">int</span> N, <span class="keywordtype">int</span> nmx, <span class="keywordtype">int</span> mmx,
 <a name="l00148"></a>00148                        <span class="keyword">const</span> std::vector<real>& C1,
@@ -233,18 +248,18 @@
 <a name="l00183"></a>00183 <span class="comment">     * This routine requires constant memory and thus never throws an</span>
 <a name="l00184"></a>00184 <span class="comment">     * exception.</span>
 <a name="l00185"></a>00185 <span class="comment">     **********************************************************************/</span>
-<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a48f85ac41417815e6735ff5aa7d74155">00186</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real tau1, real tau2, real x, real y, real z)
+<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a48f85ac41417815e6735ff5aa7d74155">00186</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real tau1, real tau2, real x, real y, real z)
 <a name="l00187"></a>00187       <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00188"></a>00188       real f[] = {1, tau1, tau2};
 <a name="l00189"></a>00189       real v = 0;
 <a name="l00190"></a>00190       real dummy;
 <a name="l00191"></a>00191       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00192"></a>00192       <span class="keywordflow">case</span> FULL:
-<a name="l00193"></a>00193         v = SphericalEngine::Value<false, SphericalEngine::FULL, 3>
+<a name="l00193"></a>00193         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 3>
 <a name="l00194"></a>00194           (_c, f, x, y, z, _a, dummy, dummy, dummy);
 <a name="l00195"></a>00195         <span class="keywordflow">break</span>;
 <a name="l00196"></a>00196       <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00197"></a>00197         v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 3>
+<a name="l00197"></a>00197         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 3>
 <a name="l00198"></a>00198           (_c, f, x, y, z, _a, dummy, dummy, dummy);
 <a name="l00199"></a>00199         <span class="keywordflow">break</span>;
 <a name="l00200"></a>00200       }
@@ -270,17 +285,17 @@
 <a name="l00220"></a>00220 <span class="comment">     * computed.  This routine requires constant memory and thus never throws</span>
 <a name="l00221"></a>00221 <span class="comment">     * an exception.</span>
 <a name="l00222"></a>00222 <span class="comment">     **********************************************************************/</span>
-<a name="l00223"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">00223</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real tau1, real tau2, real x, real y, real z,
+<a name="l00223"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">00223</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real tau1, real tau2, real x, real y, real z,
 <a name="l00224"></a>00224                           real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00225"></a>00225       real f[] = {1, tau1, tau2};
 <a name="l00226"></a>00226       real v = 0;
 <a name="l00227"></a>00227       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00228"></a>00228       <span class="keywordflow">case</span> FULL:
-<a name="l00229"></a>00229         v = SphericalEngine::Value<true, SphericalEngine::FULL, 3>
+<a name="l00229"></a>00229         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 3>
 <a name="l00230"></a>00230           (_c, f, x, y, z, _a, gradx, grady, gradz);
 <a name="l00231"></a>00231         <span class="keywordflow">break</span>;
 <a name="l00232"></a>00232       <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00233"></a>00233         v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00233"></a>00233         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 3>
 <a name="l00234"></a>00234           (_c, f, x, y, z, _a, gradx, grady, gradz);
 <a name="l00235"></a>00235         <span class="keywordflow">break</span>;
 <a name="l00236"></a>00236       }
@@ -316,7 +331,7 @@
 <a name="l00266"></a>00266       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00267"></a>00267       <span class="keywordflow">case</span> FULL:
 <a name="l00268"></a>00268         <span class="keywordflow">return</span> gradp ?
-<a name="l00269"></a>00269           SphericalEngine::Circle<true, SphericalEngine::FULL, 3>
+<a name="l00269"></a>00269           <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 3>
 <a name="l00270"></a>00270           (_c, f, p, z, _a) :
 <a name="l00271"></a>00271           SphericalEngine::Circle<false, SphericalEngine::FULL, 3>
 <a name="l00272"></a>00272           (_c, f, p, z, _a);
@@ -324,7 +339,7 @@
 <a name="l00274"></a>00274       <span class="keywordflow">case</span> SCHMIDT:
 <a name="l00275"></a>00275       <span class="keywordflow">default</span>:                  <span class="comment">// To avoid compiler warnings</span>
 <a name="l00276"></a>00276         <span class="keywordflow">return</span> gradp ?
-<a name="l00277"></a>00277           SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00277"></a>00277           <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 3>
 <a name="l00278"></a>00278           (_c, f, p, z, _a) :
 <a name="l00279"></a>00279           SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 3>
 <a name="l00280"></a>00280           (_c, f, p, z, _a);
@@ -335,17 +350,17 @@
 <a name="l00285"></a>00285 <span class="comment">    /**</span>
 <a name="l00286"></a>00286 <span class="comment">     * @return the zeroth SphericalEngine::coeff object.</span>
 <a name="l00287"></a>00287 <span class="comment">     **********************************************************************/</span>
-<a name="l00288"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a166338f0b4ccf89c48278bb9514046f0">00288</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients() <span class="keyword">const</span> throw()
+<a name="l00288"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a166338f0b4ccf89c48278bb9514046f0">00288</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients() <span class="keyword">const</span> throw()
 <a name="l00289"></a>00289     { <span class="keywordflow">return</span> _c[0]; }<span class="comment"></span>
 <a name="l00290"></a>00290 <span class="comment">    /**</span>
 <a name="l00291"></a>00291 <span class="comment">     * @return the first SphericalEngine::coeff object.</span>
 <a name="l00292"></a>00292 <span class="comment">     **********************************************************************/</span>
-<a name="l00293"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a51751279dc4e0b6e19886723f8e8b493">00293</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients1() <span class="keyword">const</span> throw()
+<a name="l00293"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a51751279dc4e0b6e19886723f8e8b493">00293</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients1() <span class="keyword">const</span> throw()
 <a name="l00294"></a>00294     { <span class="keywordflow">return</span> _c[1]; }<span class="comment"></span>
 <a name="l00295"></a>00295 <span class="comment">    /**</span>
 <a name="l00296"></a>00296 <span class="comment">     * @return the second SphericalEngine::coeff object.</span>
 <a name="l00297"></a>00297 <span class="comment">     **********************************************************************/</span>
-<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a676b4c36923744bf5057b24484d9cf60">00298</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients2() <span class="keyword">const</span> throw()
+<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a676b4c36923744bf5057b24484d9cf60">00298</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients2() <span class="keyword">const</span> throw()
 <a name="l00299"></a>00299     { <span class="keywordflow">return</span> _c[2]; }
 <a name="l00300"></a>00300   };
 <a name="l00301"></a>00301 
@@ -354,8 +369,13 @@
 <a name="l00304"></a>00304 <span class="preprocessor">#endif  // GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalHarmonic_8hpp.html b/doc/html/SphericalHarmonic_8hpp.html
index 426108b..0ca715b 100644
--- a/doc/html/SphericalHarmonic_8hpp.html
+++ b/doc/html/SphericalHarmonic_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalHarmonic.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,13 +85,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic_8hpp.html#ab6742c760b0220c0a0d6423bed5b8bf8">GEOGRAPHICLIB_SPHERICALHARMONIC_HPP</a>   "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic_8hpp.html#ab6742c760b0220c0a0d6423bed5b8bf8">GEOGRAPHICLIB_SPHERICALHARMONIC_HPP</a>   "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">GeographicLib::SphericalHarmonic</a> class. </p>
@@ -89,7 +102,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP   "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP   "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"</td>
         </tr>
       </table>
 </div>
@@ -100,8 +113,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/SphericalHarmonic_8hpp_source.html b/doc/html/SphericalHarmonic_8hpp_source.html
index 02dd603..0a8dc2d 100644
--- a/doc/html/SphericalHarmonic_8hpp_source.html
+++ b/doc/html/SphericalHarmonic_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: SphericalHarmonic.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_SPHERICALHARMONIC_HPP)</span>
 <a name="l00011"></a><a class="code" href="SphericalHarmonic_8hpp.html#ab6742c760b0220c0a0d6423bed5b8bf8">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <vector></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -113,7 +128,7 @@
 <a name="l00063"></a>00063 <span class="comment">   * \include example-SphericalHarmonic.cpp</span>
 <a name="l00064"></a>00064 <span class="comment">   **********************************************************************/</span>
 <a name="l00065"></a>00065 
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html">00066</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> {
+<a name="l00066"></a>00066   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalHarmonic {
 <a name="l00067"></a>00067   <span class="keyword">public</span>:<span class="comment"></span>
 <a name="l00068"></a>00068 <span class="comment">    /**</span>
 <a name="l00069"></a>00069 <span class="comment">     * Supported normalizations for the associated Legendre polynomials.</span>
@@ -137,7 +152,7 @@
 <a name="l00087"></a>00087 <span class="comment">       *</span>
 <a name="l00088"></a>00088 <span class="comment">       * @hideinitializer</span>
 <a name="l00089"></a>00089 <span class="comment">       **********************************************************************/</span>
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">00090</a>       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,<span class="comment"></span>
+<a name="l00090"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">00090</a>       FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::FULL,<span class="comment"></span>
 <a name="l00091"></a>00091 <span class="comment">      /**</span>
 <a name="l00092"></a>00092 <span class="comment">       * Schmidt semi-normalized associated Legendre polynomials.</span>
 <a name="l00093"></a>00093 <span class="comment">       *</span>
@@ -156,7 +171,7 @@
 <a name="l00106"></a>00106 <span class="comment">       *</span>
 <a name="l00107"></a>00107 <span class="comment">       * @hideinitializer</span>
 <a name="l00108"></a>00108 <span class="comment">       **********************************************************************/</span>
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">00109</a>       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,<span class="comment"></span>
+<a name="l00109"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">00109</a>       SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::SCHMIDT,<span class="comment"></span>
 <a name="l00110"></a>00110 <span class="comment">      /// \cond SKIP</span>
 <a name="l00111"></a>00111 <span class="comment"></span>      <span class="comment">// These are deprecated...</span>
 <a name="l00112"></a>00112       full = FULL,
@@ -165,8 +180,8 @@
 <a name="l00115"></a>00115 <span class="comment"></span>    };
 <a name="l00116"></a>00116 
 <a name="l00117"></a>00117   <span class="keyword">private</span>:
-<a name="l00118"></a>00118     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00119"></a>00119     <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> _c[1];
+<a name="l00118"></a>00118     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00119"></a>00119     <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff _c[1];
 <a name="l00120"></a>00120     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a;
 <a name="l00121"></a>00121     <span class="keywordtype">unsigned</span> _norm;
 <a name="l00122"></a>00122 
@@ -206,7 +221,7 @@
 <a name="l00156"></a>00156 <span class="comment">     * These arrays should not be altered or destroyed during the lifetime of a</span>
 <a name="l00157"></a>00157 <span class="comment">     * SphericalHarmonic object.</span>
 <a name="l00158"></a>00158 <span class="comment">     **********************************************************************/</span>
-<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#adb71d28aa60a813ca3384f9c58ef8fa1">00159</a>     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#adb71d28aa60a813ca3384f9c58ef8fa1">00159</a>     SphericalHarmonic(<span class="keyword">const</span> std::vector<real>& C,
 <a name="l00160"></a>00160                       <span class="keyword">const</span> std::vector<real>& S,
 <a name="l00161"></a>00161                       <span class="keywordtype">int</span> N, real a, <span class="keywordtype">unsigned</span> norm = FULL)
 <a name="l00162"></a>00162       : _a(a)
@@ -233,7 +248,7 @@
 <a name="l00183"></a>00183 <span class="comment">     * These arrays should not be altered or destroyed during the lifetime of a</span>
 <a name="l00184"></a>00184 <span class="comment">     * SphericalHarmonic object.</span>
 <a name="l00185"></a>00185 <span class="comment">     **********************************************************************/</span>
-<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a2ed62c0ad8fb1ab36d5a331a3f33c3d7">00186</a>     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a2ed62c0ad8fb1ab36d5a331a3f33c3d7">00186</a>     SphericalHarmonic(<span class="keyword">const</span> std::vector<real>& C,
 <a name="l00187"></a>00187                       <span class="keyword">const</span> std::vector<real>& S,
 <a name="l00188"></a>00188                       <span class="keywordtype">int</span> N, <span class="keywordtype">int</span> nmx, <span class="keywordtype">int</span> mmx,
 <a name="l00189"></a>00189                       real a, <span class="keywordtype">unsigned</span> norm = FULL)
@@ -259,17 +274,17 @@
 <a name="l00209"></a>00209 <span class="comment">     * This routine requires constant memory and thus never throws an</span>
 <a name="l00210"></a>00210 <span class="comment">     * exception.</span>
 <a name="l00211"></a>00211 <span class="comment">     **********************************************************************/</span>
-<a name="l00212"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">00212</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">operator()</a>(real x, real y, real z)  <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00212"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">00212</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">operator()</a>(real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00213"></a>00213       real f[] = {1};
 <a name="l00214"></a>00214       real v = 0;
 <a name="l00215"></a>00215       real dummy;
 <a name="l00216"></a>00216       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00217"></a>00217       <span class="keywordflow">case</span> FULL:
-<a name="l00218"></a>00218         v = SphericalEngine::Value<false, SphericalEngine::FULL, 1>
+<a name="l00218"></a>00218         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 1>
 <a name="l00219"></a>00219           (_c, f, x, y, z, _a, dummy, dummy, dummy);
 <a name="l00220"></a>00220         <span class="keywordflow">break</span>;
 <a name="l00221"></a>00221       <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00222"></a>00222         v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 1>
+<a name="l00222"></a>00222         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 1>
 <a name="l00223"></a>00223           (_c, f, x, y, z, _a, dummy, dummy, dummy);
 <a name="l00224"></a>00224         <span class="keywordflow">break</span>;
 <a name="l00225"></a>00225       }
@@ -292,17 +307,17 @@
 <a name="l00242"></a>00242 <span class="comment">     * computed.  This routine requires constant memory and thus never throws</span>
 <a name="l00243"></a>00243 <span class="comment">     * an exception.</span>
 <a name="l00244"></a>00244 <span class="comment">     **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">00245</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real x, real y, real z,
+<a name="l00245"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">00245</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real x, real y, real z,
 <a name="l00246"></a>00246                           real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00247"></a>00247       real f[] = {1};
 <a name="l00248"></a>00248       real v = 0;
 <a name="l00249"></a>00249       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00250"></a>00250       <span class="keywordflow">case</span> FULL:
-<a name="l00251"></a>00251         v = SphericalEngine::Value<true, SphericalEngine::FULL, 1>
+<a name="l00251"></a>00251         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 1>
 <a name="l00252"></a>00252           (_c, f, x, y, z, _a, gradx, grady, gradz);
 <a name="l00253"></a>00253         <span class="keywordflow">break</span>;
 <a name="l00254"></a>00254       <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00255"></a>00255         v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00255"></a>00255         v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 1>
 <a name="l00256"></a>00256           (_c, f, x, y, z, _a, gradx, grady, gradz);
 <a name="l00257"></a>00257         <span class="keywordflow">break</span>;
 <a name="l00258"></a>00258       }
@@ -364,7 +379,7 @@
 <a name="l00314"></a>00314       <span class="keywordflow">switch</span> (_norm) {
 <a name="l00315"></a>00315       <span class="keywordflow">case</span> FULL:
 <a name="l00316"></a>00316         <span class="keywordflow">return</span> gradp ?
-<a name="l00317"></a>00317           SphericalEngine::Circle<true, SphericalEngine::FULL, 1>
+<a name="l00317"></a>00317           <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 1>
 <a name="l00318"></a>00318           (_c, f, p, z, _a) :
 <a name="l00319"></a>00319           SphericalEngine::Circle<false, SphericalEngine::FULL, 1>
 <a name="l00320"></a>00320           (_c, f, p, z, _a);
@@ -372,7 +387,7 @@
 <a name="l00322"></a>00322       <span class="keywordflow">case</span> SCHMIDT:
 <a name="l00323"></a>00323       <span class="keywordflow">default</span>:                  <span class="comment">// To avoid compiler warnings</span>
 <a name="l00324"></a>00324         <span class="keywordflow">return</span> gradp ?
-<a name="l00325"></a>00325           SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00325"></a>00325           <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 1>
 <a name="l00326"></a>00326           (_c, f, p, z, _a) :
 <a name="l00327"></a>00327           SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 1>
 <a name="l00328"></a>00328           (_c, f, p, z, _a);
@@ -383,7 +398,7 @@
 <a name="l00333"></a>00333 <span class="comment">    /**</span>
 <a name="l00334"></a>00334 <span class="comment">     * @return the zeroth SphericalEngine::coeff object.</span>
 <a name="l00335"></a>00335 <span class="comment">     **********************************************************************/</span>
-<a name="l00336"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#ac8886de1d1400ecf6482f6441c76a8a0">00336</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients() <span class="keyword">const</span> throw()
+<a name="l00336"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#ac8886de1d1400ecf6482f6441c76a8a0">00336</a>     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients() <span class="keyword">const</span> throw()
 <a name="l00337"></a>00337     { <span class="keywordflow">return</span> _c[0]; }
 <a name="l00338"></a>00338   };
 <a name="l00339"></a>00339 
@@ -392,8 +407,13 @@
 <a name="l00342"></a>00342 <span class="preprocessor">#endif  // GEOGRAPHICLIB_SPHERICALHARMONIC_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercatorExact_8cpp.html b/doc/html/TransverseMercatorExact_8cpp.html
index 5f69fcf..1d73286 100644
--- a/doc/html/TransverseMercatorExact_8cpp.html
+++ b/doc/html/TransverseMercatorExact_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercatorExact.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP</a>   "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP</a>   "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>The relevant section of Lee's paper is part V, pp 67–101, <a href="http://dx.doi.org/10.3138/X687-1574-4325-WM62">Conformal Projections Based On Jacobian Elliptic Functions</a>.</p>
 <p>The method entails using the Thompson Transverse Mercator as an intermediate projection. The projections from the intermediate coordinates to [<em>phi</em>, <em>lam</em>] and [<em>x</em>, <em>y</em>] are given by elliptic functions. The inverse of these projections are found by Newton's method with a suitable starting guess.</p>
 <p>This implementation and notation closely follows Lee, with the following exceptions: </p>
@@ -109,7 +122,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP   "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP   "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"</td>
         </tr>
       </table>
 </div>
@@ -120,8 +133,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercatorExact_8cpp_source.html b/doc/html/TransverseMercatorExact_8cpp_source.html
index f0d36ee..1e72f8f 100644
--- a/doc/html/TransverseMercatorExact_8cpp_source.html
+++ b/doc/html/TransverseMercatorExact_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercatorExact.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercatorExact.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::TransverseMercatorExact class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * The relevant section of Lee's paper is part V, pp 67&ndash;101,</span>
@@ -91,7 +106,7 @@
 <a name="l00042"></a>00042 <span class="preprocessor">#include <<a class="code" href="TransverseMercatorExact_8hpp.html" title="Header for GeographicLib::TransverseMercatorExact class.">GeographicLib/TransverseMercatorExact.hpp</a>></span>
 <a name="l00043"></a>00043 
 <a name="l00044"></a><a class="code" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">00044</a> <span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP \</span>
-<a name="l00045"></a>00045 <span class="preprocessor">  "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">  "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"</span>
 <a name="l00046"></a>00046 <span class="preprocessor"></span>
 <a name="l00047"></a>00047 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP</a>)
 <a name="l00048"></a>00048 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</a>)
@@ -100,13 +115,13 @@
 <a name="l00051"></a>00051 
 <a name="l00052"></a>00052   <span class="keyword">using namespace </span>std;
 <a name="l00053"></a>00053 
-<a name="l00054"></a>00054   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::tol_ =
+<a name="l00054"></a>00054   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::tol_ =
 <a name="l00055"></a>00055     numeric_limits<real>::epsilon();
-<a name="l00056"></a>00056   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::tol1_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(tol_);
-<a name="l00057"></a>00057   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::tol2_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * tol_;
-<a name="l00058"></a>00058   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::taytol_ = pow(tol_, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.6));
+<a name="l00056"></a>00056   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::tol1_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(tol_);
+<a name="l00057"></a>00057   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::tol2_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * tol_;
+<a name="l00058"></a>00058   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::taytol_ = pow(tol_, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.6));
 <a name="l00059"></a>00059   <span class="comment">// Overflow value s.t. atan(overflow_) = pi/2</span>
-<a name="l00060"></a>00060   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::overflow_ = 1 / Math::sq(tol_);
+<a name="l00060"></a>00060   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::overflow_ = 1 / Math::sq(tol_);
 <a name="l00061"></a>00061 
 <a name="l00062"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a72ffcc89eee6f30a6d1f4d061518a6f1">00062</a>   TransverseMercatorExact::TransverseMercatorExact(real a, real f, real k0,
 <a name="l00063"></a>00063                                                    <span class="keywordtype">bool</span> extendp)
@@ -121,13 +136,13 @@
 <a name="l00072"></a>00072     , _Eu(_mu)
 <a name="l00073"></a>00073     , _Ev(_mv)
 <a name="l00074"></a>00074   {
-<a name="l00075"></a>00075     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00075"></a>00075     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00076"></a>00076       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
 <a name="l00077"></a>00077     <span class="keywordflow">if</span> (!(_f > 0))
 <a name="l00078"></a>00078       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Flattening is not positive"</span>);
 <a name="l00079"></a>00079     <span class="keywordflow">if</span> (!(_f < 1))
 <a name="l00080"></a>00080       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00081"></a>00081     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_k0) && _k0 > 0))
+<a name="l00081"></a>00081     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_k0) && _k0 > 0))
 <a name="l00082"></a>00082       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00083"></a>00083   }
 <a name="l00084"></a>00084 
@@ -137,14 +152,14 @@
 <a name="l00088"></a>00088                                Constants::UTM_k0<real>());
 <a name="l00089"></a>00089 
 <a name="l00090"></a>00090   <span class="comment">// tau = tan(phi), taup = sinh(psi)</span>
-<a name="l00091"></a>00091   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> TransverseMercatorExact::taup(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00091"></a>00091   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::taup(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00092"></a>00092     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00093"></a>00093       tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
-<a name="l00094"></a>00094       sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * tau / tau1) );
-<a name="l00095"></a>00095     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1;
+<a name="l00093"></a>00093       tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00094"></a>00094       sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * tau / tau1) );
+<a name="l00095"></a>00095     <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1;
 <a name="l00096"></a>00096   }
 <a name="l00097"></a>00097 
-<a name="l00098"></a>00098   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> TransverseMercatorExact::taupinv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00098"></a>00098   Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::taupinv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00099"></a>00099     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00100"></a>00100       <span class="comment">// See comment in TransverseMercator.cpp about the initial guess</span>
 <a name="l00101"></a>00101       tau = taup/_mv,
@@ -152,11 +167,11 @@
 <a name="l00103"></a>00103     <span class="comment">// min iterations = 1, max iterations = 2; mean = 1.94</span>
 <a name="l00104"></a>00104     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < numit_; ++i) {
 <a name="l00105"></a>00105       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00106"></a>00106         tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
-<a name="l00107"></a>00107         sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * tau / tau1 ) ),
-<a name="l00108"></a>00108         taupa = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
-<a name="l00109"></a>00109         dtau = (taup - taupa) * (1 + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau)) /
-<a name="l00110"></a>00110         ( _mv * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
+<a name="l00106"></a>00106         tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00107"></a>00107         sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * tau / tau1 ) ),
+<a name="l00108"></a>00108         taupa = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
+<a name="l00109"></a>00109         dtau = (taup - taupa) * (1 + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau)) /
+<a name="l00110"></a>00110         ( _mv * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
 <a name="l00111"></a>00111       tau += dtau;
 <a name="l00112"></a>00112       <span class="keywordflow">if</span> (!(abs(dtau) >= stol))
 <a name="l00113"></a>00113         <span class="keywordflow">break</span>;
@@ -172,14 +187,14 @@
 <a name="l00123"></a>00123     <span class="comment">// atanh(_e * snu / dnv) =</span>
 <a name="l00124"></a>00124     <span class="comment">//         asinh(_e * snu / sqrt(_mu * cnu^2 + _mv * cnv^2))</span>
 <a name="l00125"></a>00125     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00126"></a>00126       d1 = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv)),
-<a name="l00127"></a>00127       d2 = sqrt(_mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv)),
+<a name="l00126"></a>00126       d1 = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv)),
+<a name="l00127"></a>00127       d2 = sqrt(_mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv)),
 <a name="l00128"></a>00128       t1 = (d1 ? snu * dnv / d1 : (snu < 0 ? -overflow_ : overflow_)),
-<a name="l00129"></a>00129       t2 = (d2 ? sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(_e * snu / d2) ) :
+<a name="l00129"></a>00129       t2 = (d2 ? sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(_e * snu / d2) ) :
 <a name="l00130"></a>00130             (snu < 0 ? -overflow_ : overflow_));
 <a name="l00131"></a>00131     <span class="comment">// psi = asinh(t1) - asinh(t2)</span>
 <a name="l00132"></a>00132     <span class="comment">// taup = sinh(psi)</span>
-<a name="l00133"></a>00133     taup = t1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t2) - t2 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t1);
+<a name="l00133"></a>00133     taup = t1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t2) - t2 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t1);
 <a name="l00134"></a>00134     lam = (d1 != 0 && d2 != 0) ?
 <a name="l00135"></a>00135       atan2(dnu * snv, cnu * cnv) - _e * atan2(_e * cnu * snv, dnu * cnv) :
 <a name="l00136"></a>00136       0;
@@ -192,9 +207,9 @@
 <a name="l00143"></a>00143                                         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00144"></a>00144     <span class="comment">// Lee 54.21 but write (1 - dnu^2 * snv^2) = (cnv^2 + _mu * snu^2 * snv^2)</span>
 <a name="l00145"></a>00145     <span class="comment">// (see A+S 16.21.4)</span>
-<a name="l00146"></a>00146     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv));
-<a name="l00147"></a>00147     du =  cnu * dnu * dnv * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv) - _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv)) / d;
-<a name="l00148"></a>00148     dv = -snu * snv * cnv * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(dnu * dnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu)) / d;
+<a name="l00146"></a>00146     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv));
+<a name="l00147"></a>00147     du =  cnu * dnu * dnv * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv) - _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv)) / d;
+<a name="l00148"></a>00148     dv = -snu * snv * cnv * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(dnu * dnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu)) / d;
 <a name="l00149"></a>00149   }
 <a name="l00150"></a>00150 
 <a name="l00151"></a>00151   <span class="comment">// Starting point for zetainv</span>
@@ -216,7 +231,7 @@
 <a name="l00167"></a>00167       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00168"></a>00168         psix = 1 - psi / _e,
 <a name="l00169"></a>00169         lamx = (Math::pi<real>()/2 - lam) / _e;
-<a name="l00170"></a>00170       u = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(sin(lamx) / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(cos(lamx), sinh(psix))) *
+<a name="l00170"></a>00170       u = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(sin(lamx) / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(cos(lamx), sinh(psix))) *
 <a name="l00171"></a>00171         (1 + _mu/2);
 <a name="l00172"></a>00172       v = atan2(cos(lamx), sinh(psix)) * (1 + _mu/2);
 <a name="l00173"></a>00173       u = _Eu.K() - u;
@@ -236,7 +251,7 @@
 <a name="l00187"></a>00187       <span class="comment">// arg(zeta - zeta0) = [-90, 180]</span>
 <a name="l00188"></a>00188       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00189"></a>00189         dlam = lam - (1 - _e) * Math::pi<real>()/2,
-<a name="l00190"></a>00190         rad = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(psi, dlam),
+<a name="l00190"></a>00190         rad = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(psi, dlam),
 <a name="l00191"></a>00191         <span class="comment">// atan2(dlam-psi, psi+dlam) + 45d gives arg(zeta - zeta0) in range</span>
 <a name="l00192"></a>00192         <span class="comment">// [-135, 225).  Subtracting 180 (since multiplier is negative) makes</span>
 <a name="l00193"></a>00193         <span class="comment">// range [-315, 45).  Multiplying by 1/3 (for cube root) gives range</span>
@@ -245,7 +260,7 @@
 <a name="l00196"></a>00196         ang = atan2(dlam-psi, psi+dlam) - <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * Math::pi<real>();
 <a name="l00197"></a>00197       <span class="comment">// Error using this guess is about 0.21 * (rad/e)^(5/3)</span>
 <a name="l00198"></a>00198       retval = rad < _e * taytol_;
-<a name="l00199"></a>00199       rad = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(3 / (_mv * _e) * rad);
+<a name="l00199"></a>00199       rad = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(3 / (_mv * _e) * rad);
 <a name="l00200"></a>00200       ang /= 3;
 <a name="l00201"></a>00201       u = rad * cos(ang);
 <a name="l00202"></a>00202       v = rad * sin(ang) + _Ev.K();
@@ -253,7 +268,7 @@
 <a name="l00204"></a>00204       <span class="comment">// Use spherical TM, Lee 12.6 -- writing atanh(sin(lam) / cosh(psi)) =</span>
 <a name="l00205"></a>00205       <span class="comment">// asinh(sin(lam) / hypot(cos(lam), sinh(psi))).  This takes care of the</span>
 <a name="l00206"></a>00206       <span class="comment">// log singularity at zeta = Eu.K() (corresponding to the north pole)</span>
-<a name="l00207"></a>00207       v = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(cos(lam), sinh(psi)));
+<a name="l00207"></a>00207       v = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(cos(lam), sinh(psi)));
 <a name="l00208"></a>00208       u = atan2(sinh(psi), cos(lam));
 <a name="l00209"></a>00209       <span class="comment">// But scale to put 90,0 on the right place</span>
 <a name="l00210"></a>00210       u *= _Eu.K() / (Math::pi<real>()/2);
@@ -266,11 +281,11 @@
 <a name="l00217"></a>00217   <span class="keywordtype">void</span> TransverseMercatorExact::zetainv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v)
 <a name="l00218"></a>00218     <span class="keyword">const</span> <span class="keywordflow">throw</span>()  {
 <a name="l00219"></a>00219     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00220"></a>00220       psi = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(taup),
-<a name="l00221"></a>00221       scal = 1/<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup);
+<a name="l00220"></a>00220       psi = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(taup),
+<a name="l00221"></a>00221       scal = 1/<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup);
 <a name="l00222"></a>00222     <span class="keywordflow">if</span> (zetainv0(psi, lam, u, v))
 <a name="l00223"></a>00223       <span class="keywordflow">return</span>;
-<a name="l00224"></a>00224     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stol2 = tol2_ / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(max(psi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)));
+<a name="l00224"></a>00224     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stol2 = tol2_ / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(max(psi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)));
 <a name="l00225"></a>00225     <span class="comment">// min iterations = 2, max iterations = 6; mean = 4.0</span>
 <a name="l00226"></a>00226     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, trip = 0; i < numit_; ++i) {
 <a name="l00227"></a>00227       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, cnu, dnu, snv, cnv, dnv;
@@ -289,7 +304,7 @@
 <a name="l00240"></a>00240       v -= delv;
 <a name="l00241"></a>00241       <span class="keywordflow">if</span> (trip)
 <a name="l00242"></a>00242         <span class="keywordflow">break</span>;
-<a name="l00243"></a>00243       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delv);
+<a name="l00243"></a>00243       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delv);
 <a name="l00244"></a>00244       <span class="keywordflow">if</span> (!(delw2 >= stol2))
 <a name="l00245"></a>00245         ++trip;
 <a name="l00246"></a>00246     }
@@ -300,7 +315,7 @@
 <a name="l00251"></a>00251                                       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00252"></a>00252     <span class="comment">// Lee 55.4 writing</span>
 <a name="l00253"></a>00253     <span class="comment">// dnu^2 + dnv^2 - 1 = _mu * cnu^2 + _mv * cnv^2</span>
-<a name="l00254"></a>00254     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv);
+<a name="l00254"></a>00254     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv);
 <a name="l00255"></a>00255     xi = _Eu.E(snu, cnu, dnu) - _mu * snu * cnu * dnu / d;
 <a name="l00256"></a>00256     eta = v - _Ev.E(snv, cnv, dnv) + _mv * snv * cnv * dnv / d;
 <a name="l00257"></a>00257   }
@@ -312,11 +327,11 @@
 <a name="l00263"></a>00263                                          <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
 <a name="l00264"></a>00264     <span class="comment">// Reciprocal of 55.9: dw/ds = dn(w)^2/_mv, expanding complex dn(w) using</span>
 <a name="l00265"></a>00265     <span class="comment">// A+S 16.21.4</span>
-<a name="l00266"></a>00266     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv));
+<a name="l00266"></a>00266     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv));
 <a name="l00267"></a>00267     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00268"></a>00268       dnr = dnu * cnv * dnv,
 <a name="l00269"></a>00269       dni = - _mu * snu * cnu * snv;
-<a name="l00270"></a>00270     du = (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(dnr) - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(dni)) / d;
+<a name="l00270"></a>00270     du = (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(dnr) - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(dni)) / d;
 <a name="l00271"></a>00271     dv = 2 * dnr * dni / d;
 <a name="l00272"></a>00272   }
 <a name="l00273"></a>00273 
@@ -333,7 +348,7 @@
 <a name="l00284"></a>00284       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00285"></a>00285         x = xi - _Eu.E(),
 <a name="l00286"></a>00286         y = eta - _Ev.KE(),
-<a name="l00287"></a>00287         r2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(x) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(y);
+<a name="l00287"></a>00287         r2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(x) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(y);
 <a name="l00288"></a>00288       u = _Eu.K() + x/r2;
 <a name="l00289"></a>00289       v = _Ev.K() - y/r2;
 <a name="l00290"></a>00290     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((eta > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * _Ev.KE() && xi < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.25) * _Eu.E())
@@ -352,13 +367,13 @@
 <a name="l00303"></a>00303       <span class="comment">// mapping arg = [-pi/2, -pi/6] to [-pi/2, pi/2]</span>
 <a name="l00304"></a>00304       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
 <a name="l00305"></a>00305         deta = eta - _Ev.KE(),
-<a name="l00306"></a>00306         rad = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(xi, deta),
+<a name="l00306"></a>00306         rad = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(xi, deta),
 <a name="l00307"></a>00307         <span class="comment">// Map the range [-90, 180] in sigma space to [-90, 0] in w space.  See</span>
 <a name="l00308"></a>00308         <span class="comment">// discussion in zetainv0 on the cut for ang.</span>
 <a name="l00309"></a>00309         ang = atan2(deta-xi, xi+deta) - <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * Math::pi<real>();
 <a name="l00310"></a>00310       <span class="comment">// Error using this guess is about 0.068 * rad^(5/3)</span>
 <a name="l00311"></a>00311       retval = rad < 2 * taytol_;
-<a name="l00312"></a>00312       rad = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(3 / _mv * rad);
+<a name="l00312"></a>00312       rad = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(3 / _mv * rad);
 <a name="l00313"></a>00313       ang /= 3;
 <a name="l00314"></a>00314       u = rad * cos(ang);
 <a name="l00315"></a>00315       v = rad * sin(ang) + _Ev.K();
@@ -392,7 +407,7 @@
 <a name="l00343"></a>00343       v -= delv;
 <a name="l00344"></a>00344       <span class="keywordflow">if</span> (trip)
 <a name="l00345"></a>00345         <span class="keywordflow">break</span>;
-<a name="l00346"></a>00346       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delv);
+<a name="l00346"></a>00346       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delv);
 <a name="l00347"></a>00347       <span class="keywordflow">if</span> (!(delw2 >= tol2_))
 <a name="l00348"></a>00348         ++trip;
 <a name="l00349"></a>00349     }
@@ -402,7 +417,7 @@
 <a name="l00353"></a>00353                                        <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
 <a name="l00354"></a>00354                                        <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
 <a name="l00355"></a>00355                                        <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00356"></a>00356     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sec2 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau);    <span class="comment">// sec(phi)^2</span>
+<a name="l00356"></a>00356     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sec2 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau);    <span class="comment">// sec(phi)^2</span>
 <a name="l00357"></a>00357     <span class="comment">// Lee 55.12 -- negated for our sign convention.  gamma gives the bearing</span>
 <a name="l00358"></a>00358     <span class="comment">// (clockwise from true north) of grid north</span>
 <a name="l00359"></a>00359     gamma = atan2(_mv * snu * snv * cnv, cnu * dnu * dnv);
@@ -420,8 +435,8 @@
 <a name="l00371"></a>00371     <span class="comment">//</span>
 <a name="l00372"></a>00372     <span class="comment">//    _mv + _mu * c^2 instead of 1 - _mu * sin(phi)^2</span>
 <a name="l00373"></a>00373     k = sqrt(_mv + _mu / sec2) * sqrt(sec2) *
-<a name="l00374"></a>00374       sqrt( (_mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snv) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu * dnv)) /
-<a name="l00375"></a>00375             (_mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv)) );
+<a name="l00374"></a>00374       sqrt( (_mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snv) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu * dnv)) /
+<a name="l00375"></a>00375             (_mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv)) );
 <a name="l00376"></a>00376   }
 <a name="l00377"></a>00377 
 <a name="l00378"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">00378</a>   <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">TransverseMercatorExact::Forward</a>(real lon0, real lat, real lon,
@@ -448,7 +463,7 @@
 <a name="l00399"></a>00399       lon = 180 - lon;
 <a name="l00400"></a>00400     }
 <a name="l00401"></a>00401     real
-<a name="l00402"></a>00402       phi = lat * Math::degree<real>(),
+<a name="l00402"></a>00402       phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00403"></a>00403       lam = lon * Math::degree<real>(),
 <a name="l00404"></a>00404       tau = tanx(phi);
 <a name="l00405"></a>00405 
@@ -478,7 +493,7 @@
 <a name="l00429"></a>00429     zeta(u, snu, cnu, dnu, v, snv, cnv, dnv, tau, lam);
 <a name="l00430"></a>00430     tau=taupinv(tau);
 <a name="l00431"></a>00431     Scale(tau, lam, snu, cnu, dnu, snv, cnv, dnv, gamma, k);
-<a name="l00432"></a>00432     gamma /= Math::degree<real>();
+<a name="l00432"></a>00432     gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00433"></a>00433     <span class="keywordflow">if</span> (backside)
 <a name="l00434"></a>00434       gamma = 180 - gamma;
 <a name="l00435"></a>00435     gamma *= latsign * lonsign;
@@ -519,16 +534,16 @@
 <a name="l00470"></a>00470       zeta(u, snu, cnu, dnu, v, snv, cnv, dnv, tau, lam);
 <a name="l00471"></a>00471       tau = taupinv(tau);
 <a name="l00472"></a>00472       phi = atan(tau);
-<a name="l00473"></a>00473       lat = phi / Math::degree<real>();
-<a name="l00474"></a>00474       lon = lam / Math::degree<real>();
+<a name="l00473"></a>00473       lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00474"></a>00474       lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00475"></a>00475     } <span class="keywordflow">else</span> {
 <a name="l00476"></a>00476       tau = overflow_;
-<a name="l00477"></a>00477       phi = Math::pi<real>()/2;
+<a name="l00477"></a>00477       phi = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
 <a name="l00478"></a>00478       lat = 90;
 <a name="l00479"></a>00479       lon = lam = 0;
 <a name="l00480"></a>00480     }
 <a name="l00481"></a>00481     Scale(tau, lam, snu, cnu, dnu, snv, cnv, dnv, gamma, k);
-<a name="l00482"></a>00482     gamma /= Math::degree<real>();
+<a name="l00482"></a>00482     gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00483"></a>00483     <span class="keywordflow">if</span> (backside)
 <a name="l00484"></a>00484       lon = 180 - lon;
 <a name="l00485"></a>00485     lon *= lonsign;
@@ -553,8 +568,13 @@
 <a name="l00504"></a>00504 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercatorExact_8hpp.html b/doc/html/TransverseMercatorExact_8hpp.html
index 9eea3d4..3e2c11f 100644
--- a/doc/html/TransverseMercatorExact_8hpp.html
+++ b/doc/html/TransverseMercatorExact_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercatorExact.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</a>   "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</a>   "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP   "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP   "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercatorExact_8hpp_source.html b/doc/html/TransverseMercatorExact_8hpp_source.html
index 5c28e7c..5021c1a 100644
--- a/doc/html/TransverseMercatorExact_8hpp_source.html
+++ b/doc/html/TransverseMercatorExact_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercatorExact.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercatorExact.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::TransverseMercatorExact class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP)</span>
 <a name="l00011"></a><a class="code" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="EllipticFunction_8hpp.html" title="Header for GeographicLib::EllipticFunction class.">GeographicLib/EllipticFunction.hpp</a>></span>
@@ -120,205 +135,216 @@
 <a name="l00070"></a>00070 <span class="comment">   *</span>
 <a name="l00071"></a>00071 <span class="comment">   * Example of use:</span>
 <a name="l00072"></a>00072 <span class="comment">   * \include example-TransverseMercatorExact.cpp</span>
-<a name="l00073"></a>00073 <span class="comment">   **********************************************************************/</span>
-<a name="l00074"></a>00074 
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html">00075</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> {
-<a name="l00076"></a>00076   <span class="keyword">private</span>:
-<a name="l00077"></a>00077     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00078"></a>00078     <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00079"></a>00079     <span class="keyword">static</span> <span class="keyword">const</span> real tol1_;
-<a name="l00080"></a>00080     <span class="keyword">static</span> <span class="keyword">const</span> real tol2_;
-<a name="l00081"></a>00081     <span class="keyword">static</span> <span class="keyword">const</span> real taytol_;
-<a name="l00082"></a>00082     <span class="keyword">static</span> <span class="keyword">const</span> real overflow_;
-<a name="l00083"></a>00083     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 10;
-<a name="l00084"></a>00084     real _a, _f, _k0, _mu, _mv, _e, _ep2;
-<a name="l00085"></a>00085     <span class="keywordtype">bool</span> _extendp;
-<a name="l00086"></a>00086     <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> _Eu, _Ev;
-<a name="l00087"></a>00087     <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
-<a name="l00088"></a>00088     <span class="keyword">static</span> <span class="keyword">inline</span> real tanx(real x) <span class="keywordflow">throw</span>() {
-<a name="l00089"></a>00089       real t = std::tan(x);
-<a name="l00090"></a>00090       <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
-<a name="l00091"></a>00091       <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
-<a name="l00092"></a>00092     }
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094     real taup(real tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00095"></a>00095     real taupinv(real taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00096"></a>00096 
-<a name="l00097"></a>00097     <span class="keywordtype">void</span> zeta(real u, real snu, real cnu, real dnu,
-<a name="l00098"></a>00098               real v, real snv, real cnv, real dnv,
-<a name="l00099"></a>00099               real& taup, real& lam) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00073"></a>00073 <span class="comment">   *</span>
+<a name="l00074"></a>00074 <span class="comment">   * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a</span>
+<a name="l00075"></a>00075 <span class="comment">   * command-line utility providing access to the functionality of</span>
+<a name="l00076"></a>00076 <span class="comment">   * TransverseMercator and TransverseMercatorExact.</span>
+<a name="l00077"></a>00077 <span class="comment">   **********************************************************************/</span>
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> TransverseMercatorExact {
+<a name="l00080"></a>00080   <span class="keyword">private</span>:
+<a name="l00081"></a>00081     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00082"></a>00082     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00083"></a>00083     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol1_;
+<a name="l00084"></a>00084     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol2_;
+<a name="l00085"></a>00085     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taytol_;
+<a name="l00086"></a>00086     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> overflow_;
+<a name="l00087"></a>00087     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 10;
+<a name="l00088"></a>00088     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _k0, _mu, _mv, _e, _ep2;
+<a name="l00089"></a>00089     <span class="keywordtype">bool</span> _extendp;
+<a name="l00090"></a>00090     EllipticFunction _Eu, _Ev;
+<a name="l00091"></a>00091     <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
+<a name="l00092"></a>00092     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tanx(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00093"></a>00093       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = std::tan(x);
+<a name="l00094"></a>00094       <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
+<a name="l00095"></a>00095       <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
+<a name="l00096"></a>00096     }
+<a name="l00097"></a>00097 
+<a name="l00098"></a>00098     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00099"></a>00099     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taupinv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00100"></a>00100 
-<a name="l00101"></a>00101     <span class="keywordtype">void</span> dwdzeta(real u, real snu, real cnu, real dnu,
-<a name="l00102"></a>00102                  real v, real snv, real cnv, real dnv,
-<a name="l00103"></a>00103                  real& du, real& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00101"></a>00101     <span class="keywordtype">void</span> zeta(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00102"></a>00102               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00103"></a>00103               <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& taup, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lam) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00104"></a>00104 
-<a name="l00105"></a>00105     <span class="keywordtype">bool</span> zetainv0(real psi, real lam, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00106"></a>00106     <span class="keywordtype">void</span> zetainv(real taup, real lam, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00107"></a>00107 
-<a name="l00108"></a>00108     <span class="keywordtype">void</span> sigma(real u, real snu, real cnu, real dnu,
-<a name="l00109"></a>00109                real v, real snv, real cnv, real dnv,
-<a name="l00110"></a>00110                real& xi, real& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00105"></a>00105     <span class="keywordtype">void</span> dwdzeta(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00106"></a>00106                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00107"></a>00107                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109     <span class="keywordtype">bool</span> zetainv0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> psi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thr [...]
+<a name="l00110"></a>00110     <span class="keywordtype">void</span> zetainv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thr [...]
 <a name="l00111"></a>00111 
-<a name="l00112"></a>00112     <span class="keywordtype">void</span> dwdsigma(real u, real snu, real cnu, real dnu,
-<a name="l00113"></a>00113                   real v, real snv, real cnv, real dnv,
-<a name="l00114"></a>00114                   real& du, real& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00112"></a>00112     <span class="keywordtype">void</span> sigma(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00113"></a>00113                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00114"></a>00114                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
 <a name="l00115"></a>00115 
-<a name="l00116"></a>00116     <span class="keywordtype">bool</span> sigmainv0(real xi, real eta, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00117"></a>00117     <span class="keywordtype">void</span> sigmainv(real xi, real eta, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00118"></a>00118 
-<a name="l00119"></a>00119     <span class="keywordtype">void</span> Scale(real tau, real lam,
-<a name="l00120"></a>00120                real snu, real cnu, real dnu,
-<a name="l00121"></a>00121                real snv, real cnv, real dnv,
-<a name="l00122"></a>00122                real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00123"></a>00123 
-<a name="l00124"></a>00124   <span class="keyword">public</span>:
-<a name="l00125"></a>00125 <span class="comment"></span>
-<a name="l00126"></a>00126 <span class="comment">    /**</span>
-<a name="l00127"></a>00127 <span class="comment">     * Constructor for a ellipsoid with</span>
-<a name="l00128"></a>00128 <span class="comment">     *</span>
-<a name="l00129"></a>00129 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
-<a name="l00130"></a>00130 <span class="comment">     * @param[in] f flattening of ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00131"></a>00131 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00132"></a>00132 <span class="comment">     * @param[in] k0 central scale factor.</span>
-<a name="l00133"></a>00133 <span class="comment">     * @param[in] extendp use extended domain.</span>
-<a name="l00134"></a>00134 <span class="comment">     *</span>
-<a name="l00135"></a>00135 <span class="comment">     * The transverse Mercator projection has a branch point singularity at \e</span>
-<a name="l00136"></a>00136 <span class="comment">     * lat = 0 and \e lon - \e lon0 = 90 (1 - \e e) or (for</span>
-<a name="l00137"></a>00137 <span class="comment">     * TransverseMercatorExact::UTM) x = 18381 km, y = 0m.  The \e extendp</span>
-<a name="l00138"></a>00138 <span class="comment">     * argument governs where the branch cut is placed.  With \e extendp =</span>
-<a name="l00139"></a>00139 <span class="comment">     * false, the "standard" convention is followed, namely the cut is placed</span>
-<a name="l00140"></a>00140 <span class="comment">     * along x > 18381 km, y = 0m.  Forward can be called with any \e lat and</span>
-<a name="l00141"></a>00141 <span class="comment">     * \e lon then produces the transformation shown in Lee, Fig 46.  Reverse</span>
-<a name="l00142"></a>00142 <span class="comment">     * analytically continues this in the +/- \e x direction.  As a</span>
-<a name="l00143"></a>00143 <span class="comment">     * consequence, Reverse may map multiple points to the same geographic</span>
-<a name="l00144"></a>00144 <span class="comment">     * location; for example, for TransverseMercatorExact::UTM, \e x =</span>
-<a name="l00145"></a>00145 <span class="comment">     * 22051449.037349 m, \e y = -7131237.022729 m and \e x = 29735142.378357</span>
-<a name="l00146"></a>00146 <span class="comment">     * m, \e y = 4235043.607933 m both map to \e lat = -2 deg, \e lon = 88 deg.</span>
-<a name="l00147"></a>00147 <span class="comment">     *</span>
-<a name="l00148"></a>00148 <span class="comment">     * With \e extendp = true, the branch cut is moved to the lower left</span>
-<a name="l00149"></a>00149 <span class="comment">     * quadrant.  The various symmetries of the transverse Mercator projection</span>
-<a name="l00150"></a>00150 <span class="comment">     * can be used to explore the projection on any sheet.  In this mode the</span>
-<a name="l00151"></a>00151 <span class="comment">     * domains of \e lat, \e lon, \e x, and \e y are restricted to</span>
-<a name="l00152"></a>00152 <span class="comment">     * - the union of</span>
-<a name="l00153"></a>00153 <span class="comment">     *   - \e lat in [0, 90] and \e lon - \e lon0 in [0, 90]</span>
-<a name="l00154"></a>00154 <span class="comment">     *   - \e lat in (-90, 0] and \e lon - \e lon0 in [90 (1 - \e e), 90]</span>
-<a name="l00155"></a>00155 <span class="comment">     * - the union of</span>
-<a name="l00156"></a>00156 <span class="comment">     *   - <i>x</i>/(\e k0 \e a) in [0, inf) and</span>
-<a name="l00157"></a>00157 <span class="comment">     *     <i>y</i>/(\e k0 \e a) in [0, E(<i>e</i><sup>2</sup>)]</span>
-<a name="l00158"></a>00158 <span class="comment">     *   - <i>x</i>/(\e k0 \e a) in [K(1 - <i>e</i><sup>2</sup>) - E(1 -</span>
-<a name="l00159"></a>00159 <span class="comment">     *     <i>e</i><sup>2</sup>), inf) and <i>y</i>/(\e k0 \e a) in (-inf, 0]</span>
-<a name="l00160"></a>00160 <span class="comment">     * .</span>
-<a name="l00161"></a>00161 <span class="comment">     * See Sec. 5 of</span>
-<a name="l00162"></a>00162 <span class="comment">     * <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a> for a full</span>
-<a name="l00163"></a>00163 <span class="comment">     * discussion of the treatment of the branch cut.</span>
-<a name="l00164"></a>00164 <span class="comment">     *</span>
-<a name="l00165"></a>00165 <span class="comment">     * The method will work for all ellipsoids used in terrestrial geodesy.</span>
-<a name="l00166"></a>00166 <span class="comment">     * The method cannot be applied directly to the case of a sphere (\e f = 0)</span>
-<a name="l00167"></a>00167 <span class="comment">     * because some the constants characterizing this method diverge in that</span>
-<a name="l00168"></a>00168 <span class="comment">     * limit, and in practice, \e f should be larger than about numeric_limits<</span>
-<a name="l00169"></a>00169 <span class="comment">     * real >::%epsilon().  However, TransverseMercator treats the sphere</span>
-<a name="l00170"></a>00170 <span class="comment">     * exactly.  An exception is thrown if either axis of the ellipsoid or \e</span>
-<a name="l00171"></a>00171 <span class="comment">     * k0 is not positive or if \e f <= 0.</span>
-<a name="l00172"></a>00172 <span class="comment">     **********************************************************************/</span>
-<a name="l00173"></a>00173     <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>(real a, real f, real k0, <span class="keywordtype">bool</span> extendp = <span class="keyword">false</span>);
-<a name="l00174"></a>00174 <span class="comment"></span>
-<a name="l00175"></a>00175 <span class="comment">    /**</span>
-<a name="l00176"></a>00176 <span class="comment">     * Forward projection, from geographic to transverse Mercator.</span>
-<a name="l00177"></a>00177 <span class="comment">     *</span>
-<a name="l00178"></a>00178 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00179"></a>00179 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00180"></a>00180 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00181"></a>00181 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00182"></a>00182 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00183"></a>00183 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00184"></a>00184 <span class="comment">     * @param[out] k scale of projection at point.</span>
-<a name="l00185"></a>00185 <span class="comment">     *</span>
-<a name="l00186"></a>00186 <span class="comment">     * No false easting or northing is added. \e lat should be in the range</span>
-<a name="l00187"></a>00187 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
-<a name="l00188"></a>00188 <span class="comment">     **********************************************************************/</span>
-<a name="l00189"></a>00189     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00190"></a>00190                  real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00191"></a>00191 <span class="comment"></span>
-<a name="l00192"></a>00192 <span class="comment">    /**</span>
-<a name="l00193"></a>00193 <span class="comment">     * Reverse projection, from transverse Mercator to geographic.</span>
-<a name="l00194"></a>00194 <span class="comment">     *</span>
-<a name="l00195"></a>00195 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00196"></a>00196 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00197"></a>00197 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00198"></a>00198 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00199"></a>00199 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00200"></a>00200 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00201"></a>00201 <span class="comment">     * @param[out] k scale of projection at point.</span>
-<a name="l00202"></a>00202 <span class="comment">     *</span>
-<a name="l00203"></a>00203 <span class="comment">     * No false easting or northing is added.  \e lon0 should be in the range</span>
-<a name="l00204"></a>00204 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00205"></a>00205 <span class="comment">     **********************************************************************/</span>
-<a name="l00206"></a>00206     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00207"></a>00207                  real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00208"></a>00208 <span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment">    /**</span>
-<a name="l00210"></a>00210 <span class="comment">     * TransverseMercatorExact::Forward without returning the convergence and</span>
-<a name="l00211"></a>00211 <span class="comment">     * scale.</span>
-<a name="l00212"></a>00212 <span class="comment">     **********************************************************************/</span>
-<a name="l00213"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a39c294a3389af325c41a8de51fd9228a">00213</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00214"></a>00214                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00215"></a>00215       real gamma, k;
-<a name="l00216"></a>00216       Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00217"></a>00217     }
-<a name="l00218"></a>00218 <span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment">    /**</span>
-<a name="l00220"></a>00220 <span class="comment">     * TransverseMercatorExact::Reverse without returning the convergence and</span>
-<a name="l00221"></a>00221 <span class="comment">     * scale.</span>
-<a name="l00222"></a>00222 <span class="comment">     **********************************************************************/</span>
-<a name="l00223"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a56ff2f371d59e2ca0da8644571706169">00223</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00224"></a>00224                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00225"></a>00225       real gamma, k;
-<a name="l00226"></a>00226       Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00227"></a>00227     }
-<a name="l00228"></a>00228 <span class="comment"></span>
-<a name="l00229"></a>00229 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00230"></a>00230 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00231"></a>00231 <span class="comment">    ///@{</span>
-<a name="l00232"></a>00232 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00233"></a>00233 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00234"></a>00234 <span class="comment">     *   the value used in the constructor.</span>
-<a name="l00235"></a>00235 <span class="comment">     **********************************************************************/</span>
-<a name="l00236"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">00236</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00237"></a>00237 <span class="comment"></span>
-<a name="l00238"></a>00238 <span class="comment">    /**</span>
-<a name="l00239"></a>00239 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
-<a name="l00240"></a>00240 <span class="comment">     *   the constructor.</span>
-<a name="l00241"></a>00241 <span class="comment">     **********************************************************************/</span>
-<a name="l00242"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">00242</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00243"></a>00243 <span class="comment"></span>
-<a name="l00244"></a>00244 <span class="comment">    /**</span>
-<a name="l00245"></a>00245 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00246"></a>00246 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00247"></a>00247 <span class="comment">     **********************************************************************/</span>
-<a name="l00248"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">00248</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00249"></a>00249 <span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment">    /**</span>
-<a name="l00251"></a>00251 <span class="comment">     * @return \e k0 central scale for the projection.  This is the value of \e</span>
-<a name="l00252"></a>00252 <span class="comment">     *   k0 used in the constructor and is the scale on the central meridian.</span>
-<a name="l00253"></a>00253 <span class="comment">     **********************************************************************/</span>
-<a name="l00254"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">00254</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00255"></a>00255 <span class="comment">    ///@}</span>
-<a name="l00256"></a>00256 <span class="comment"></span><span class="comment"></span>
-<a name="l00257"></a>00257 <span class="comment">    /**</span>
-<a name="l00258"></a>00258 <span class="comment">     * A global instantiation of TransverseMercatorExact with the WGS84</span>
-<a name="l00259"></a>00259 <span class="comment">     * ellipsoid and the UTM scale factor.  However, unlike UTM, no false</span>
-<a name="l00260"></a>00260 <span class="comment">     * easting or northing is added.</span>
-<a name="l00261"></a>00261 <span class="comment">     **********************************************************************/</span>
-<a name="l00262"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">00262</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634 [...]
-<a name="l00263"></a>00263   };
-<a name="l00264"></a>00264 
-<a name="l00265"></a>00265 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00266"></a>00266 
-<a name="l00267"></a>00267 <span class="preprocessor">#endif  // GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</span>
+<a name="l00116"></a>00116     <span class="keywordtype">void</span> dwdsigma(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00117"></a>00117                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00118"></a>00118                   <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120     <span class="keywordtype">bool</span> sigmainv0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eta, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thr [...]
+<a name="l00121"></a>00121     <span class="keywordtype">void</span> sigmainv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eta, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thro [...]
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123     <span class="keywordtype">void</span> Scale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam,
+<a name="l00124"></a>00124                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00125"></a>00125                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00126"></a>00126                <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128   <span class="keyword">public</span>:
+<a name="l00129"></a>00129 <span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment">    /**</span>
+<a name="l00131"></a>00131 <span class="comment">     * Constructor for a ellipsoid with</span>
+<a name="l00132"></a>00132 <span class="comment">     *</span>
+<a name="l00133"></a>00133 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
+<a name="l00134"></a>00134 <span class="comment">     * @param[in] f flattening of ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00135"></a>00135 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00136"></a>00136 <span class="comment">     * @param[in] k0 central scale factor.</span>
+<a name="l00137"></a>00137 <span class="comment">     * @param[in] extendp use extended domain.</span>
+<a name="l00138"></a>00138 <span class="comment">     *</span>
+<a name="l00139"></a>00139 <span class="comment">     * The transverse Mercator projection has a branch point singularity at \e</span>
+<a name="l00140"></a>00140 <span class="comment">     * lat = 0 and \e lon - \e lon0 = 90 (1 - \e e) or (for</span>
+<a name="l00141"></a>00141 <span class="comment">     * TransverseMercatorExact::UTM) x = 18381 km, y = 0m.  The \e extendp</span>
+<a name="l00142"></a>00142 <span class="comment">     * argument governs where the branch cut is placed.  With \e extendp =</span>
+<a name="l00143"></a>00143 <span class="comment">     * false, the "standard" convention is followed, namely the cut is placed</span>
+<a name="l00144"></a>00144 <span class="comment">     * along x > 18381 km, y = 0m.  Forward can be called with any \e lat and</span>
+<a name="l00145"></a>00145 <span class="comment">     * \e lon then produces the transformation shown in Lee, Fig 46.  Reverse</span>
+<a name="l00146"></a>00146 <span class="comment">     * analytically continues this in the +/- \e x direction.  As a</span>
+<a name="l00147"></a>00147 <span class="comment">     * consequence, Reverse may map multiple points to the same geographic</span>
+<a name="l00148"></a>00148 <span class="comment">     * location; for example, for TransverseMercatorExact::UTM, \e x =</span>
+<a name="l00149"></a>00149 <span class="comment">     * 22051449.037349 m, \e y = -7131237.022729 m and \e x = 29735142.378357</span>
+<a name="l00150"></a>00150 <span class="comment">     * m, \e y = 4235043.607933 m both map to \e lat = -2 deg, \e lon = 88 deg.</span>
+<a name="l00151"></a>00151 <span class="comment">     *</span>
+<a name="l00152"></a>00152 <span class="comment">     * With \e extendp = true, the branch cut is moved to the lower left</span>
+<a name="l00153"></a>00153 <span class="comment">     * quadrant.  The various symmetries of the transverse Mercator projection</span>
+<a name="l00154"></a>00154 <span class="comment">     * can be used to explore the projection on any sheet.  In this mode the</span>
+<a name="l00155"></a>00155 <span class="comment">     * domains of \e lat, \e lon, \e x, and \e y are restricted to</span>
+<a name="l00156"></a>00156 <span class="comment">     * - the union of</span>
+<a name="l00157"></a>00157 <span class="comment">     *   - \e lat in [0, 90] and \e lon - \e lon0 in [0, 90]</span>
+<a name="l00158"></a>00158 <span class="comment">     *   - \e lat in (-90, 0] and \e lon - \e lon0 in [90 (1 - \e e), 90]</span>
+<a name="l00159"></a>00159 <span class="comment">     * - the union of</span>
+<a name="l00160"></a>00160 <span class="comment">     *   - <i>x</i>/(\e k0 \e a) in [0, inf) and</span>
+<a name="l00161"></a>00161 <span class="comment">     *     <i>y</i>/(\e k0 \e a) in [0, E(<i>e</i><sup>2</sup>)]</span>
+<a name="l00162"></a>00162 <span class="comment">     *   - <i>x</i>/(\e k0 \e a) in [K(1 - <i>e</i><sup>2</sup>) - E(1 -</span>
+<a name="l00163"></a>00163 <span class="comment">     *     <i>e</i><sup>2</sup>), inf) and <i>y</i>/(\e k0 \e a) in (-inf, 0]</span>
+<a name="l00164"></a>00164 <span class="comment">     * .</span>
+<a name="l00165"></a>00165 <span class="comment">     * See Sec. 5 of</span>
+<a name="l00166"></a>00166 <span class="comment">     * <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a> for a full</span>
+<a name="l00167"></a>00167 <span class="comment">     * discussion of the treatment of the branch cut.</span>
+<a name="l00168"></a>00168 <span class="comment">     *</span>
+<a name="l00169"></a>00169 <span class="comment">     * The method will work for all ellipsoids used in terrestrial geodesy.</span>
+<a name="l00170"></a>00170 <span class="comment">     * The method cannot be applied directly to the case of a sphere (\e f = 0)</span>
+<a name="l00171"></a>00171 <span class="comment">     * because some the constants characterizing this method diverge in that</span>
+<a name="l00172"></a>00172 <span class="comment">     * limit, and in practice, \e f should be larger than about numeric_limits<</span>
+<a name="l00173"></a>00173 <span class="comment">     * real >::%epsilon().  However, TransverseMercator treats the sphere</span>
+<a name="l00174"></a>00174 <span class="comment">     * exactly.  An exception is thrown if either axis of the ellipsoid or \e</span>
+<a name="l00175"></a>00175 <span class="comment">     * k0 is not positive or if \e f <= 0.</span>
+<a name="l00176"></a>00176 <span class="comment">     **********************************************************************/</span>
+<a name="l00177"></a>00177     TransverseMercatorExact(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0, <span class="keywordtype">bool</span> extendp = <span class="keyword">false</span>);
+<a name="l00178"></a>00178 <span class="comment"></span>
+<a name="l00179"></a>00179 <span class="comment">    /**</span>
+<a name="l00180"></a>00180 <span class="comment">     * Forward projection, from geographic to transverse Mercator.</span>
+<a name="l00181"></a>00181 <span class="comment">     *</span>
+<a name="l00182"></a>00182 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00183"></a>00183 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00184"></a>00184 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00185"></a>00185 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00186"></a>00186 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00187"></a>00187 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00188"></a>00188 <span class="comment">     * @param[out] k scale of projection at point.</span>
+<a name="l00189"></a>00189 <span class="comment">     *</span>
+<a name="l00190"></a>00190 <span class="comment">     * No false easting or northing is added. \e lat should be in the range</span>
+<a name="l00191"></a>00191 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
+<a name="l00192"></a>00192 <span class="comment">     **********************************************************************/</span>
+<a name="l00193"></a>00193     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00194"></a>00194                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00195"></a>00195 <span class="comment"></span>
+<a name="l00196"></a>00196 <span class="comment">    /**</span>
+<a name="l00197"></a>00197 <span class="comment">     * Reverse projection, from transverse Mercator to geographic.</span>
+<a name="l00198"></a>00198 <span class="comment">     *</span>
+<a name="l00199"></a>00199 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00200"></a>00200 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00201"></a>00201 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00202"></a>00202 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00203"></a>00203 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00204"></a>00204 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00205"></a>00205 <span class="comment">     * @param[out] k scale of projection at point.</span>
+<a name="l00206"></a>00206 <span class="comment">     *</span>
+<a name="l00207"></a>00207 <span class="comment">     * No false easting or northing is added.  \e lon0 should be in the range</span>
+<a name="l00208"></a>00208 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00209"></a>00209 <span class="comment">     **********************************************************************/</span>
+<a name="l00210"></a>00210     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00211"></a>00211                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00212"></a>00212 <span class="comment"></span>
+<a name="l00213"></a>00213 <span class="comment">    /**</span>
+<a name="l00214"></a>00214 <span class="comment">     * TransverseMercatorExact::Forward without returning the convergence and</span>
+<a name="l00215"></a>00215 <span class="comment">     * scale.</span>
+<a name="l00216"></a>00216 <span class="comment">     **********************************************************************/</span>
+<a name="l00217"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a39c294a3389af325c41a8de51fd9228a">00217</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00218"></a>00218                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00219"></a>00219       real gamma, k;
+<a name="l00220"></a>00220       Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00221"></a>00221     }
+<a name="l00222"></a>00222 <span class="comment"></span>
+<a name="l00223"></a>00223 <span class="comment">    /**</span>
+<a name="l00224"></a>00224 <span class="comment">     * TransverseMercatorExact::Reverse without returning the convergence and</span>
+<a name="l00225"></a>00225 <span class="comment">     * scale.</span>
+<a name="l00226"></a>00226 <span class="comment">     **********************************************************************/</span>
+<a name="l00227"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a56ff2f371d59e2ca0da8644571706169">00227</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00228"></a>00228                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00229"></a>00229       real gamma, k;
+<a name="l00230"></a>00230       Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00231"></a>00231     }
+<a name="l00232"></a>00232 <span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00234"></a>00234 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00235"></a>00235 <span class="comment">    ///@{</span>
+<a name="l00236"></a>00236 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00237"></a>00237 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00238"></a>00238 <span class="comment">     *   the value used in the constructor.</span>
+<a name="l00239"></a>00239 <span class="comment">     **********************************************************************/</span>
+<a name="l00240"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">00240</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00241"></a>00241 <span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment">    /**</span>
+<a name="l00243"></a>00243 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
+<a name="l00244"></a>00244 <span class="comment">     *   the constructor.</span>
+<a name="l00245"></a>00245 <span class="comment">     **********************************************************************/</span>
+<a name="l00246"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">00246</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment">    /// \cond SKIP</span>
+<a name="l00249"></a>00249 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00250"></a>00250 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00251"></a>00251 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00252"></a>00252 <span class="comment">     **********************************************************************/</span>
+<a name="l00253"></a>00253     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00254"></a>00254 <span class="comment">    /// \endcond</span>
+<a name="l00255"></a>00255 <span class="comment"></span><span class="comment"></span>
+<a name="l00256"></a>00256 <span class="comment">    /**</span>
+<a name="l00257"></a>00257 <span class="comment">     * @return \e k0 central scale for the projection.  This is the value of \e</span>
+<a name="l00258"></a>00258 <span class="comment">     *   k0 used in the constructor and is the scale on the central meridian.</span>
+<a name="l00259"></a>00259 <span class="comment">     **********************************************************************/</span>
+<a name="l00260"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">00260</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span [...]
+<a name="l00261"></a>00261 <span class="comment">    ///@}</span>
+<a name="l00262"></a>00262 <span class="comment"></span><span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment">    /**</span>
+<a name="l00264"></a>00264 <span class="comment">     * A global instantiation of TransverseMercatorExact with the WGS84</span>
+<a name="l00265"></a>00265 <span class="comment">     * ellipsoid and the UTM scale factor.  However, unlike UTM, no false</span>
+<a name="l00266"></a>00266 <span class="comment">     * easting or northing is added.</span>
+<a name="l00267"></a>00267 <span class="comment">     **********************************************************************/</span>
+<a name="l00268"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">00268</a>     <span class="keyword">static</span> <span class="keyword">const</span> TransverseMercatorExact <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">UTM</a>;
+<a name="l00269"></a>00269   };
+<a name="l00270"></a>00270 
+<a name="l00271"></a>00271 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273 <span class="preprocessor">#endif  // GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercatorProj.1.html b/doc/html/TransverseMercatorProj.1.html
index 10cf80f..c3868d4 100644
--- a/doc/html/TransverseMercatorProj.1.html
+++ b/doc/html/TransverseMercatorProj.1.html
@@ -46,8 +46,11 @@
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>TransverseMercatorProj</strong> [ <strong>-s</strong> | <strong>-t</strong> ]
 [ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 <em>f</em> = 1/298.257223563.  If the exact algorithm is used, <em>f</em> must be
 positive.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/doc/html/TransverseMercatorProj_8cpp.html b/doc/html/TransverseMercatorProj_8cpp.html
index 5816576..fd048f4 100644
--- a/doc/html/TransverseMercatorProj_8cpp.html
+++ b/doc/html/TransverseMercatorProj_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercatorProj.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,7 +86,7 @@ Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Command line utility for transverse Mercator projections. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>Compile and link with g++ -g -O3 -I../include -I../man -o TransverseMercatorProj \ <a class="el" href="TransverseMercatorProj_8cpp.html" title="Command line utility for transverse Mercator projections.">TransverseMercatorProj.cpp</a> \ ../src/DMS.cpp \ ../src/EllipticFunction.cpp \ ../src/TransverseMercator.cpp \ ../src/TransverseMercatorExact.cpp</p>
 <p>See the <a href="TransverseMercatorProj.1.html">man page</a> for usage information. </p>
 
@@ -104,13 +119,18 @@ Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="TransverseMercatorProj_8cpp_source.html#l00034">34</a> of file <a class="el" href="TransverseMercatorProj_8cpp_source.html">TransverseMercatorProj.cpp</a>.</p>
 
-<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, and <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>.</p>
+<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>, and <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>.</p>
 
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercatorProj_8cpp_source.html b/doc/html/TransverseMercatorProj_8cpp_source.html
index 02dc203..86f2b73 100644
--- a/doc/html/TransverseMercatorProj_8cpp_source.html
+++ b/doc/html/TransverseMercatorProj_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercatorProj.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercatorProj.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for transverse Mercator projections</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -83,186 +98,210 @@
 <a name="l00034"></a><a class="code" href="TransverseMercatorProj_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00034</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
 <a name="l00035"></a>00035   <span class="keywordflow">try</span> {
 <a name="l00036"></a>00036     <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00037"></a>00037     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00037"></a>00037     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
 <a name="l00038"></a>00038     <span class="keywordtype">bool</span> exact = <span class="keyword">true</span>, extended = <span class="keyword">false</span>, series = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
 <a name="l00039"></a>00039     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00040"></a>00040       a = Constants::WGS84_a<real>(),
+<a name="l00040"></a>00040       a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
 <a name="l00041"></a>00041       f = Constants::WGS84_f<real>(),
-<a name="l00042"></a>00042       k0 = Constants::UTM_k0<real>(),
+<a name="l00042"></a>00042       k0 = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::UTM_k0<real>(),
 <a name="l00043"></a>00043       lon0 = 0;
-<a name="l00044"></a>00044     std::string istring, ifile, ofile;
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00047"></a>00047       std::string arg(argv[m]);
-<a name="l00048"></a>00048       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00049"></a>00049         reverse = <span class="keyword">true</span>;
-<a name="l00050"></a>00050       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
-<a name="l00051"></a>00051         exact = <span class="keyword">true</span>;
-<a name="l00052"></a>00052         extended = <span class="keyword">true</span>;
-<a name="l00053"></a>00053         series = <span class="keyword">false</span>;
-<a name="l00054"></a>00054       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>) {
-<a name="l00055"></a>00055         exact = <span class="keyword">false</span>;
-<a name="l00056"></a>00056         extended = <span class="keyword">false</span>;
-<a name="l00057"></a>00057         series = <span class="keyword">true</span>;
-<a name="l00058"></a>00058       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00059"></a>00059         <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00060"></a>00060         <span class="keywordflow">try</span> {
-<a name="l00061"></a>00061           <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00062"></a>00062           lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
-<a name="l00063"></a>00063           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00064"></a>00064             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
-<a name="l00065"></a>00065           <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
-<a name="l00066"></a>00066             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
-<a name="l00067"></a>00067           <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
-<a name="l00068"></a>00068         }
-<a name="l00069"></a>00069         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00070"></a>00070           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00071"></a>00071                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00072"></a>00072           <span class="keywordflow">return</span> 1;
-<a name="l00073"></a>00073         }
-<a name="l00074"></a>00074       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
-<a name="l00075"></a>00075         <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00076"></a>00076         <span class="keywordflow">try</span> {
-<a name="l00077"></a>00077           k0 = Utility::num<real>(std::string(argv[m]));
-<a name="l00078"></a>00078         }
-<a name="l00079"></a>00079         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00080"></a>00080           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00081"></a>00081                     << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00082"></a>00082           <span class="keywordflow">return</span> 1;
-<a name="l00083"></a>00083         }
-<a name="l00084"></a>00084       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00085"></a>00085         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00086"></a>00086         <span class="keywordflow">try</span> {
-<a name="l00087"></a>00087           a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00088"></a>00088           f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00089"></a>00089         }
-<a name="l00090"></a>00090         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00091"></a>00091           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00092"></a>00092           <span class="keywordflow">return</span> 1;
-<a name="l00093"></a>00093         }
-<a name="l00094"></a>00094         m += 2;
-<a name="l00095"></a>00095       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00096"></a>00096         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00097"></a>00097         istring = argv[m];
-<a name="l00098"></a>00098       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00099"></a>00099         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00100"></a>00100         ifile = argv[m];
-<a name="l00101"></a>00101       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00102"></a>00102         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103         ofile = argv[m];
-<a name="l00104"></a>00104       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00105"></a>00105         std::cout
-<a name="l00106"></a>00106           << argv[0]
-<a name="l00107"></a>00107           << <span class="stringliteral">": $Id: 9b13c08c33190c03afbd6fbab75246eb16e249cb $\n"</span>
-<a name="l00108"></a>00108           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00109"></a>00109         <span class="keywordflow">return</span> 0;
-<a name="l00110"></a>00110       } <span class="keywordflow">else</span>
-<a name="l00111"></a>00111         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00112"></a>00112     }
-<a name="l00113"></a>00113 
-<a name="l00114"></a>00114     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00115"></a>00115       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00116"></a>00116       <span class="keywordflow">return</span> 1;
-<a name="l00117"></a>00117     }
-<a name="l00118"></a>00118     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00119"></a>00119     std::ifstream infile;
-<a name="l00120"></a>00120     std::istringstream instring;
-<a name="l00121"></a>00121     <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00122"></a>00122       infile.open(ifile.c_str());
-<a name="l00123"></a>00123       <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00124"></a>00124         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00125"></a>00125         <span class="keywordflow">return</span> 1;
-<a name="l00126"></a>00126       }
-<a name="l00127"></a>00127     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00128"></a>00128       std::string::size_type m = 0;
-<a name="l00129"></a>00129       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00130"></a>00130         m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00131"></a>00131         <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00132"></a>00132           <span class="keywordflow">break</span>;
-<a name="l00133"></a>00133         istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00134"></a>00134       }
-<a name="l00135"></a>00135       instring.str(istring);
-<a name="l00136"></a>00136     }
-<a name="l00137"></a>00137     std::istream* input = !ifile.empty() ? &infile :
-<a name="l00138"></a>00138       (!istring.empty() ? &instring : &std::cin);
-<a name="l00139"></a>00139 
-<a name="l00140"></a>00140     std::ofstream outfile;
-<a name="l00141"></a>00141     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00142"></a>00142     <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00143"></a>00143       outfile.open(ofile.c_str());
-<a name="l00144"></a>00144       <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00145"></a>00145         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00146"></a>00146         <span class="keywordflow">return</span> 1;
-<a name="l00147"></a>00147       }
-<a name="l00148"></a>00148     }
-<a name="l00149"></a>00149     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00044"></a>00044     std::string istring, ifile, ofile, cdelim;
+<a name="l00045"></a>00045     <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00048"></a>00048       std::string arg(argv[m]);
+<a name="l00049"></a>00049       <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00050"></a>00050         reverse = <span class="keyword">true</span>;
+<a name="l00051"></a>00051       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
+<a name="l00052"></a>00052         exact = <span class="keyword">true</span>;
+<a name="l00053"></a>00053         extended = <span class="keyword">true</span>;
+<a name="l00054"></a>00054         series = <span class="keyword">false</span>;
+<a name="l00055"></a>00055       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>) {
+<a name="l00056"></a>00056         exact = <span class="keyword">false</span>;
+<a name="l00057"></a>00057         extended = <span class="keyword">false</span>;
+<a name="l00058"></a>00058         series = <span class="keyword">true</span>;
+<a name="l00059"></a>00059       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00060"></a>00060         <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00061"></a>00061         <span class="keywordflow">try</span> {
+<a name="l00062"></a>00062           <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00063"></a>00063           lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
+<a name="l00064"></a>00064           <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00065"></a>00065             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
+<a name="l00066"></a>00066           <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
+<a name="l00067"></a>00067             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
+<a name="l00068"></a>00068           <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
+<a name="l00069"></a>00069         }
+<a name="l00070"></a>00070         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00071"></a>00071           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00072"></a>00072                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00073"></a>00073           <span class="keywordflow">return</span> 1;
+<a name="l00074"></a>00074         }
+<a name="l00075"></a>00075       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
+<a name="l00076"></a>00076         <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077         <span class="keywordflow">try</span> {
+<a name="l00078"></a>00078           k0 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00079"></a>00079         }
+<a name="l00080"></a>00080         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00081"></a>00081           std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00082"></a>00082                     << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00083"></a>00083           <span class="keywordflow">return</span> 1;
+<a name="l00084"></a>00084         }
+<a name="l00085"></a>00085       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00086"></a>00086         <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00087"></a>00087         <span class="keywordflow">try</span> {
+<a name="l00088"></a>00088           a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00089"></a>00089           f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00090"></a>00090         }
+<a name="l00091"></a>00091         <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00092"></a>00092           std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00093"></a>00093           <span class="keywordflow">return</span> 1;
+<a name="l00094"></a>00094         }
+<a name="l00095"></a>00095         m += 2;
+<a name="l00096"></a>00096       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00097"></a>00097         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00098"></a>00098         istring = argv[m];
+<a name="l00099"></a>00099       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00100"></a>00100         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101         ifile = argv[m];
+<a name="l00102"></a>00102       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00103"></a>00103         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104         ofile = argv[m];
+<a name="l00105"></a>00105       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00106"></a>00106         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107         <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00108"></a>00108           std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00109"></a>00109           <span class="keywordflow">return</span> 1;
+<a name="l00110"></a>00110         }
+<a name="l00111"></a>00111         lsep = argv[m][0];
+<a name="l00112"></a>00112       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00113"></a>00113         <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00114"></a>00114         cdelim = argv[m];
+<a name="l00115"></a>00115       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00116"></a>00116         std::cout
+<a name="l00117"></a>00117           << argv[0]
+<a name="l00118"></a>00118           << <span class="stringliteral">": $Id: dd2a53288a82171129091d16bec6d1457568eb4d $\n"</span>
+<a name="l00119"></a>00119           << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00120"></a>00120         <span class="keywordflow">return</span> 0;
+<a name="l00121"></a>00121       } <span class="keywordflow">else</span>
+<a name="l00122"></a>00122         <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00123"></a>00123     }
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00126"></a>00126       std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00127"></a>00127       <span class="keywordflow">return</span> 1;
+<a name="l00128"></a>00128     }
+<a name="l00129"></a>00129     <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00130"></a>00130     std::ifstream infile;
+<a name="l00131"></a>00131     std::istringstream instring;
+<a name="l00132"></a>00132     <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00133"></a>00133       infile.open(ifile.c_str());
+<a name="l00134"></a>00134       <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00135"></a>00135         std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00136"></a>00136         <span class="keywordflow">return</span> 1;
+<a name="l00137"></a>00137       }
+<a name="l00138"></a>00138     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00139"></a>00139       std::string::size_type m = 0;
+<a name="l00140"></a>00140       <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00141"></a>00141         m = istring.find(lsep, m);
+<a name="l00142"></a>00142         <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00143"></a>00143           <span class="keywordflow">break</span>;
+<a name="l00144"></a>00144         istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00145"></a>00145       }
+<a name="l00146"></a>00146       instring.str(istring);
+<a name="l00147"></a>00147     }
+<a name="l00148"></a>00148     std::istream* input = !ifile.empty() ? &infile :
+<a name="l00149"></a>00149       (!istring.empty() ? &instring : &std::cin);
 <a name="l00150"></a>00150 
-<a name="l00151"></a>00151     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>& TMS =
-<a name="l00152"></a>00152       series ? <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>(a, f, k0) : TransverseMercator(1, 0, 1);
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>& TME =
-<a name="l00155"></a>00155       exact ? <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>(a, f, k0, extended)
-<a name="l00156"></a>00156       : TransverseMercatorExact(1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1), 1, <span class="keyword">false</span>);
-<a name="l00157"></a>00157 
-<a name="l00158"></a>00158     std::string s;
-<a name="l00159"></a>00159     <span class="keywordtype">int</span> retval = 0;
-<a name="l00160"></a>00160     std::cout << std::fixed;
-<a name="l00161"></a>00161     <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00162"></a>00162       <span class="keywordflow">try</span> {
-<a name="l00163"></a>00163         std::istringstream str(s);
-<a name="l00164"></a>00164         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y;
-<a name="l00165"></a>00165         std::string stra, strb;
-<a name="l00166"></a>00166         <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00167"></a>00167           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00168"></a>00168         <span class="keywordflow">if</span> (reverse) {
-<a name="l00169"></a>00169           x = Utility::num<real>(stra);
-<a name="l00170"></a>00170           y = Utility::num<real>(strb);
-<a name="l00171"></a>00171         } <span class="keywordflow">else</span>
-<a name="l00172"></a>00172           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00173"></a>00173         std::string strc;
-<a name="l00174"></a>00174         <span class="keywordflow">if</span> (str >> strc)
-<a name="l00175"></a>00175           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00176"></a>00176         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma, k;
-<a name="l00177"></a>00177         <span class="keywordflow">if</span> (reverse) {
-<a name="l00178"></a>00178           <span class="keywordflow">if</span> (series)
-<a name="l00179"></a>00179             TMS.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00180"></a>00180           <span class="keywordflow">else</span>
-<a name="l00181"></a>00181             TME.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00182"></a>00182           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00183"></a>00183                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00184"></a>00184                   << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00185"></a>00185                   << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00186"></a>00186         } <span class="keywordflow">else</span> {
-<a name="l00187"></a>00187           <span class="keywordflow">if</span> (series)
-<a name="l00188"></a>00188             TMS.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00189"></a>00189           <span class="keywordflow">else</span>
-<a name="l00190"></a>00190             TME.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00191"></a>00191           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00192"></a>00192                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00193"></a>00193                   << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00194"></a>00194                   << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00195"></a>00195         }
-<a name="l00196"></a>00196       }
-<a name="l00197"></a>00197       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00198"></a>00198         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00199"></a>00199         retval = 1;
-<a name="l00200"></a>00200       }
-<a name="l00201"></a>00201     }
-<a name="l00202"></a>00202     <span class="keywordflow">return</span> retval;
-<a name="l00203"></a>00203   }
-<a name="l00204"></a>00204   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00205"></a>00205     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00206"></a>00206     <span class="keywordflow">return</span> 1;
-<a name="l00207"></a>00207   }
-<a name="l00208"></a>00208   <span class="keywordflow">catch</span> (...) {
-<a name="l00209"></a>00209     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00210"></a>00210     <span class="keywordflow">return</span> 1;
-<a name="l00211"></a>00211   }
-<a name="l00212"></a>00212 }
+<a name="l00151"></a>00151     std::ofstream outfile;
+<a name="l00152"></a>00152     <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00153"></a>00153     <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00154"></a>00154       outfile.open(ofile.c_str());
+<a name="l00155"></a>00155       <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00156"></a>00156         std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00157"></a>00157         <span class="keywordflow">return</span> 1;
+<a name="l00158"></a>00158       }
+<a name="l00159"></a>00159     }
+<a name="l00160"></a>00160     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>& TMS =
+<a name="l00163"></a>00163       series ? <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>(a, f, k0) : TransverseMercator(1, 0, 1);
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165     <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>& TME =
+<a name="l00166"></a>00166       exact ? <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>(a, f, k0, extended)
+<a name="l00167"></a>00167       : TransverseMercatorExact(1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1), 1, <span class="keyword">false</span>);
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169     std::string s;
+<a name="l00170"></a>00170     <span class="keywordtype">int</span> retval = 0;
+<a name="l00171"></a>00171     std::cout << std::fixed;
+<a name="l00172"></a>00172     <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00173"></a>00173       <span class="keywordflow">try</span> {
+<a name="l00174"></a>00174         std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00175"></a>00175         <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00176"></a>00176           std::string::size_type m = s.find(cdelim);
+<a name="l00177"></a>00177           <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00178"></a>00178             eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00179"></a>00179             s = s.substr(0, m);
+<a name="l00180"></a>00180           }
+<a name="l00181"></a>00181         }
+<a name="l00182"></a>00182         std::istringstream str(s);
+<a name="l00183"></a>00183         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y;
+<a name="l00184"></a>00184         std::string stra, strb;
+<a name="l00185"></a>00185         <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00186"></a>00186           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00187"></a>00187         <span class="keywordflow">if</span> (reverse) {
+<a name="l00188"></a>00188           x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00189"></a>00189           y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00190"></a>00190         } <span class="keywordflow">else</span>
+<a name="l00191"></a>00191           <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00192"></a>00192         std::string strc;
+<a name="l00193"></a>00193         <span class="keywordflow">if</span> (str >> strc)
+<a name="l00194"></a>00194           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00195"></a>00195         <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma, k;
+<a name="l00196"></a>00196         <span class="keywordflow">if</span> (reverse) {
+<a name="l00197"></a>00197           <span class="keywordflow">if</span> (series)
+<a name="l00198"></a>00198             TMS.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00199"></a>00199           <span class="keywordflow">else</span>
+<a name="l00200"></a>00200             TME.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00201"></a>00201           *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00202"></a>00202                   << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00203"></a>00203                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00204"></a>00204                   << Utility::str<real>(k, 16) << eol;
+<a name="l00205"></a>00205         } <span class="keywordflow">else</span> {
+<a name="l00206"></a>00206           <span class="keywordflow">if</span> (series)
+<a name="l00207"></a>00207             TMS.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00208"></a>00208           <span class="keywordflow">else</span>
+<a name="l00209"></a>00209             TME.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00210"></a>00210           *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00211"></a>00211                   << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00212"></a>00212                   << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00213"></a>00213                   << Utility::str<real>(k, 16) << eol;
+<a name="l00214"></a>00214         }
+<a name="l00215"></a>00215       }
+<a name="l00216"></a>00216       <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00217"></a>00217         *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00218"></a>00218         retval = 1;
+<a name="l00219"></a>00219       }
+<a name="l00220"></a>00220     }
+<a name="l00221"></a>00221     <span class="keywordflow">return</span> retval;
+<a name="l00222"></a>00222   }
+<a name="l00223"></a>00223   <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00224"></a>00224     std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00225"></a>00225     <span class="keywordflow">return</span> 1;
+<a name="l00226"></a>00226   }
+<a name="l00227"></a>00227   <span class="keywordflow">catch</span> (...) {
+<a name="l00228"></a>00228     std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00229"></a>00229     <span class="keywordflow">return</span> 1;
+<a name="l00230"></a>00230   }
+<a name="l00231"></a>00231 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercator_8cpp.html b/doc/html/TransverseMercator_8cpp.html
index 3f14033..e51df6c 100644
--- a/doc/html/TransverseMercator_8cpp.html
+++ b/doc/html/TransverseMercator_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercator.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP</a>   "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP</a>   "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
 <p>This implementation follows closely <a href="http://www.jhs-suositukset.fi/suomi/jhs154">JHS 154, ETRS89 - järjestelmään liittyvät karttaprojektiot, tasokoordinaatistot ja karttalehtijako</a> (Map projections, plane coordinates, and map sheet index for ETRS89), published by JUHTA, Finnish Geodetic Institute, and the National Land Survey of Finland (2006).</p>
 <p>The relevant section is available as the 2008 PDF file <a href="http://docs.jhs-suositukset.fi/jhs-suositukset/JHS154/JHS154_liite1.pdf">http://docs.jhs-suositukset.fi/jhs-suositukset/JHS154/JHS154_liite1.pdf</a></p>
 <p>This is a straight transcription of the formulas in this paper with the following exceptions:</p>
@@ -95,7 +108,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP   "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP   "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"</td>
         </tr>
       </table>
 </div>
@@ -106,8 +119,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercator_8cpp_source.html b/doc/html/TransverseMercator_8cpp_source.html
index 8b93234..737aeef 100644
--- a/doc/html/TransverseMercator_8cpp_source.html
+++ b/doc/html/TransverseMercator_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercator.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercator.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::TransverseMercator class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> *</span>
 <a name="l00009"></a>00009 <span class="comment"> * This implementation follows closely</span>
@@ -91,7 +106,7 @@
 <a name="l00042"></a>00042 <span class="preprocessor">#include <<a class="code" href="TransverseMercator_8hpp.html" title="Header for GeographicLib::TransverseMercator class.">GeographicLib/TransverseMercator.hpp</a>></span>
 <a name="l00043"></a>00043 
 <a name="l00044"></a><a class="code" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">00044</a> <span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP \</span>
-<a name="l00045"></a>00045 <span class="preprocessor">  "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">  "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"</span>
 <a name="l00046"></a>00046 <span class="preprocessor"></span>
 <a name="l00047"></a>00047 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP</a>)
 <a name="l00048"></a>00048 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</a>)
@@ -100,10 +115,10 @@
 <a name="l00051"></a>00051 
 <a name="l00052"></a>00052   <span class="keyword">using namespace </span>std;
 <a name="l00053"></a>00053 
-<a name="l00054"></a>00054   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercator::tol_ =
+<a name="l00054"></a>00054   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercator::tol_ =
 <a name="l00055"></a>00055     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1)*sqrt(numeric_limits<real>::epsilon());
 <a name="l00056"></a>00056   <span class="comment">// Overflow value s.t. atan(overflow_) = pi/2</span>
-<a name="l00057"></a>00057   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercator::overflow_ =
+<a name="l00057"></a>00057   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercator::overflow_ =
 <a name="l00058"></a>00058     1 / Math::sq(numeric_limits<real>::epsilon());
 <a name="l00059"></a>00059 
 <a name="l00060"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a9a4074c9d0ea35f0ebfc9c9f73bd3183">00060</a>   TransverseMercator::TransverseMercator(real a, real f, real k0)
@@ -118,15 +133,15 @@
 <a name="l00069"></a>00069     , _c( sqrt(_e2m) * exp(eatanhe(real(1))) )
 <a name="l00070"></a>00070     , _n(_f / (2 - _f))
 <a name="l00071"></a>00071   {
-<a name="l00072"></a>00072     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00072"></a>00072     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
 <a name="l00073"></a>00073       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00074"></a>00074     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00074"></a>00074     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
 <a name="l00075"></a>00075       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00076"></a>00076     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_k0) && _k0 > 0))
+<a name="l00076"></a>00076     <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_k0) && _k0 > 0))
 <a name="l00077"></a>00077       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
 <a name="l00078"></a>00078     <span class="comment">// If coefficents might overflow_ an int, convert them to double (and they</span>
 <a name="l00079"></a>00079     <span class="comment">// are all exactly representable as doubles).</span>
-<a name="l00080"></a>00080     real nx = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_n);
+<a name="l00080"></a>00080     real nx = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_n);
 <a name="l00081"></a>00081     <span class="keywordflow">switch</span> (maxpow_) {
 <a name="l00082"></a>00082     <span class="keywordflow">case</span> 4:
 <a name="l00083"></a>00083       _b1 = 1/(1+_n)*(nx*(nx+16)+64)/64;
@@ -287,7 +302,7 @@
 <a name="l00238"></a>00238       lon = 180 - lon;
 <a name="l00239"></a>00239     }
 <a name="l00240"></a>00240     real
-<a name="l00241"></a>00241       phi = lat * Math::degree<real>(),
+<a name="l00241"></a>00241       phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
 <a name="l00242"></a>00242       lam = lon * Math::degree<real>();
 <a name="l00243"></a>00243     <span class="comment">// phi = latitude</span>
 <a name="l00244"></a>00244     <span class="comment">// phi' = conformal latitude</span>
@@ -311,18 +326,18 @@
 <a name="l00262"></a>00262       real
 <a name="l00263"></a>00263         c = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), cos(lam)), <span class="comment">// cos(pi/2) might be negative</span>
 <a name="l00264"></a>00264         tau = tan(phi),
-<a name="l00265"></a>00265         secphi = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00265"></a>00265         secphi = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
 <a name="l00266"></a>00266         sig = sinh( eatanhe(tau / secphi) ),
-<a name="l00267"></a>00267         taup = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi;
+<a name="l00267"></a>00267         taup = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi;
 <a name="l00268"></a>00268       xip = atan2(taup, c);
 <a name="l00269"></a>00269       <span class="comment">// Used to be</span>
 <a name="l00270"></a>00270       <span class="comment">//   etap = Math::atanh(sin(lam) / cosh(psi));</span>
-<a name="l00271"></a>00271       etap = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(taup, c));
+<a name="l00271"></a>00271       etap = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(taup, c));
 <a name="l00272"></a>00272       <span class="comment">// convergence and scale for Gauss-Schreiber TM (xip, etap) -- gamma0 =</span>
 <a name="l00273"></a>00273       <span class="comment">// atan(tan(xip) * tanh(etap)) = atan(tan(lam) * sin(phi'));</span>
 <a name="l00274"></a>00274       <span class="comment">// sin(phi') = tau'/sqrt(1 + tau'^2)</span>
 <a name="l00275"></a>00275       gamma = atan(tanx(lam) *
-<a name="l00276"></a>00276                    taup / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup)); <span class="comment">// Krueger p 22 (44)</span>
+<a name="l00276"></a>00276                    taup / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup)); <span class="comment">// Krueger p 22 (44)</span>
 <a name="l00277"></a>00277       <span class="comment">// k0 = sqrt(1 - _e2 * sin(phi)^2) * (cos(phi') / cos(phi)) * cosh(etap)</span>
 <a name="l00278"></a>00278       <span class="comment">// Note 1/cos(phi) = cosh(psip);</span>
 <a name="l00279"></a>00279       <span class="comment">// and cos(phi') * cosh(etap) = 1/hypot(sinh(psi), cos(lam))</span>
@@ -330,9 +345,9 @@
 <a name="l00281"></a>00281       <span class="comment">// This form has cancelling errors.  This property is lost if cosh(psip)</span>
 <a name="l00282"></a>00282       <span class="comment">// is replaced by 1/cos(phi), even though it's using "primary" data (phi</span>
 <a name="l00283"></a>00283       <span class="comment">// instead of psip).</span>
-<a name="l00284"></a>00284       k = sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cos(phi))) * secphi / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(taup, c);
+<a name="l00284"></a>00284       k = sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cos(phi))) * secphi / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(taup, c);
 <a name="l00285"></a>00285     } <span class="keywordflow">else</span> {
-<a name="l00286"></a>00286       xip = Math::pi<real>()/2;
+<a name="l00286"></a>00286       xip = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
 <a name="l00287"></a>00287       etap = 0;
 <a name="l00288"></a>00288       gamma = lam;
 <a name="l00289"></a>00289       k = _c;
@@ -423,9 +438,9 @@
 <a name="l00374"></a>00374     <span class="comment">// Fold in change in convergence and scale for Gauss-Schreiber TM to</span>
 <a name="l00375"></a>00375     <span class="comment">// Gauss-Krueger TM.</span>
 <a name="l00376"></a>00376     gamma -= atan2(yi1, yr1);
-<a name="l00377"></a>00377     k *= _b1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(yr1, yi1);
-<a name="l00378"></a>00378     gamma /= Math::degree<real>();
-<a name="l00379"></a>00379     y = _a1 * _k0 * (backside ? Math::pi<real>() - xi : xi) * latsign;
+<a name="l00377"></a>00377     k *= _b1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(yr1, yi1);
+<a name="l00378"></a>00378     gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00379"></a>00379     y = _a1 * _k0 * (backside ? <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() - xi : xi) * latsign;
 <a name="l00380"></a>00380     x = _a1 * _k0 * eta * lonsign;
 <a name="l00381"></a>00381     <span class="keywordflow">if</span> (backside)
 <a name="l00382"></a>00382       gamma = 180 - gamma;
@@ -448,9 +463,9 @@
 <a name="l00399"></a>00399       etasign = eta < 0 ? -1 : 1;
 <a name="l00400"></a>00400     xi *= xisign;
 <a name="l00401"></a>00401     eta *= etasign;
-<a name="l00402"></a>00402     <span class="keywordtype">bool</span> backside = xi > Math::pi<real>()/2;
+<a name="l00402"></a>00402     <span class="keywordtype">bool</span> backside = xi > <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
 <a name="l00403"></a>00403     <span class="keywordflow">if</span> (backside)
-<a name="l00404"></a>00404       xi = Math::pi<real>() - xi;
+<a name="l00404"></a>00404       xi = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() - xi;
 <a name="l00405"></a>00405     real
 <a name="l00406"></a>00406       c0 = cos(2 * xi), ch0 = cosh(2 * eta),
 <a name="l00407"></a>00407       s0 = sin(2 * xi), sh0 = sinh(2 * eta),
@@ -483,7 +498,7 @@
 <a name="l00434"></a>00434       etap = eta + ai * xip0 + ar * etap0;
 <a name="l00435"></a>00435     <span class="comment">// Convergence and scale for Gauss-Schreiber TM to Gauss-Krueger TM.</span>
 <a name="l00436"></a>00436     gamma = atan2(yi1, yr1);
-<a name="l00437"></a>00437     k = _b1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(yr1, yi1);
+<a name="l00437"></a>00437     k = _b1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(yr1, yi1);
 <a name="l00438"></a>00438     <span class="comment">// JHS 154 has</span>
 <a name="l00439"></a>00439     <span class="comment">//</span>
 <a name="l00440"></a>00440     <span class="comment">//   phi' = asin(sin(xi') / cosh(eta')) (Krueger p 17 (25))</span>
@@ -493,7 +508,7 @@
 <a name="l00444"></a>00444     real
 <a name="l00445"></a>00445       s = sinh(etap),
 <a name="l00446"></a>00446       c = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), cos(xip)), <span class="comment">// cos(pi/2) might be negative</span>
-<a name="l00447"></a>00447       r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(s, c);
+<a name="l00447"></a>00447       r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(s, c);
 <a name="l00448"></a>00448     <span class="keywordflow">if</span> (r != 0) {
 <a name="l00449"></a>00449       lam = atan2(s, c);        <span class="comment">// Krueger p 17 (25)</span>
 <a name="l00450"></a>00450       <span class="comment">// Use Newton's method to solve for tau</span>
@@ -509,11 +524,11 @@
 <a name="l00460"></a>00460       <span class="comment">// min iterations = 1, max iterations = 2; mean = 1.94</span>
 <a name="l00461"></a>00461       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < numit_; ++i) {
 <a name="l00462"></a>00462         real
-<a name="l00463"></a>00463           tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00463"></a>00463           tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
 <a name="l00464"></a>00464           sig = sinh( eatanhe( tau / tau1 ) ),
-<a name="l00465"></a>00465           taupa = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
-<a name="l00466"></a>00466           dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau)) /
-<a name="l00467"></a>00467           ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
+<a name="l00465"></a>00465           taupa = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
+<a name="l00466"></a>00466           dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau)) /
+<a name="l00467"></a>00467           ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
 <a name="l00468"></a>00468         tau += dtau;
 <a name="l00469"></a>00469         <span class="keywordflow">if</span> (!(abs(dtau) >= stol))
 <a name="l00470"></a>00470           <span class="keywordflow">break</span>;
@@ -521,15 +536,15 @@
 <a name="l00472"></a>00472       phi = atan(tau);
 <a name="l00473"></a>00473       gamma += atan(tanx(xip) * tanh(etap)); <span class="comment">// Krueger p 19 (31)</span>
 <a name="l00474"></a>00474       <span class="comment">// Note cos(phi') * cosh(eta') = r</span>
-<a name="l00475"></a>00475       k *= sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cos(phi))) *
-<a name="l00476"></a>00476         <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau) * r;
+<a name="l00475"></a>00475       k *= sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cos(phi))) *
+<a name="l00476"></a>00476         <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau) * r;
 <a name="l00477"></a>00477     } <span class="keywordflow">else</span> {
-<a name="l00478"></a>00478       phi = Math::pi<real>()/2;
+<a name="l00478"></a>00478       phi = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
 <a name="l00479"></a>00479       lam = 0;
 <a name="l00480"></a>00480       k *= _c;
 <a name="l00481"></a>00481     }
-<a name="l00482"></a>00482     lat = phi / Math::degree<real>() * xisign;
-<a name="l00483"></a>00483     lon = lam / Math::degree<real>();
+<a name="l00482"></a>00482     lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() * xisign;
+<a name="l00483"></a>00483     lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00484"></a>00484     <span class="keywordflow">if</span> (backside)
 <a name="l00485"></a>00485       lon = 180 - lon;
 <a name="l00486"></a>00486     lon *= etasign;
@@ -540,7 +555,7 @@
 <a name="l00491"></a>00491       lon += lon0 + 360;
 <a name="l00492"></a>00492     <span class="keywordflow">else</span>
 <a name="l00493"></a>00493       lon += lon0;
-<a name="l00494"></a>00494     gamma /= Math::degree<real>();
+<a name="l00494"></a>00494     gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
 <a name="l00495"></a>00495     <span class="keywordflow">if</span> (backside)
 <a name="l00496"></a>00496       gamma = 180 - gamma;
 <a name="l00497"></a>00497     gamma *= xisign * etasign;
@@ -550,8 +565,13 @@
 <a name="l00501"></a>00501 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercator_8hpp.html b/doc/html/TransverseMercator_8hpp.html
index c378128..af144ca 100644
--- a/doc/html/TransverseMercator_8hpp.html
+++ b/doc/html/TransverseMercator_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercator.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,18 +81,16 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</a>   "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</a>   "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html#a823820984cba9dabe0517925bf18c77b">TM_TX_MAXPOW</a>   (GEOGRAPHICLIB_PREC == 1 ? 6 : (GEOGRAPHICLIB_PREC == 0 ? 4 : 8))</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP   "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP   "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"</td>
         </tr>
       </table>
 </div>
@@ -113,8 +126,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/TransverseMercator_8hpp_source.html b/doc/html/TransverseMercator_8hpp_source.html
index ebc7b80..de93497 100644
--- a/doc/html/TransverseMercator_8hpp_source.html
+++ b/doc/html/TransverseMercator_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: TransverseMercator.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercator.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::TransverseMercator class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP)</span>
 <a name="l00011"></a><a class="code" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 
@@ -120,140 +135,151 @@
 <a name="l00070"></a>00070 <span class="comment">   *</span>
 <a name="l00071"></a>00071 <span class="comment">   * Example of use:</span>
 <a name="l00072"></a>00072 <span class="comment">   * \include example-TransverseMercator.cpp</span>
-<a name="l00073"></a>00073 <span class="comment">   **********************************************************************/</span>
-<a name="l00074"></a>00074 
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html">00075</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> {
-<a name="l00076"></a>00076   <span class="keyword">private</span>:
-<a name="l00077"></a>00077     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00078"></a>00078     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxpow_ = <a class="code" href="TransverseMercator_8hpp.html#a823820984cba9dabe0517925bf18c77b">TM_TX_MAXPOW</a>;
-<a name="l00079"></a>00079     <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00080"></a>00080     <span class="keyword">static</span> <span class="keyword">const</span> real overflow_;
-<a name="l00081"></a>00081     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
-<a name="l00082"></a>00082     real _a, _f, _k0, _e2, _e, _e2m,  _c, _n;
-<a name="l00083"></a>00083     <span class="comment">// _alp[0] and _bet[0] unused</span>
-<a name="l00084"></a>00084     real _a1, _b1, _alp[maxpow_ + 1], _bet[maxpow_ + 1];
-<a name="l00085"></a>00085     <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
-<a name="l00086"></a>00086     <span class="keyword">static</span> <span class="keyword">inline</span> real tanx(real x) <span class="keywordflow">throw</span>() {
-<a name="l00087"></a>00087       real t = std::tan(x);
-<a name="l00088"></a>00088       <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
-<a name="l00089"></a>00089       <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
-<a name="l00090"></a>00090     }
-<a name="l00091"></a>00091     <span class="comment">// Return e * atanh(e * x) for f >= 0, else return</span>
-<a name="l00092"></a>00092     <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) for f < 0</span>
-<a name="l00093"></a>00093     <span class="keyword">inline</span> real eatanhe(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00094"></a>00094       <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
-<a name="l00095"></a>00095     }
-<a name="l00096"></a>00096   <span class="keyword">public</span>:
-<a name="l00097"></a>00097 <span class="comment"></span>
-<a name="l00098"></a>00098 <span class="comment">    /**</span>
-<a name="l00099"></a>00099 <span class="comment">     * Constructor for a ellipsoid with</span>
-<a name="l00100"></a>00100 <span class="comment">     *</span>
-<a name="l00101"></a>00101 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
-<a name="l00102"></a>00102 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
-<a name="l00103"></a>00103 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
-<a name="l00104"></a>00104 <span class="comment">     *   to 1/\e f.</span>
-<a name="l00105"></a>00105 <span class="comment">     * @param[in] k0 central scale factor.</span>
-<a name="l00106"></a>00106 <span class="comment">     *</span>
-<a name="l00107"></a>00107 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid or \e k0</span>
-<a name="l00108"></a>00108 <span class="comment">     * is not positive.</span>
-<a name="l00109"></a>00109 <span class="comment">     **********************************************************************/</span>
-<a name="l00110"></a>00110     <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>(real a, real f, real k0);
-<a name="l00111"></a>00111 <span class="comment"></span>
-<a name="l00112"></a>00112 <span class="comment">    /**</span>
-<a name="l00113"></a>00113 <span class="comment">     * Forward projection, from geographic to transverse Mercator.</span>
-<a name="l00114"></a>00114 <span class="comment">     *</span>
-<a name="l00115"></a>00115 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00116"></a>00116 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
-<a name="l00117"></a>00117 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
-<a name="l00118"></a>00118 <span class="comment">     * @param[out] x easting of point (meters).</span>
-<a name="l00119"></a>00119 <span class="comment">     * @param[out] y northing of point (meters).</span>
-<a name="l00120"></a>00120 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00121"></a>00121 <span class="comment">     * @param[out] k scale of projection at point.</span>
-<a name="l00122"></a>00122 <span class="comment">     *</span>
-<a name="l00123"></a>00123 <span class="comment">     * No false easting or northing is added. \e lat should be in the range</span>
-<a name="l00124"></a>00124 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
-<a name="l00125"></a>00125 <span class="comment">     **********************************************************************/</span>
-<a name="l00126"></a>00126     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00127"></a>00127                  real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00128"></a>00128 <span class="comment"></span>
-<a name="l00129"></a>00129 <span class="comment">    /**</span>
-<a name="l00130"></a>00130 <span class="comment">     * Reverse projection, from transverse Mercator to geographic.</span>
-<a name="l00131"></a>00131 <span class="comment">     *</span>
-<a name="l00132"></a>00132 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00133"></a>00133 <span class="comment">     * @param[in] x easting of point (meters).</span>
-<a name="l00134"></a>00134 <span class="comment">     * @param[in] y northing of point (meters).</span>
-<a name="l00135"></a>00135 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
-<a name="l00136"></a>00136 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
-<a name="l00137"></a>00137 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00138"></a>00138 <span class="comment">     * @param[out] k scale of projection at point.</span>
-<a name="l00139"></a>00139 <span class="comment">     *</span>
-<a name="l00140"></a>00140 <span class="comment">     * No false easting or northing is added.  \e lon0 should be in the range</span>
-<a name="l00141"></a>00141 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00142"></a>00142 <span class="comment">     **********************************************************************/</span>
-<a name="l00143"></a>00143     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00144"></a>00144                  real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00145"></a>00145 <span class="comment"></span>
-<a name="l00146"></a>00146 <span class="comment">    /**</span>
-<a name="l00147"></a>00147 <span class="comment">     * TransverseMercator::Forward without returning the convergence and scale.</span>
-<a name="l00148"></a>00148 <span class="comment">     **********************************************************************/</span>
-<a name="l00149"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#af689c212234963734354347d56bf12f6">00149</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00150"></a>00150                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00151"></a>00151       real gamma, k;
-<a name="l00152"></a>00152       Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00153"></a>00153     }
-<a name="l00154"></a>00154 <span class="comment"></span>
-<a name="l00155"></a>00155 <span class="comment">    /**</span>
-<a name="l00156"></a>00156 <span class="comment">     * TransverseMercator::Reverse without returning the convergence and scale.</span>
-<a name="l00157"></a>00157 <span class="comment">     **********************************************************************/</span>
-<a name="l00158"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#ac3bd58646dd6c06731a9baadee11f7e5">00158</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00159"></a>00159                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00160"></a>00160       real gamma, k;
-<a name="l00161"></a>00161       Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00162"></a>00162     }
-<a name="l00163"></a>00163 <span class="comment"></span>
-<a name="l00164"></a>00164 <span class="comment">    /** \name Inspector functions</span>
-<a name="l00165"></a>00165 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
-<a name="l00166"></a>00166 <span class="comment">    ///@{</span>
-<a name="l00167"></a>00167 <span class="comment"></span><span class="comment">    /**</span>
-<a name="l00168"></a>00168 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
-<a name="l00169"></a>00169 <span class="comment">     *   the value used in the constructor.</span>
-<a name="l00170"></a>00170 <span class="comment">     **********************************************************************/</span>
-<a name="l00171"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">00171</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00172"></a>00172 <span class="comment"></span>
-<a name="l00173"></a>00173 <span class="comment">    /**</span>
-<a name="l00174"></a>00174 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
-<a name="l00175"></a>00175 <span class="comment">     *   the constructor.</span>
-<a name="l00176"></a>00176 <span class="comment">     **********************************************************************/</span>
-<a name="l00177"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">00177</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00178"></a>00178 <span class="comment"></span>
-<a name="l00179"></a>00179 <span class="comment">    /**</span>
-<a name="l00180"></a>00180 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00181"></a>00181 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00182"></a>00182 <span class="comment">     **********************************************************************/</span>
-<a name="l00183"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">00183</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00184"></a>00184 <span class="comment"></span>
-<a name="l00185"></a>00185 <span class="comment">    /**</span>
-<a name="l00186"></a>00186 <span class="comment">     * @return \e k0 central scale for the projection.  This is the value of \e</span>
-<a name="l00187"></a>00187 <span class="comment">     *   k0 used in the constructor and is the scale on the central meridian.</span>
-<a name="l00188"></a>00188 <span class="comment">     **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">00189</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00190"></a>00190 <span class="comment">    ///@}</span>
-<a name="l00191"></a>00191 <span class="comment"></span><span class="comment"></span>
-<a name="l00192"></a>00192 <span class="comment">    /**</span>
-<a name="l00193"></a>00193 <span class="comment">     * A global instantiation of TransverseMercator with the WGS84 ellipsoid</span>
-<a name="l00194"></a>00194 <span class="comment">     * and the UTM scale factor.  However, unlike UTM, no false easting or</span>
-<a name="l00195"></a>00195 <span class="comment">     * northing is added.</span>
-<a name="l00196"></a>00196 <span class="comment">     **********************************************************************/</span>
-<a name="l00197"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">00197</a>     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">UTM</a>;
-<a name="l00198"></a>00198   };
-<a name="l00199"></a>00199 
-<a name="l00200"></a>00200 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00201"></a>00201 
-<a name="l00202"></a>00202 <span class="preprocessor">#endif  // GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</span>
+<a name="l00073"></a>00073 <span class="comment">   *</span>
+<a name="l00074"></a>00074 <span class="comment">   * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a</span>
+<a name="l00075"></a>00075 <span class="comment">   * command-line utility providing access to the functionality of</span>
+<a name="l00076"></a>00076 <span class="comment">   * TransverseMercator and TransverseMercatorExact.</span>
+<a name="l00077"></a>00077 <span class="comment">   **********************************************************************/</span>
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> TransverseMercator {
+<a name="l00080"></a>00080   <span class="keyword">private</span>:
+<a name="l00081"></a>00081     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00082"></a>00082     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxpow_ = <a class="code" href="TransverseMercator_8hpp.html#a823820984cba9dabe0517925bf18c77b">TM_TX_MAXPOW</a>;
+<a name="l00083"></a>00083     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00084"></a>00084     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> overflow_;
+<a name="l00085"></a>00085     <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
+<a name="l00086"></a>00086     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _k0, _e2, _e, _e2m,  _c, _n;
+<a name="l00087"></a>00087     <span class="comment">// _alp[0] and _bet[0] unused</span>
+<a name="l00088"></a>00088     <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a1, _b1, _alp[maxpow_ + 1], _bet[maxpow_ + 1];
+<a name="l00089"></a>00089     <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
+<a name="l00090"></a>00090     <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tanx(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00091"></a>00091       <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = std::tan(x);
+<a name="l00092"></a>00092       <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
+<a name="l00093"></a>00093       <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
+<a name="l00094"></a>00094     }
+<a name="l00095"></a>00095     <span class="comment">// Return e * atanh(e * x) for f >= 0, else return</span>
+<a name="l00096"></a>00096     <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) for f < 0</span>
+<a name="l00097"></a>00097     <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00098"></a>00098       <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
+<a name="l00099"></a>00099     }
+<a name="l00100"></a>00100   <span class="keyword">public</span>:
+<a name="l00101"></a>00101 <span class="comment"></span>
+<a name="l00102"></a>00102 <span class="comment">    /**</span>
+<a name="l00103"></a>00103 <span class="comment">     * Constructor for a ellipsoid with</span>
+<a name="l00104"></a>00104 <span class="comment">     *</span>
+<a name="l00105"></a>00105 <span class="comment">     * @param[in] a equatorial radius (meters).</span>
+<a name="l00106"></a>00106 <span class="comment">     * @param[in] f flattening of ellipsoid.  Setting \e f = 0 gives a sphere.</span>
+<a name="l00107"></a>00107 <span class="comment">     *   Negative \e f gives a prolate ellipsoid.  If \e f > 1, set flattening</span>
+<a name="l00108"></a>00108 <span class="comment">     *   to 1/\e f.</span>
+<a name="l00109"></a>00109 <span class="comment">     * @param[in] k0 central scale factor.</span>
+<a name="l00110"></a>00110 <span class="comment">     *</span>
+<a name="l00111"></a>00111 <span class="comment">     * An exception is thrown if either of the axes of the ellipsoid or \e k0</span>
+<a name="l00112"></a>00112 <span class="comment">     * is not positive.</span>
+<a name="l00113"></a>00113 <span class="comment">     **********************************************************************/</span>
+<a name="l00114"></a>00114     TransverseMercator(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">    /**</span>
+<a name="l00117"></a>00117 <span class="comment">     * Forward projection, from geographic to transverse Mercator.</span>
+<a name="l00118"></a>00118 <span class="comment">     *</span>
+<a name="l00119"></a>00119 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00120"></a>00120 <span class="comment">     * @param[in] lat latitude of point (degrees).</span>
+<a name="l00121"></a>00121 <span class="comment">     * @param[in] lon longitude of point (degrees).</span>
+<a name="l00122"></a>00122 <span class="comment">     * @param[out] x easting of point (meters).</span>
+<a name="l00123"></a>00123 <span class="comment">     * @param[out] y northing of point (meters).</span>
+<a name="l00124"></a>00124 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00125"></a>00125 <span class="comment">     * @param[out] k scale of projection at point.</span>
+<a name="l00126"></a>00126 <span class="comment">     *</span>
+<a name="l00127"></a>00127 <span class="comment">     * No false easting or northing is added. \e lat should be in the range</span>
+<a name="l00128"></a>00128 <span class="comment">     * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
+<a name="l00129"></a>00129 <span class="comment">     **********************************************************************/</span>
+<a name="l00130"></a>00130     <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00131"></a>00131                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="comment">    /**</span>
+<a name="l00134"></a>00134 <span class="comment">     * Reverse projection, from transverse Mercator to geographic.</span>
+<a name="l00135"></a>00135 <span class="comment">     *</span>
+<a name="l00136"></a>00136 <span class="comment">     * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00137"></a>00137 <span class="comment">     * @param[in] x easting of point (meters).</span>
+<a name="l00138"></a>00138 <span class="comment">     * @param[in] y northing of point (meters).</span>
+<a name="l00139"></a>00139 <span class="comment">     * @param[out] lat latitude of point (degrees).</span>
+<a name="l00140"></a>00140 <span class="comment">     * @param[out] lon longitude of point (degrees).</span>
+<a name="l00141"></a>00141 <span class="comment">     * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00142"></a>00142 <span class="comment">     * @param[out] k scale of projection at point.</span>
+<a name="l00143"></a>00143 <span class="comment">     *</span>
+<a name="l00144"></a>00144 <span class="comment">     * No false easting or northing is added.  \e lon0 should be in the range</span>
+<a name="l00145"></a>00145 <span class="comment">     * [-180, 360].  The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00146"></a>00146 <span class="comment">     **********************************************************************/</span>
+<a name="l00147"></a>00147     <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00148"></a>00148                  <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment">    /**</span>
+<a name="l00151"></a>00151 <span class="comment">     * TransverseMercator::Forward without returning the convergence and scale.</span>
+<a name="l00152"></a>00152 <span class="comment">     **********************************************************************/</span>
+<a name="l00153"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#af689c212234963734354347d56bf12f6">00153</a>     <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00154"></a>00154                  real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00155"></a>00155       real gamma, k;
+<a name="l00156"></a>00156       Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00157"></a>00157     }
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment">    /**</span>
+<a name="l00160"></a>00160 <span class="comment">     * TransverseMercator::Reverse without returning the convergence and scale.</span>
+<a name="l00161"></a>00161 <span class="comment">     **********************************************************************/</span>
+<a name="l00162"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#ac3bd58646dd6c06731a9baadee11f7e5">00162</a>     <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00163"></a>00163                  real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00164"></a>00164       real gamma, k;
+<a name="l00165"></a>00165       Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00166"></a>00166     }
+<a name="l00167"></a>00167 <span class="comment"></span>
+<a name="l00168"></a>00168 <span class="comment">    /** \name Inspector functions</span>
+<a name="l00169"></a>00169 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
+<a name="l00170"></a>00170 <span class="comment">    ///@{</span>
+<a name="l00171"></a>00171 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00172"></a>00172 <span class="comment">     * @return \e a the equatorial radius of the ellipsoid (meters).  This is</span>
+<a name="l00173"></a>00173 <span class="comment">     *   the value used in the constructor.</span>
+<a name="l00174"></a>00174 <span class="comment">     **********************************************************************/</span>
+<a name="l00175"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">00175</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00176"></a>00176 <span class="comment"></span>
+<a name="l00177"></a>00177 <span class="comment">    /**</span>
+<a name="l00178"></a>00178 <span class="comment">     * @return \e f the flattening of the ellipsoid.  This is the value used in</span>
+<a name="l00179"></a>00179 <span class="comment">     *   the constructor.</span>
+<a name="l00180"></a>00180 <span class="comment">     **********************************************************************/</span>
+<a name="l00181"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">00181</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00182"></a>00182 <span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment">    /// \cond SKIP</span>
+<a name="l00184"></a>00184 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00185"></a>00185 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00186"></a>00186 <span class="comment">     * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00187"></a>00187 <span class="comment">     **********************************************************************/</span>
+<a name="l00188"></a>00188     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00189"></a>00189 <span class="comment">    /// \endcond</span>
+<a name="l00190"></a>00190 <span class="comment"></span><span class="comment"></span>
+<a name="l00191"></a>00191 <span class="comment">    /**</span>
+<a name="l00192"></a>00192 <span class="comment">     * @return \e k0 central scale for the projection.  This is the value of \e</span>
+<a name="l00193"></a>00193 <span class="comment">     *   k0 used in the constructor and is the scale on the central meridian.</span>
+<a name="l00194"></a>00194 <span class="comment">     **********************************************************************/</span>
+<a name="l00195"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">00195</a>     <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="co [...]
+<a name="l00196"></a>00196 <span class="comment">    ///@}</span>
+<a name="l00197"></a>00197 <span class="comment"></span><span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment">    /**</span>
+<a name="l00199"></a>00199 <span class="comment">     * A global instantiation of TransverseMercator with the WGS84 ellipsoid</span>
+<a name="l00200"></a>00200 <span class="comment">     * and the UTM scale factor.  However, unlike UTM, no false easting or</span>
+<a name="l00201"></a>00201 <span class="comment">     * northing is added.</span>
+<a name="l00202"></a>00202 <span class="comment">     **********************************************************************/</span>
+<a name="l00203"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">00203</a>     <span class="keyword">static</span> <span class="keyword">const</span> TransverseMercator <a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">UTM</a>;
+<a name="l00204"></a>00204   };
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="preprocessor">#endif  // GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/UTMUPS_8cpp.html b/doc/html/UTMUPS_8cpp.html
index 22a6707..1ff7596 100644
--- a/doc/html/UTMUPS_8cpp.html
+++ b/doc/html/UTMUPS_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: UTMUPS.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,17 +80,15 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">GEOGRAPHICLIB_UTMUPS_CPP</a>   "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">GEOGRAPHICLIB_UTMUPS_CPP</a>   "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -84,7 +97,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_UTMUPS_CPP   "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_UTMUPS_CPP   "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"</td>
         </tr>
       </table>
 </div>
@@ -95,8 +108,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/UTMUPS_8cpp_source.html b/doc/html/UTMUPS_8cpp_source.html
index d1a5ca4..ca13e6b 100644
--- a/doc/html/UTMUPS_8cpp_source.html
+++ b/doc/html/UTMUPS_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: UTMUPS.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file UTMUPS.cpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::UTMUPS class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
@@ -64,7 +79,7 @@
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 <a name="l00016"></a>00016 
 <a name="l00017"></a><a class="code" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">00017</a> <span class="preprocessor">#define GEOGRAPHICLIB_UTMUPS_CPP \</span>
-<a name="l00018"></a>00018 <span class="preprocessor">  "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">  "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"</span>
 <a name="l00019"></a>00019 <span class="preprocessor"></span>
 <a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">GEOGRAPHICLIB_UTMUPS_CPP</a>)
 <a name="l00021"></a>00021 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">GEOGRAPHICLIB_UTMUPS_HPP</a>)
@@ -73,30 +88,30 @@
 <a name="l00024"></a>00024 
 <a name="l00025"></a>00025   <span class="keyword">using namespace </span>std;
 <a name="l00026"></a>00026 
-<a name="l00027"></a>00027   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::falseeasting_[4] =
+<a name="l00027"></a>00027   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::falseeasting_[4] =
 <a name="l00028"></a>00028     { MGRS::upseasting_ * MGRS::tile_, MGRS::upseasting_ * MGRS::tile_,
 <a name="l00029"></a>00029       MGRS::utmeasting_ * MGRS::tile_, MGRS::utmeasting_ * MGRS::tile_ };
-<a name="l00030"></a>00030   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::falsenorthing_[4] =
+<a name="l00030"></a>00030   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::falsenorthing_[4] =
 <a name="l00031"></a>00031     { MGRS::upseasting_ * MGRS::tile_, MGRS::upseasting_ * MGRS::tile_,
 <a name="l00032"></a>00032       MGRS::maxutmSrow_ * MGRS::tile_, MGRS::minutmNrow_ * MGRS::tile_ };
-<a name="l00033"></a>00033   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::mineasting_[4] =
-<a name="l00034"></a>00034     { MGRS::minupsSind_ * MGRS::tile_,  MGRS::minupsNind_ * MGRS::tile_,
-<a name="l00035"></a>00035       MGRS::minutmcol_ * MGRS::tile_,  MGRS::minutmcol_ * MGRS::tile_ };
-<a name="l00036"></a>00036   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::maxeasting_[4] =
-<a name="l00037"></a>00037     { MGRS::maxupsSind_ * MGRS::tile_,  MGRS::maxupsNind_ * MGRS::tile_,
-<a name="l00038"></a>00038       MGRS::maxutmcol_ * MGRS::tile_,  MGRS::maxutmcol_ * MGRS::tile_ };
-<a name="l00039"></a>00039   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::minnorthing_[4] =
-<a name="l00040"></a>00040     { MGRS::minupsSind_ * MGRS::tile_,  MGRS::minupsNind_ * MGRS::tile_,
+<a name="l00033"></a>00033   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::mineasting_[4] =
+<a name="l00034"></a>00034     { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
+<a name="l00035"></a>00035       MGRS::minutmcol_ * MGRS::tile_, MGRS::minutmcol_ * MGRS::tile_ };
+<a name="l00036"></a>00036   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::maxeasting_[4] =
+<a name="l00037"></a>00037     { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
+<a name="l00038"></a>00038       MGRS::maxutmcol_ * MGRS::tile_, MGRS::maxutmcol_ * MGRS::tile_ };
+<a name="l00039"></a>00039   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::minnorthing_[4] =
+<a name="l00040"></a>00040     { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
 <a name="l00041"></a>00041       MGRS::minutmSrow_ * MGRS::tile_,
 <a name="l00042"></a>00042       (MGRS::minutmNrow_ + MGRS::minutmSrow_ - MGRS::maxutmSrow_)
 <a name="l00043"></a>00043       * MGRS::tile_ };
-<a name="l00044"></a>00044   <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::maxnorthing_[4] =
-<a name="l00045"></a>00045     { MGRS::maxupsSind_ * MGRS::tile_,  MGRS::maxupsNind_ * MGRS::tile_,
+<a name="l00044"></a>00044   <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::maxnorthing_[4] =
+<a name="l00045"></a>00045     { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
 <a name="l00046"></a>00046       (MGRS::maxutmSrow_ + MGRS::maxutmNrow_ - MGRS::minutmNrow_) * MGRS::tile_,
 <a name="l00047"></a>00047       MGRS::maxutmNrow_ * MGRS::tile_ };
 <a name="l00048"></a>00048 
 <a name="l00049"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">00049</a>   <span class="keywordtype">int</span> UTMUPS::StandardZone(real lat, real lon, <span class="keywordtype">int</span> setzone) {
-<a name="l00050"></a>00050     <span class="keywordflow">if</span> (setzone < MINPSEUDOZONE || setzone > MAXZONE)
+<a name="l00050"></a>00050     <span class="keywordflow">if</span> (!(setzone >= MINPSEUDOZONE && setzone <= MAXZONE))
 <a name="l00051"></a>00051       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Illegal zone requested "</span> + Utility::str(setzone));
 <a name="l00052"></a>00052     <span class="keywordflow">if</span> (setzone >= MINZONE || setzone == INVALID)
 <a name="l00053"></a>00053       <span class="keywordflow">return</span> setzone;
@@ -129,7 +144,7 @@
 <a name="l00080"></a>00080     <span class="keywordflow">if</span> (zone1 == INVALID) {
 <a name="l00081"></a>00081       zone = zone1;
 <a name="l00082"></a>00082       northp = northp1;
-<a name="l00083"></a>00083       x = y = gamma = k = Math::NaN<real>();
+<a name="l00083"></a>00083       x = y = gamma = k = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00084"></a>00084       <span class="keywordflow">return</span>;
 <a name="l00085"></a>00085     }
 <a name="l00086"></a>00086     real x1, y1, gamma1, k1;
@@ -145,14 +160,14 @@
 <a name="l00096"></a>00096         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + Utility::str(lon)
 <a name="l00097"></a>00097                             + <span class="stringliteral">"d more than 60d from center of UTM zone "</span>
 <a name="l00098"></a>00098                             + Utility::str(zone1));
-<a name="l00099"></a>00099       TransverseMercator::UTM.Forward(lon0, lat, lon, x1, y1, gamma1, k1);
+<a name="l00099"></a>00099       <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>::UTM.<a class="code" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">Forward</a>(lon0, lat, lon, x1, y1, gamma1, k1);
 <a name="l00100"></a>00100     } <span class="keywordflow">else</span> {
 <a name="l00101"></a>00101       <span class="keywordflow">if</span> (abs(lat) < 70)
 <a name="l00102"></a>00102         <span class="comment">// Check isn't really necessary ... (see above).</span>
 <a name="l00103"></a>00103         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude "</span> + Utility::str(lat)
 <a name="l00104"></a>00104                             + <span class="stringliteral">"d more than 20d from "</span>
 <a name="l00105"></a>00105                             + (northp1 ? <span class="stringliteral">"N"</span> : <span class="stringliteral">"S"</span>) + <span class="stringliteral">" pole"</span>);
-<a name="l00106"></a>00106       PolarStereographic::UPS.Forward(northp1, lat, lon, x1, y1, gamma1, k1);
+<a name="l00106"></a>00106       <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a>::UPS.<a class="code" href="classGeographicLib_1_1PolarStereographic.html#a30ef1a1f906ee389e2a5f7e5fd7d8fa4">Forward</a>(northp1, lat, lon, x1, y1, gamma1, k1);
 <a name="l00107"></a>00107     }
 <a name="l00108"></a>00108     <span class="keywordtype">int</span> ind = (utmp ? 2 : 0) + (northp1 ? 1 : 0);
 <a name="l00109"></a>00109     x1 += falseeasting_[ind];
@@ -174,10 +189,10 @@
 <a name="l00125"></a>00125                        real& lat, real& lon, real& gamma, real& k,
 <a name="l00126"></a>00126                        <span class="keywordtype">bool</span> mgrslimits) {
 <a name="l00127"></a>00127     <span class="keywordflow">if</span> (zone == INVALID || Math::isnan(x) || Math::isnan(y)) {
-<a name="l00128"></a>00128       lat = lon = gamma = k = Math::NaN<real>();
+<a name="l00128"></a>00128       lat = lon = gamma = k = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
 <a name="l00129"></a>00129       <span class="keywordflow">return</span>;
 <a name="l00130"></a>00130     }
-<a name="l00131"></a>00131     <span class="keywordflow">if</span> (! (zone >= MINZONE && zone <= MAXZONE))
+<a name="l00131"></a>00131     <span class="keywordflow">if</span> (!(zone >= MINZONE && zone <= MAXZONE))
 <a name="l00132"></a>00132       <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone)
 <a name="l00133"></a>00133                           + <span class="stringliteral">" not in range [0, 60]"</span>);
 <a name="l00134"></a>00134     <span class="keywordtype">bool</span> utmp = zone != UPS;
@@ -186,10 +201,10 @@
 <a name="l00137"></a>00137     x -= falseeasting_[ind];
 <a name="l00138"></a>00138     y -= falsenorthing_[ind];
 <a name="l00139"></a>00139     <span class="keywordflow">if</span> (utmp)
-<a name="l00140"></a>00140       TransverseMercator::UTM.Reverse(CentralMeridian(zone),
+<a name="l00140"></a>00140       <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>::UTM.<a class="code" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">Reverse</a>(CentralMeridian(zone),
 <a name="l00141"></a>00141                                       x, y, lat, lon, gamma, k);
 <a name="l00142"></a>00142     <span class="keywordflow">else</span>
-<a name="l00143"></a>00143       PolarStereographic::UPS.Reverse(northp, x, y, lat, lon, gamma, k);
+<a name="l00143"></a>00143       <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a>::UPS.<a class="code" href="classGeographicLib_1_1PolarStereographic.html#a01302b8dba43c57e3c3849f94123a157">Reverse</a>(northp, x, y, lat, lon, gamma, k);
 <a name="l00144"></a>00144   }
 <a name="l00145"></a>00145 
 <a name="l00146"></a>00146   <span class="keywordtype">void</span> UTMUPS::CheckLatLon(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) {
@@ -279,7 +294,7 @@
 <a name="l00230"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a3410e1e221158962f34147255653818f">00230</a>   std::string UTMUPS::EncodeZone(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp) {
 <a name="l00231"></a>00231     <span class="keywordflow">if</span> (zone == INVALID)
 <a name="l00232"></a>00232       <span class="keywordflow">return</span> string(<span class="stringliteral">"INV"</span>);
-<a name="l00233"></a>00233     <span class="keywordflow">if</span> (! (zone >= MINZONE && zone <= MAXZONE))
+<a name="l00233"></a>00233     <span class="keywordflow">if</span> (!(zone >= MINZONE && zone <= MAXZONE))
 <a name="l00234"></a>00234         <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone)
 <a name="l00235"></a>00235                             + <span class="stringliteral">" not in range [0, 60]"</span>);
 <a name="l00236"></a>00236     ostringstream os;
@@ -289,13 +304,18 @@
 <a name="l00240"></a>00240     <span class="keywordflow">return</span> os.str();
 <a name="l00241"></a>00241   }
 <a name="l00242"></a>00242 
-<a name="l00243"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">00243</a>   <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> UTMUPS::UTMShift() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(MGRS::utmNshift_); }
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">00243</a>   <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real UTMUPS::UTMShift() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(MGRS::utmNshift_); }
 <a name="l00244"></a>00244 
 <a name="l00245"></a>00245 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/UTMUPS_8hpp.html b/doc/html/UTMUPS_8hpp.html
index c6ab45d..ebbe8df 100644
--- a/doc/html/UTMUPS_8hpp.html
+++ b/doc/html/UTMUPS_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: UTMUPS.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">GEOGRAPHICLIB_UTMUPS_HPP</a>   "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">GEOGRAPHICLIB_UTMUPS_HPP</a>   "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
 
 <p>Definition in file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
 </div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_UTMUPS_HPP   "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_UTMUPS_HPP   "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"</td>
         </tr>
       </table>
 </div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/UTMUPS_8hpp_source.html b/doc/html/UTMUPS_8hpp_source.html
index f81e668..4585af9 100644
--- a/doc/html/UTMUPS_8hpp_source.html
+++ b/doc/html/UTMUPS_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: UTMUPS.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
 <a name="l00002"></a>00002 <span class="comment"> * \file UTMUPS.hpp</span>
 <a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::UTMUPS class</span>
 <a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License.  For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License.  For more information, see</span>
 <a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
 <a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_UTMUPS_HPP)</span>
 <a name="l00011"></a><a class="code" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_UTMUPS_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <sstream></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -110,23 +125,23 @@
 <a name="l00060"></a>00060 <span class="comment">   * Example of use:</span>
 <a name="l00061"></a>00061 <span class="comment">   * \include example-UTMUPS.cpp</span>
 <a name="l00062"></a>00062 <span class="comment">   **********************************************************************/</span>
-<a name="l00063"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html">00063</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a> {
+<a name="l00063"></a>00063   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> UTMUPS {
 <a name="l00064"></a>00064   <span class="keyword">private</span>:
-<a name="l00065"></a>00065     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00066"></a>00066     <span class="keyword">static</span> <span class="keyword">const</span> real falseeasting_[4];
-<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> real falsenorthing_[4];
-<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keyword">const</span> real mineasting_[4];
-<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> real maxeasting_[4];
-<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">const</span> real minnorthing_[4];
-<a name="l00071"></a>00071     <span class="keyword">static</span> <span class="keyword">const</span> real maxnorthing_[4];
-<a name="l00072"></a>00072     <span class="keyword">static</span> real CentralMeridian(<span class="keywordtype">int</span> zone) <span class="keywordflow">throw</span>()
+<a name="l00065"></a>00065     <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00066"></a>00066     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> falseeasting_[4];
+<a name="l00067"></a>00067     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> falsenorthing_[4];
+<a name="l00068"></a>00068     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mineasting_[4];
+<a name="l00069"></a>00069     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> maxeasting_[4];
+<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> minnorthing_[4];
+<a name="l00071"></a>00071     <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> maxnorthing_[4];
+<a name="l00072"></a>00072     <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> CentralMeridian(<span class="keywordtype">int</span> zone) <span class="keywordflow">throw</span>()
 <a name="l00073"></a>00073     { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6 * zone - 183); }
-<a name="l00074"></a>00074     <span class="keyword">static</span> <span class="keywordtype">void</span> CheckLatLon(real lat, real lon);
+<a name="l00074"></a>00074     <span class="keyword">static</span> <span class="keywordtype">void</span> CheckLatLon(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon);
 <a name="l00075"></a>00075     <span class="comment">// Throw an error if easting or northing are outside standard ranges.  If</span>
 <a name="l00076"></a>00076     <span class="comment">// throwp = false, return bool instead.</span>
-<a name="l00077"></a>00077     <span class="keyword">static</span> <span class="keywordtype">bool</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span> northp, real x, real y,
+<a name="l00077"></a>00077     <span class="keyword">static</span> <span class="keywordtype">bool</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span> northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
 <a name="l00078"></a>00078                             <span class="keywordtype">bool</span> msgrlimits = <span class="keyword">false</span>, <span class="keywordtype">bool</span> throwp = <span class="keyword">true</span>);
-<a name="l00079"></a>00079     <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>();                   <span class="comment">// Disable constructor</span>
+<a name="l00079"></a>00079     UTMUPS();                   <span class="comment">// Disable constructor</span>
 <a name="l00080"></a>00080 
 <a name="l00081"></a>00081   <span class="keyword">public</span>:
 <a name="l00082"></a>00082 <span class="comment"></span>
@@ -331,7 +346,7 @@
 <a name="l00281"></a>00281 <span class="comment">     * @return shift (meters) necessary to align N and S halves of a UTM zone</span>
 <a name="l00282"></a>00282 <span class="comment">     * (10<sup>7</sup>).</span>
 <a name="l00283"></a>00283 <span class="comment">     **********************************************************************/</span>
-<a name="l00284"></a>00284     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> UTMShift() throw();
+<a name="l00284"></a>00284     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMShift() throw();
 <a name="l00285"></a>00285 <span class="comment"></span>
 <a name="l00286"></a>00286 <span class="comment">    /** \name Inspector functions</span>
 <a name="l00287"></a>00287 <span class="comment">     **********************************************************************/</span><span class="comment"></span>
@@ -343,7 +358,7 @@
 <a name="l00293"></a>00293 <span class="comment">     * based on this ellipsoid.)</span>
 <a name="l00294"></a>00294 <span class="comment">     **********************************************************************/</span>
 <a name="l00295"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d49db77a23917ea1092">00295</a>     static <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() throw()
-<a name="l00296"></a>00296     { <span class="keywordflow">return</span> Constants::WGS84_a<real>(); }
+<a name="l00296"></a>00296     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(); }
 <a name="l00297"></a>00297 <span class="comment"></span>
 <a name="l00298"></a>00298 <span class="comment">    /**</span>
 <a name="l00299"></a>00299 <span class="comment">     * @return \e f the flattening of the WGS84 ellipsoid.</span>
@@ -351,25 +366,32 @@
 <a name="l00301"></a>00301 <span class="comment">     * (The WGS84 value is returned because the UTM and UPS projections are</span>
 <a name="l00302"></a>00302 <span class="comment">     * based on this ellipsoid.)</span>
 <a name="l00303"></a>00303 <span class="comment">     **********************************************************************/</span>
-<a name="l00304"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c55a266777039b8a9d">00304</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() throw()
-<a name="l00305"></a>00305     { <span class="keywordflow">return</span> Constants::WGS84_f<real>(); }
-<a name="l00306"></a>00306 <span class="comment"></span>
-<a name="l00307"></a>00307 <span class="comment">    /**</span>
-<a name="l00308"></a>00308 <span class="comment">     * <b>DEPRECATED</b></span>
-<a name="l00309"></a>00309 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00310"></a>00310 <span class="comment">     **********************************************************************/</span>
-<a name="l00311"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">00311</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() throw()
-<a name="l00312"></a>00312     { <span class="keywordflow">return</span> 1/Constants::WGS84_f<real>(); }<span class="comment"></span>
-<a name="l00313"></a>00313 <span class="comment">    ///@}</span>
-<a name="l00314"></a>00314 <span class="comment"></span>  };
-<a name="l00315"></a>00315 
-<a name="l00316"></a>00316 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00304"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c55a266777039b8a9d">00304</a>     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() throw()
+<a name="l00305"></a>00305     { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>(); }<span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment">    ///@}</span>
+<a name="l00307"></a>00307 <span class="comment"></span><span class="comment"></span>
+<a name="l00308"></a>00308 <span class="comment">    /// \cond SKIP</span>
+<a name="l00309"></a>00309 <span class="comment"></span><span class="comment">    /**</span>
+<a name="l00310"></a>00310 <span class="comment">     * <b>DEPRECATED</b></span>
+<a name="l00311"></a>00311 <span class="comment">     * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
+<a name="l00312"></a>00312 <span class="comment">     **********************************************************************/</span>
+<a name="l00313"></a>00313     <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() throw()
+<a name="l00314"></a>00314     { <span class="keywordflow">return</span> 1/<a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>(); }<span class="comment"></span>
+<a name="l00315"></a>00315 <span class="comment">    /// \endcond</span>
+<a name="l00316"></a>00316 <span class="comment"></span>  };
 <a name="l00317"></a>00317 
-<a name="l00318"></a>00318 <span class="preprocessor">#endif  // GEOGRAPHICLIB_UTMUPS_HPP</span>
+<a name="l00318"></a>00318 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320 <span class="preprocessor">#endif  // GEOGRAPHICLIB_UTMUPS_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Utility_8cpp.html b/doc/html/Utility_8cpp.html
index 6addb90..1ed907d 100644
--- a/doc/html/Utility_8cpp.html
+++ b/doc/html/Utility_8cpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Utility.cpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8cpp.html#a572751ca8465c95b9e157dc20175f6bc">GEOGRAPHICLIB_UTILITY_CPP</a>   "$Id: 6f06d5d8fa9d731dc5a5fa4516838f639a2ba40b $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Utility_8cpp_source.html b/doc/html/Utility_8cpp_source.html
index 4ba8610..e996271 100644
--- a/doc/html/Utility_8cpp_source.html
+++ b/doc/html/Utility_8cpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Utility.cpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,10 +86,10 @@
 <a name="l00022"></a><a class="code" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">00022</a>   <span class="keywordtype">bool</span> Utility::ParseLine(<span class="keyword">const</span> std::string& line,
 <a name="l00023"></a>00023                           std::string& key, std::string& val) {
 <a name="l00024"></a>00024     <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r"</span>;
-<a name="l00025"></a>00025     string::size_type n0 = line.find_first_not_of(spaces);
+<a name="l00025"></a>00025     <span class="keywordtype">string</span>::size_type n0 = line.find_first_not_of(spaces);
 <a name="l00026"></a>00026     <span class="keywordflow">if</span> (n0 == string::npos)
 <a name="l00027"></a>00027       <span class="keywordflow">return</span> <span class="keyword">false</span>;             <span class="comment">// Blank line</span>
-<a name="l00028"></a>00028     string::size_type n1 = line.find_first_of(<span class="charliteral">'#'</span>, n0);
+<a name="l00028"></a>00028     <span class="keywordtype">string</span>::size_type n1 = line.find_first_of(<span class="charliteral">'#'</span>, n0);
 <a name="l00029"></a>00029     <span class="keywordflow">if</span> (n0 == n1)
 <a name="l00030"></a>00030       <span class="keywordflow">return</span> <span class="keyword">false</span>;             <span class="comment">// Only a comment</span>
 <a name="l00031"></a>00031     val = line.substr(n0, n1 == string::npos ? n1 : n1 - n0);
@@ -97,8 +112,13 @@
 <a name="l00048"></a>00048 } <span class="comment">// namespace GeographicLib</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Utility_8hpp.html b/doc/html/Utility_8hpp.html
index a7a73f5..5cd5ed6 100644
--- a/doc/html/Utility_8hpp.html
+++ b/doc/html/Utility_8hpp.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Utility.hpp File Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,13 +87,11 @@ Classes</h2></td></tr>
 <tr><td colspan="2"><h2><a name="namespaces"></a>
 Namespaces</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
 <br/></td></tr>
-</p>
 <tr><td colspan="2"><h2><a name="define-members"></a>
 Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8hpp.html#aba45651243cd7449a073dd2c8b11a88a">GEOGRAPHICLIB_UTILITY_HPP</a>   "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8hpp.html#aba45651243cd7449a073dd2c8b11a88a">GEOGRAPHICLIB_UTILITY_HPP</a>   "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
@@ -91,7 +104,7 @@ Defines</h2></td></tr>
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GEOGRAPHICLIB_UTILITY_HPP   "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"</td>
+          <td class="memname">#define GEOGRAPHICLIB_UTILITY_HPP   "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"</td>
         </tr>
       </table>
 </div>
@@ -102,8 +115,13 @@ Defines</h2></td></tr>
 </div>
 </div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/Utility_8hpp_source.html b/doc/html/Utility_8hpp_source.html
index 6e7ad48..26af483 100644
--- a/doc/html/Utility_8hpp_source.html
+++ b/doc/html/Utility_8hpp_source.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Utility.hpp Source File</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
 <a name="l00009"></a>00009 
 <a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_UTILITY_HPP)</span>
 <a name="l00011"></a><a class="code" href="Utility_8hpp.html#aba45651243cd7449a073dd2c8b11a88a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_UTILITY_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">  "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"</span>
 <a name="l00013"></a>00013 <span class="preprocessor"></span>
 <a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
 <a name="l00015"></a>00015 <span class="preprocessor">#include <iomanip></span>
@@ -77,7 +92,7 @@
 <a name="l00027"></a>00027 <span class="comment">   * Example of use:</span>
 <a name="l00028"></a>00028 <span class="comment">   * \include example-Utility.cpp</span>
 <a name="l00029"></a>00029 <span class="comment">   **********************************************************************/</span>
-<a name="l00030"></a><a class="code" href="classGeographicLib_1_1Utility.html">00030</a>   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a> {
+<a name="l00030"></a>00030   <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Utility {
 <a name="l00031"></a>00031   <span class="keyword">private</span>:
 <a name="l00032"></a>00032     <span class="keyword">static</span> <span class="keywordtype">bool</span> gregorian(<span class="keywordtype">int</span> y, <span class="keywordtype">int</span> m, <span class="keywordtype">int</span> d) {
 <a name="l00033"></a>00033       <span class="comment">// The original cut over to the Gregorian calendar in Pope Gregory XIII's</span>
@@ -283,7 +298,7 @@
 <a name="l00233"></a>00233 <span class="comment">     * should be of the form yyyy-mm or yyyy-mm-dd and this is converted to a</span>
 <a name="l00234"></a>00234 <span class="comment">     * number with 2010-01-01 giving 2010.0 and 2012-07-03 giving 2012.5.</span>
 <a name="l00235"></a>00235 <span class="comment">     **********************************************************************/</span>
-<a name="l00236"></a><a class="code" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">00236</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">fractionalyear</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00236"></a><a class="code" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">00236</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">fractionalyear</a>(<span class="keyword">const</span> std::string& s) {
 <a name="l00237"></a>00237       <span class="keywordflow">try</span> {
 <a name="l00238"></a>00238         <span class="keywordflow">return</span> num<T>(s);
 <a name="l00239"></a>00239       }
@@ -306,7 +321,7 @@
 <a name="l00256"></a>00256 <span class="comment">     * If \e p >= 0, then the number fixed format is used with p bits of</span>
 <a name="l00257"></a>00257 <span class="comment">     * precision.  With p < 0, there is no manipulation of the format.</span>
 <a name="l00258"></a>00258 <span class="comment">     **********************************************************************/</span>
-<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">00259</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> std::string <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">str</a>(T x, <span class="keywordtype">int</span> p = -1) {
+<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">00259</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> std::string <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">str</a>(T x, <span class="keywordtype">int</span> p = -1) {
 <a name="l00260"></a>00260       <span class="keywordflow">if</span> (!std::numeric_limits<T>::is_integer && !Math::isfinite<T>(x))
 <a name="l00261"></a>00261         <span class="keywordflow">return</span> x < 0 ? std::string(<span class="stringliteral">"-inf"</span>) :
 <a name="l00262"></a>00262           (x > 0 ? std::string(<span class="stringliteral">"inf"</span>) : std::string(<span class="stringliteral">"nan"</span>));
@@ -322,7 +337,7 @@
 <a name="l00272"></a>00272 <span class="comment">     * @param[in] s the string to be converted.</span>
 <a name="l00273"></a>00273 <span class="comment">     * @return object of type T</span>
 <a name="l00274"></a>00274 <span class="comment">     **********************************************************************/</span>
-<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">00275</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">num</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">00275</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">num</a>(<span class="keyword">const</span> std::string& s) {
 <a name="l00276"></a>00276       T x;
 <a name="l00277"></a>00277       std::string errmsg;
 <a name="l00278"></a>00278       <span class="keywordflow">do</span> {                     <span class="comment">// Executed once (provides the ability to break)</span>
@@ -351,7 +366,7 @@
 <a name="l00301"></a>00301 <span class="comment">     * @param[in] s the string to be matched.</span>
 <a name="l00302"></a>00302 <span class="comment">     * @return appropriate special value (+/-inf, nan) or 0 is none is found.</span>
 <a name="l00303"></a>00303 <span class="comment">     **********************************************************************/</span>
-<a name="l00304"></a><a class="code" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">00304</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">nummatch</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00304"></a><a class="code" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">00304</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">nummatch</a>(<span class="keyword">const</span> std::string& s) {
 <a name="l00305"></a>00305       <span class="keywordflow">if</span> (s.length() < 3)
 <a name="l00306"></a>00306         <span class="keywordflow">return</span> 0;
 <a name="l00307"></a>00307       std::string t;
@@ -368,9 +383,9 @@
 <a name="l00318"></a>00318       t = t.substr(p0, p1 + 1 - p0);  <span class="comment">// Length at least 3</span>
 <a name="l00319"></a>00319       <span class="keywordflow">if</span> (t == <span class="stringliteral">"NAN"</span> || t == <span class="stringliteral">"1.#QNAN"</span> || t == <span class="stringliteral">"1.#SNAN"</span> || t == <span class="stringliteral">"1.#IND"</span> ||
 <a name="l00320"></a>00320           t == <span class="stringliteral">"1.#R"</span>)
-<a name="l00321"></a>00321         <span class="keywordflow">return</span> Math::NaN<T>();
+<a name="l00321"></a>00321         <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<T>();
 <a name="l00322"></a>00322       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == <span class="stringliteral">"INF"</span> || t == <span class="stringliteral">"1.#INF"</span>)
-<a name="l00323"></a>00323         <span class="keywordflow">return</span> sign * Math::infinity<T>();
+<a name="l00323"></a>00323         <span class="keywordflow">return</span> sign * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::infinity<T>();
 <a name="l00324"></a>00324       <span class="keywordflow">return</span> 0;
 <a name="l00325"></a>00325     }
 <a name="l00326"></a>00326 <span class="comment"></span>
@@ -381,7 +396,7 @@
 <a name="l00331"></a>00331 <span class="comment">     * @param[in] s the string to be converted.</span>
 <a name="l00332"></a>00332 <span class="comment">     * @return object of type T</span>
 <a name="l00333"></a>00333 <span class="comment">     **********************************************************************/</span>
-<a name="l00334"></a><a class="code" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">00334</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">fract</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00334"></a><a class="code" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">00334</a>     <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">fract</a>(<span class="keyword">const</span> std::string& s) {
 <a name="l00335"></a>00335       std::string::size_type delim = s.find(<span class="charliteral">'/'</span>);
 <a name="l00336"></a>00336       <span class="keywordflow">return</span>
 <a name="l00337"></a>00337         !(delim != std::string::npos && delim >= 1 && delim + 2 <= s.size()) ?
@@ -419,7 +434,7 @@
 <a name="l00369"></a>00369 <span class="comment">     * @param[in] num the size of the array.</span>
 <a name="l00370"></a>00370 <span class="comment">     **********************************************************************/</span>
 <a name="l00371"></a>00371     <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
-<a name="l00372"></a><a class="code" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">00372</a>       <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
+<a name="l00372"></a><a class="code" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">00372</a>       <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
 <a name="l00373"></a>00373                                    IntT array[], <span class="keywordtype">size_t</span> num) {
 <a name="l00374"></a>00374       <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(IntT) == <span class="keyword">sizeof</span>(ExtT) &&
 <a name="l00375"></a>00375           std::numeric_limits<IntT>::is_integer ==
@@ -445,7 +460,7 @@
 <a name="l00395"></a>00395           <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < n; ++j)
 <a name="l00396"></a>00396             <span class="comment">// fix endian-ness and cast to IntT</span>
 <a name="l00397"></a>00397             array[i++] = IntT(bigendp == <a class="code" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">Math::bigendian</a> ? buffer[j] :
-<a name="l00398"></a>00398                               Math::swab<IntT>(buffer[j]));
+<a name="l00398"></a>00398                               Math::swab<ExtT>(buffer[j]));
 <a name="l00399"></a>00399           k -= n;
 <a name="l00400"></a>00400         }
 <a name="l00401"></a>00401       }
@@ -465,36 +480,99 @@
 <a name="l00415"></a>00415 <span class="comment">     * @param[out] array the output vector of type IntT (internal).</span>
 <a name="l00416"></a>00416 <span class="comment">     **********************************************************************/</span>
 <a name="l00417"></a>00417     <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
-<a name="l00418"></a><a class="code" href="classGeographicLib_1_1Utility.html#a3acad0c1faffcd87292776d1cae26290">00418</a>       <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
+<a name="l00418"></a><a class="code" href="classGeographicLib_1_1Utility.html#a044796b4fc14a952abec27da27fc20be">00418</a>       <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
 <a name="l00419"></a>00419                                    std::vector<IntT>& array) {
 <a name="l00420"></a>00420       readarray<ExtT, IntT, bigendp>(str, &array[0], array.size());
 <a name="l00421"></a>00421     }
 <a name="l00422"></a>00422 <span class="comment"></span>
 <a name="l00423"></a>00423 <span class="comment">    /**</span>
-<a name="l00424"></a>00424 <span class="comment">     * Parse a KEY VALUE line.</span>
-<a name="l00425"></a>00425 <span class="comment">     *</span>
-<a name="l00426"></a>00426 <span class="comment">     * @param[in] line the input line.</span>
-<a name="l00427"></a>00427 <span class="comment">     * @param[out] key the key.</span>
-<a name="l00428"></a>00428 <span class="comment">     * @param[out] val the value.</span>
-<a name="l00429"></a>00429 <span class="comment">     * @return whether a key was found.</span>
-<a name="l00430"></a>00430 <span class="comment">     *</span>
-<a name="l00431"></a>00431 <span class="comment">     * A # character and everything after it are discarded.  If the results is</span>
-<a name="l00432"></a>00432 <span class="comment">     * just white space, the routine returns false (and \e key and \e val are</span>
-<a name="l00433"></a>00433 <span class="comment">     * not set).  Otherwise the first token is taken to be the key and the rest</span>
-<a name="l00434"></a>00434 <span class="comment">     * of the line (trimmed of leading and trailing white space) is the value.</span>
-<a name="l00435"></a>00435 <span class="comment">     **********************************************************************/</span>
-<a name="l00436"></a>00436     <span class="keyword">static</span> <span class="keywordtype">bool</span> ParseLine(<span class="keyword">const</span> std::string& line,
-<a name="l00437"></a>00437                           std::string& key, std::string& val);
-<a name="l00438"></a>00438 
-<a name="l00439"></a>00439   };
-<a name="l00440"></a>00440 
-<a name="l00441"></a>00441 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00442"></a>00442 
-<a name="l00443"></a>00443 <span class="preprocessor">#endif  // GEOGRAPHICLIB_UTILITY_HPP</span>
+<a name="l00424"></a>00424 <span class="comment">     * Write data in an array of type IntT as type ExtT to a binary stream.</span>
+<a name="l00425"></a>00425 <span class="comment">     * The data in the file is in (bigendp ? big : little)-endian format.</span>
+<a name="l00426"></a>00426 <span class="comment">     *</span>
+<a name="l00427"></a>00427 <span class="comment">     * @tparam ExtT the type of the objects in the binary stream (external).</span>
+<a name="l00428"></a>00428 <span class="comment">     * @tparam IntT the type of the objects in the array (internal).</span>
+<a name="l00429"></a>00429 <span class="comment">     * @tparam bigendp true if the external storage format is big-endian.</span>
+<a name="l00430"></a>00430 <span class="comment">     * @param[out] str the output stream for the data of type ExtT (external).</span>
+<a name="l00431"></a>00431 <span class="comment">     * @param[in] array the input array of type IntT (internal).</span>
+<a name="l00432"></a>00432 <span class="comment">     * @param[in] num the size of the array.</span>
+<a name="l00433"></a>00433 <span class="comment">     **********************************************************************/</span>
+<a name="l00434"></a>00434     <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
+<a name="l00435"></a><a class="code" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">00435</a>       <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> writearray(std::ostream& str,
+<a name="l00436"></a>00436                                    <span class="keyword">const</span> IntT array[], <span class="keywordtype">size_t</span> num) {
+<a name="l00437"></a>00437       <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(IntT) == <span class="keyword">sizeof</span>(ExtT) &&
+<a name="l00438"></a>00438           std::numeric_limits<IntT>::is_integer ==
+<a name="l00439"></a>00439           std::numeric_limits<ExtT>::is_integer &&
+<a name="l00440"></a>00440           bigendp == <a class="code" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">Math::bigendian</a>) {
+<a name="l00441"></a>00441         <span class="comment">// Data is compatible (including endian-ness).</span>
+<a name="l00442"></a>00442         str.write(reinterpret_cast<const char *>(array), num * <span class="keyword">sizeof</span>(ExtT));
+<a name="l00443"></a>00443         <span class="keywordflow">if</span> (!str.good())
+<a name="l00444"></a>00444           <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Failure writing data"</span>);
+<a name="l00445"></a>00445       } <span class="keywordflow">else</span> {
+<a name="l00446"></a>00446         <span class="keyword">const</span> <span class="keywordtype">int</span> bufsize = 1024; <span class="comment">// write this many values at a time</span>
+<a name="l00447"></a>00447         ExtT buffer[bufsize];     <span class="comment">// temporary buffer</span>
+<a name="l00448"></a>00448         <span class="keywordtype">int</span> k = int(num);         <span class="comment">// data values left to write</span>
+<a name="l00449"></a>00449         <span class="keywordtype">int</span> i = 0;                <span class="comment">// index into output array</span>
+<a name="l00450"></a>00450         <span class="keywordflow">while</span> (k) {
+<a name="l00451"></a>00451           <span class="keywordtype">int</span> n = (std::min)(k, bufsize);
+<a name="l00452"></a>00452           <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < n; ++j)
+<a name="l00453"></a>00453             <span class="comment">// cast to ExtT and fix endian-ness</span>
+<a name="l00454"></a>00454             buffer[j] = bigendp == <a class="code" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">Math::bigendian</a> ? ExtT(array[i++]) :
+<a name="l00455"></a>00455               <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::swab<ExtT>(ExtT(array[i++]));
+<a name="l00456"></a>00456           str.write(reinterpret_cast<const char *>(buffer), n * <span class="keyword">sizeof</span>(ExtT));
+<a name="l00457"></a>00457           <span class="keywordflow">if</span> (!str.good())
+<a name="l00458"></a>00458             <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Failure writing data"</span>);
+<a name="l00459"></a>00459           k -= n;
+<a name="l00460"></a>00460         }
+<a name="l00461"></a>00461       }
+<a name="l00462"></a>00462       <span class="keywordflow">return</span>;
+<a name="l00463"></a>00463     }
+<a name="l00464"></a>00464 <span class="comment"></span>
+<a name="l00465"></a>00465 <span class="comment">    /**</span>
+<a name="l00466"></a>00466 <span class="comment">     * Write data in an array of type IntT as type ExtT to a binary stream.</span>
+<a name="l00467"></a>00467 <span class="comment">     * The data in the file is in (bigendp ? big : little)-endian format.</span>
+<a name="l00468"></a>00468 <span class="comment">     *</span>
+<a name="l00469"></a>00469 <span class="comment">     * @tparam ExtT the type of the objects in the binary stream (external).</span>
+<a name="l00470"></a>00470 <span class="comment">     * @tparam IntT the type of the objects in the array (internal).</span>
+<a name="l00471"></a>00471 <span class="comment">     * @tparam bigendp true if the external storage format is big-endian.</span>
+<a name="l00472"></a>00472 <span class="comment">     * @param[out] str the output stream for the data of type ExtT (external).</span>
+<a name="l00473"></a>00473 <span class="comment">     * @param[in] array the input vector of type IntT (internal).</span>
+<a name="l00474"></a>00474 <span class="comment">     **********************************************************************/</span>
+<a name="l00475"></a>00475     <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
+<a name="l00476"></a><a class="code" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">00476</a>       <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> writearray(std::ostream& str,
+<a name="l00477"></a>00477                                    std::vector<IntT>& array) {
+<a name="l00478"></a>00478       writearray<ExtT, IntT, bigendp>(str, &array[0], array.size());
+<a name="l00479"></a>00479     }
+<a name="l00480"></a>00480 <span class="comment"></span>
+<a name="l00481"></a>00481 <span class="comment">    /**</span>
+<a name="l00482"></a>00482 <span class="comment">     * Parse a KEY VALUE line.</span>
+<a name="l00483"></a>00483 <span class="comment">     *</span>
+<a name="l00484"></a>00484 <span class="comment">     * @param[in] line the input line.</span>
+<a name="l00485"></a>00485 <span class="comment">     * @param[out] key the key.</span>
+<a name="l00486"></a>00486 <span class="comment">     * @param[out] val the value.</span>
+<a name="l00487"></a>00487 <span class="comment">     * @return whether a key was found.</span>
+<a name="l00488"></a>00488 <span class="comment">     *</span>
+<a name="l00489"></a>00489 <span class="comment">     * A # character and everything after it are discarded.  If the results is</span>
+<a name="l00490"></a>00490 <span class="comment">     * just white space, the routine returns false (and \e key and \e val are</span>
+<a name="l00491"></a>00491 <span class="comment">     * not set).  Otherwise the first token is taken to be the key and the rest</span>
+<a name="l00492"></a>00492 <span class="comment">     * of the line (trimmed of leading and trailing white space) is the value.</span>
+<a name="l00493"></a>00493 <span class="comment">     **********************************************************************/</span>
+<a name="l00494"></a>00494     <span class="keyword">static</span> <span class="keywordtype">bool</span> ParseLine(<span class="keyword">const</span> std::string& line,
+<a name="l00495"></a>00495                           std::string& key, std::string& val);
+<a name="l00496"></a>00496 
+<a name="l00497"></a>00497   };
+<a name="l00498"></a>00498 
+<a name="l00499"></a>00499 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00500"></a>00500 
+<a name="l00501"></a>00501 <span class="preprocessor">#endif  // GEOGRAPHICLIB_UTILITY_HPP</span>
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 962226f..d19faf0 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -43,7 +58,7 @@
 </div>
 <div class="contents">
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><table>
-  <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td class="indexvalue">An accumulator for sums </td></tr>
+  <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td class="indexvalue">An accumulator for sums </td></tr>
   <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td class="indexvalue">Albers Equal Area Conic Projection </td></tr>
   <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td class="indexvalue">Azimuthal Equidistant Projection </td></tr>
   <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td class="indexvalue">Cassini-Soldner Projection </td></tr>
@@ -81,8 +96,13 @@
   <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td class="indexvalue">Convert between Geographic coordinates and UTM/UPS </td></tr>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Accumulator-members.html b/doc/html/classGeographicLib_1_1Accumulator-members.html
index 341e997..f4d44e3 100644
--- a/doc/html/classGeographicLib_1_1Accumulator-members.html
+++ b/doc/html/classGeographicLib_1_1Accumulator-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,26 +60,31 @@
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">GeographicLib::Accumulator< T > Member List</div>  </div>
+<div class="title">GeographicLib::Accumulator Member List</div>  </div>
 </div>
 <div class="contents">
-This is the complete list of members for <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a>, including all inherited members.<table>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">Accumulator</a>(T y=T(0))</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">operator!=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">operator()</a>() const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">operator()</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">operator*=</a>(int n)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">operator+=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">operator-=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">operator<</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">operator<=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">operator=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">operator==</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">operator></a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">operator>=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
+This is the complete list of members for <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>, including all inherited members.<table>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">Accumulator</a>(T y=T(0))</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">operator!=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">operator()</a>() const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">operator()</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">operator*=</a>(int n)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">operator+=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">operator-=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">operator<</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">operator<=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">operator=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">operator==</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">operator></a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">operator>=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Accumulator.html b/doc/html/classGeographicLib_1_1Accumulator.html
index 666da4e..e97f1d6 100644
--- a/doc/html/classGeographicLib_1_1Accumulator.html
+++ b/doc/html/classGeographicLib_1_1Accumulator.html
@@ -2,24 +2,39 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: GeographicLib::Accumulator< T > Class Template Reference</title>
+<title>GeographicLib: GeographicLib::Accumulator Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -47,7 +62,7 @@
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a>  </div>
   <div class="headertitle">
-<div class="title">GeographicLib::Accumulator< T > Class Template Reference</div>  </div>
+<div class="title">GeographicLib::Accumulator Class Reference</div>  </div>
 </div>
 <div class="contents">
 <!-- doxytag: class="GeographicLib::Accumulator" -->
@@ -60,25 +75,22 @@
 <table class="memberdecls">
 <tr><td colspan="2"><h2><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">Accumulator</a> (T y=T(0))  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">operator=</a> (T y)  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">operator()</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">operator()</a> (T y) const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">operator+=</a> (T y)  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">operator-=</a> (T y)  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">operator*=</a> (int n)  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">operator==</a> (T y) const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">operator!=</a> (T y) const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">operator<</a> (T y) const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">operator<=</a> (T y) const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">operator></a> (T y) const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">operator>=</a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">Accumulator</a> (T y=T(0))  throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">operator=</a> (T y)  throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">operator()</a> () const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">operator()</a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">operator+=</a> (T y)  throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">operator-=</a> (T y)  throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">operator*=</a> (int n)  throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">operator==</a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">operator!=</a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">operator<</a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">operator<=</a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">operator></a> (T y) const   throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">operator>=</a> (T y) const   throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><h3>template<typename T = Math::real><br/>
-class GeographicLib::Accumulator< T ></h3>
-
-<p>An accumulator for sums. </p>
+<div class="textblock"><p>An accumulator for sums. </p>
 <p>This allow many numbers of floating point type <em>T</em> to be added together with twice the normal precision. Thus if <em>T</em> is double, the effective precision of the sum is 106 bits or about 32 decimal places. The core idea is the error free transformation of a sum, D. E. Knuth, TAOCP, Vol 2, 4.2.2, Theorem B.</p>
 <p>The implementation follows J. R. Shewchuk, <a href="http://dx.doi.org/10.1007/PL00009321">Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates</a>, Discrete & Computational Geometry 18(3) 305-363 (1997).</p>
 <p>Approximate timings (summing a vector<double>)</p>
@@ -114,17 +126,13 @@ class GeographicLib::Accumulator< T ></h3>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Accumulator_8hpp_source.html#l00043">43</a> of file <a class="el" href="Accumulator_8hpp_source.html">Accumulator.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a14d98e366933e0997c1954290f9d0fc3"></a><!-- doxytag: member="GeographicLib::Accumulator::Accumulator" ref="a14d98e366933e0997c1954290f9d0fc3" args="(T y=T(0))" -->
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a6d30e4a792644ffc78546dda4b5d0022"></a><!-- doxytag: member="GeographicLib::Accumulator::Accumulator" ref="a6d30e4a792644ffc78546dda4b5d0022" args="(T y=T(0))" -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::<a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> </td>
+          <td class="memname">GeographicLib::Accumulator::Accumulator </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em> = <code>T(0)</code></td><td>)</td>
@@ -146,14 +154,12 @@ template<typename T = Math::real> </div>
 </div>
 </div>
 <hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acb3c1aa458551c474bd8d487c3488789"></a><!-- doxytag: member="GeographicLib::Accumulator::operator=" ref="acb3c1aa458551c474bd8d487c3488789" args="(T y)" -->
+<a class="anchor" id="a9cd31c9155208a2de0fdd9810f2a9dd8"></a><!-- doxytag: member="GeographicLib::Accumulator::operator=" ref="a9cd31c9155208a2de0fdd9810f2a9dd8" args="(T y)" -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator= </td>
+          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator= </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -174,14 +180,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a7da3f417100387abd140f4f6fd541f3c"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="a7da3f417100387abd140f4f6fd541f3c" args="() const " -->
+<a class="anchor" id="af74ec2f9a77fcc82819111e6bb87b375"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="af74ec2f9a77fcc82819111e6bb87b375" args="() const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">T <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator() </td>
+          <td class="memname">T GeographicLib::Accumulator::operator() </td>
           <td>(</td>
           <td class="paramname"></td><td>)</td>
           <td> const  throw ()<code> [inline]</code></td>
@@ -196,14 +200,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a34cc7a21a2163fe7865734f9c2995f34"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="a34cc7a21a2163fe7865734f9c2995f34" args="(T y) const " -->
+<a class="anchor" id="a1a2b7ac3fd3b067a1c9930cb02a102b2"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="a1a2b7ac3fd3b067a1c9930cb02a102b2" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">T <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator() </td>
+          <td class="memname">T GeographicLib::Accumulator::operator() </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -225,14 +227,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="acdefeaf2aa13cfc78109bdcf4b2cc5d9"></a><!-- doxytag: member="GeographicLib::Accumulator::operator+=" ref="acdefeaf2aa13cfc78109bdcf4b2cc5d9" args="(T y)" -->
+<a class="anchor" id="adc56d12f08b8a61b19dd78ce532285d4"></a><!-- doxytag: member="GeographicLib::Accumulator::operator+=" ref="adc56d12f08b8a61b19dd78ce532285d4" args="(T y)" -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator+= </td>
+          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator+= </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -253,14 +253,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a1add8644c70e445b32c11f269a0345ef"></a><!-- doxytag: member="GeographicLib::Accumulator::operator-=" ref="a1add8644c70e445b32c11f269a0345ef" args="(T y)" -->
+<a class="anchor" id="abf3e43f38791c48d1fa09e4fb569827b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator-=" ref="abf3e43f38791c48d1fa09e4fb569827b" args="(T y)" -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator-= </td>
+          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator-= </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -281,14 +279,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a400f473aa76225662c0493679c1a9072"></a><!-- doxytag: member="GeographicLib::Accumulator::operator*=" ref="a400f473aa76225662c0493679c1a9072" args="(int n)" -->
+<a class="anchor" id="a2b0bc40e9722e1ffac89ecfeb601fb23"></a><!-- doxytag: member="GeographicLib::Accumulator::operator*=" ref="a2b0bc40e9722e1ffac89ecfeb601fb23" args="(int n)" -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator*= </td>
+          <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator*= </td>
           <td>(</td>
           <td class="paramtype">int </td>
           <td class="paramname"><em>n</em></td><td>)</td>
@@ -309,14 +305,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a826d30c1794c242628121d528461a383"></a><!-- doxytag: member="GeographicLib::Accumulator::operator==" ref="a826d30c1794c242628121d528461a383" args="(T y) const " -->
+<a class="anchor" id="a6ea5d769a36e01327f3633b39cd38290"></a><!-- doxytag: member="GeographicLib::Accumulator::operator==" ref="a6ea5d769a36e01327f3633b39cd38290" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator== </td>
+          <td class="memname">bool GeographicLib::Accumulator::operator== </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -331,14 +325,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a64df6698b929c36ef2ea53762b1ca93b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator!=" ref="a64df6698b929c36ef2ea53762b1ca93b" args="(T y) const " -->
+<a class="anchor" id="a4102ce7aac36753c2b0390c4fc951a42"></a><!-- doxytag: member="GeographicLib::Accumulator::operator!=" ref="a4102ce7aac36753c2b0390c4fc951a42" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator!= </td>
+          <td class="memname">bool GeographicLib::Accumulator::operator!= </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -353,14 +345,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a3852660b49bef6eb2d92f1296a86459b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<" ref="a3852660b49bef6eb2d92f1296a86459b" args="(T y) const " -->
+<a class="anchor" id="a9a7299c02ec8805d951309fdae60e57f"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<" ref="a9a7299c02ec8805d951309fdae60e57f" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator< </td>
+          <td class="memname">bool GeographicLib::Accumulator::operator< </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -375,14 +365,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a04aea3f9aad7dd1599bb419e7cf4529a"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<=" ref="a04aea3f9aad7dd1599bb419e7cf4529a" args="(T y) const " -->
+<a class="anchor" id="afb83bdb43b78e20f76e2a7e5e2440386"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<=" ref="afb83bdb43b78e20f76e2a7e5e2440386" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator<= </td>
+          <td class="memname">bool GeographicLib::Accumulator::operator<= </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -397,14 +385,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a3f1172477b4c225e064fb87753d567ef"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>" ref="a3f1172477b4c225e064fb87753d567ef" args="(T y) const " -->
+<a class="anchor" id="af0e4a35c09b0b179ebf1e2f6912ddeb3"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>" ref="af0e4a35c09b0b179ebf1e2f6912ddeb3" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator> </td>
+          <td class="memname">bool GeographicLib::Accumulator::operator> </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -419,14 +405,12 @@ template<typename T = Math::real> </div>
 
 </div>
 </div>
-<a class="anchor" id="a4d509a497da83624d913ed00649644c1"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>=" ref="a4d509a497da83624d913ed00649644c1" args="(T y) const " -->
+<a class="anchor" id="aeafc5d10683648d37fe18ec75725196b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>=" ref="aeafc5d10683648d37fe18ec75725196b" args="(T y) const " -->
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator>= </td>
+          <td class="memname">bool GeographicLib::Accumulator::operator>= </td>
           <td>(</td>
           <td class="paramtype">T </td>
           <td class="paramname"><em>y</em></td><td>)</td>
@@ -445,8 +429,13 @@ template<typename T = Math::real> </div>
 <li><a class="el" href="Accumulator_8hpp_source.html">Accumulator.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html b/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html
index bc33ba4..6ef50a4 100644
--- a/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html
+++ b/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,15 +74,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#aac57f3a9c0c08fb897a1e37034d127c1">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">Reverse</a>(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a871246cba03145512f3f12ceb3e3e3a8">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a0c00022edeb6b67dcd4e00f087b412c4">SetScale</a>(real lat, real k=real(1))</td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1AlbersEqualArea.html b/doc/html/classGeographicLib_1_1AlbersEqualArea.html
index 64b1215..7edfc1d 100644
--- a/doc/html/classGeographicLib_1_1AlbersEqualArea.html
+++ b/doc/html/classGeographicLib_1_1AlbersEqualArea.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::AlbersEqualArea Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">CentralScale</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
@@ -103,7 +117,7 @@ Static Public Attributes</h2></td></tr>
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
    <span class="keyword">const</span> <span class="keywordtype">double</span>
-     a = Constants::WGS84_a<double>(),
+     a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<double>(),
      f = Constants::WGS84_f<double>(),
      lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, <span class="comment">// standard parallels</span>
      k1 = 1,                                   <span class="comment">// scale</span>
@@ -131,8 +145,7 @@ Static Public Attributes</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00058">58</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+</pre></div><p><a href="ConicProj.1.html">ConicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> and <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a08edd228ba175a5ae71d783c4a712e50"></a><!-- doxytag: member="GeographicLib::AlbersEqualArea::AlbersEqualArea" ref="a08edd228ba175a5ae71d783c4a712e50" args="(real a, real f, real stdlat, real k0)" -->
 <div class="memitem">
@@ -361,7 +374,7 @@ Static Public Attributes</h2></td></tr>
 
 <p>Definition at line <a class="el" href="AlbersEqualArea_8cpp_source.html#l00439">439</a> of file <a class="el" href="AlbersEqualArea_8cpp_source.html">AlbersEqualArea.cpp</a>.</p>
 
-<p>References <a class="el" href="AlbersEqualArea_8cpp_source.html#l00379">Forward()</a>, <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00379">Forward()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
 
 </div>
 </div>
@@ -561,7 +574,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#aac57f3a9c0c08fb897a1e37034d127c1">AlbersEqualArea::Forward</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00229">229</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00233">233</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -609,7 +622,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">AlbersEqualArea::Reverse</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00239">239</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00243">243</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -628,7 +641,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00252">252</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00256">256</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -647,27 +660,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00258">258</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1d0ad953a852d4cdb9faa731b5530d70"></a><!-- doxytag: member="GeographicLib::AlbersEqualArea::InverseFlattening" ref="a1d0ad953a852d4cdb9faa731b5530d70" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::AlbersEqualArea::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00264">264</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00262">262</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -687,7 +680,7 @@ Static Public Attributes</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin for the projection (degrees).</dd></dl>
 <p>This is the latitude of minimum azimuthal scale and equals the <em>stdlat</em> in the 1-parallel constructor and lies between <em>stdlat1</em> and <em>stdlat2</em> in the 2-parallel constructors. </p>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00273">273</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00279">279</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -706,7 +699,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>central scale for the projection. This is the azimuthal scale on the latitude of origin. </dd></dl>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00279">279</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00285">285</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -723,7 +716,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> with the WGS84 ellipsoid, <em>stdlat</em> = 0, and <em>k0</em> = 1. This degenerates to the cylindrical equal area projection. </p>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00287">287</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00293">293</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -739,7 +732,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> with the WGS84 ellipsoid, <em>stdlat</em> = 90<sup>o</sup>, and <em>k0</em> = 1. This degenerates to the Lambert azimuthal equal area projection. </p>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00294">294</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00300">300</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -755,7 +748,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> with the WGS84 ellipsoid, <em>stdlat</em> = -90<sup>o</sup>, and <em>k0</em> = 1. This degenerates to the Lambert azimuthal equal area projection. </p>
 
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00301">301</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00307">307</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -764,8 +757,13 @@ Static Public Attributes</h2></td></tr>
 <li><a class="el" href="AlbersEqualArea_8cpp_source.html">AlbersEqualArea.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html b/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html
index f53c2d4..7bb45e5 100644
--- a/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html
+++ b/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,13 +68,17 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a950431c3d269fb82e9410f332c401786">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a6b86b19f2e1c773e028e386a0f5e00e0">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html b/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html
index 3b5f38a..00304d7 100644
--- a/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html
+++ b/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::AzimuthalEquidistant Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,12 +83,11 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">InverseFlattening</a> () const   throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Azimuthal Equidistant Projection. </p>
 <p>Azimuthal equidistant projection centered at an arbitrary position on the ellipsoid. For a point in projected space (<em>x</em>, <em>y</em>), the geodesic distance from the center position is hypot(<em>x</em>, <em>y</em>) and the azimuth of the geodesic from the center point is atan2(<em>x</em>, <em>y</em>). The Forward and Reverse methods also return the azimuth <em>azi</em> of the geodesic at (<em>x</em>, <em>y</em>) and reciprocal scale <em>rk</em> in the azimuthal direction which, [...]
-<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
 <p>Example of use: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::AzimuthalEquidistant class</span>
 <span class="comment">// $Id: d018fda4dc3289b06b9e6fe8cda16638430d9213 $</span>
@@ -88,7 +102,7 @@ Public Member Functions</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
     <span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
     <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> proj(geod);
@@ -113,8 +127,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00039">39</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+</pre></div><p><a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a125571cdeed68d10192611cc12e221ce"></a><!-- doxytag: member="GeographicLib::AzimuthalEquidistant::AzimuthalEquidistant" ref="a125571cdeed68d10192611cc12e221ce" args="(const Geodesic &earth=Geodesic::WGS84)" -->
 <div class="memitem">
@@ -138,7 +151,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00052">52</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00056">56</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
 
 </div>
 </div>
@@ -357,7 +370,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">AzimuthalEquidistant::Forward</a> without returning the azimuth and scale. </p>
 
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00103">103</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00107">107</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
 
 </div>
 </div>
@@ -411,7 +424,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">AzimuthalEquidistant::Reverse</a> without returning the azimuth and scale. </p>
 
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00112">112</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00116">116</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
 
 </div>
 </div>
@@ -430,7 +443,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00125">125</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00129">129</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
 
 </div>
 </div>
@@ -449,27 +462,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00131">131</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac4ec606131221d3eb0acc1ae00a34c63"></a><!-- doxytag: member="GeographicLib::AzimuthalEquidistant::InverseFlattening" ref="ac4ec606131221d3eb0acc1ae00a34c63" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::AzimuthalEquidistant::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00137">137</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00135">135</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
 
 </div>
 </div>
@@ -478,8 +471,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="AzimuthalEquidistant_8cpp_source.html">AzimuthalEquidistant.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1CassiniSoldner-members.html b/doc/html/classGeographicLib_1_1CassiniSoldner-members.html
index 5856cf1..bf7e568 100644
--- a/doc/html/classGeographicLib_1_1CassiniSoldner-members.html
+++ b/doc/html/classGeographicLib_1_1CassiniSoldner-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -55,7 +70,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a37656c7551b10ad75a40758d0bba570d">Forward</a>(real lat, real lon, real &x, real &y, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a87bf8d3b416bbfd8b7a2c5269245e693">Forward</a>(real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">Init</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a2aa51120af199603f57d54b8c9a0bdde">LatitudeOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">LongitudeOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
@@ -63,8 +77,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aea917b790f577026184a0bb262102db4">Reverse</a>(real x, real y, real &lat, real &lon, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a27a675e995d2c1fdd0ab4c0ab397e065">Reverse</a>(real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1CassiniSoldner.html b/doc/html/classGeographicLib_1_1CassiniSoldner.html
index f910b37..4e80438 100644
--- a/doc/html/classGeographicLib_1_1CassiniSoldner.html
+++ b/doc/html/classGeographicLib_1_1CassiniSoldner.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::CassiniSoldner Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,13 +88,12 @@ Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">LongitudeOrigin</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">InverseFlattening</a> () const   throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Cassini-Soldner Projection. </p>
 <p>Cassini-Soldner projection centered at an arbitrary position, <em>lat0</em>, <em>lon0</em>, on the ellipsoid. This projection is a transverse cylindrical equidistant projection. The projection from (<em>lat</em>, <em>lon</em>) to easting and northing (<em>x</em>, <em>y</em>) is defined by geodesics as follows. Go north along a geodesic a distance <em>y</em> from the central point; then turn clockwise 90<sup>o</sup> and go a distance <em>x</em> along a geodesic. (Although the initial h [...]
 <p>Because of the properties of geodesics, the (<em>x</em>, <em>y</em>) grid is orthogonal. The scale in the easting direction is unity. The scale, <em>k</em>, in the northing direction is unity on the central meridian and increases away from the central meridian. The projection routines return <em>azi</em>, the true bearing of the easting direction, and <em>rk</em> = 1/<em>k</em>, the reciprocal of the scale in the northing direction.</p>
-<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. The determination of (<em>lat1</em>, <em>lon1</em>) in the forward projection is by solving the inverse geodesic  [...]
+<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. The determination of (<em>lat1</em>, <em>lon1</em>) in the forward projection is by solving the inverse geodesic  [...]
 <p>Example of use: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::CassiniSoldner class</span>
 <span class="comment">// $Id: f1d1d192c9449d198226a19cfbdc37d0b14ea52f $</span>
@@ -94,7 +108,7 @@ Public Member Functions</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
     <span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
     <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> proj(lat0, lon0, geod);
@@ -119,8 +133,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00066">66</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+</pre></div><p><a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a948f9d934615c4120eb23740635200bc"></a><!-- doxytag: member="GeographicLib::CassiniSoldner::CassiniSoldner" ref="a948f9d934615c4120eb23740635200bc" args="(const Geodesic &earth=Geodesic::WGS84)" -->
 <div class="memitem">
@@ -145,7 +158,7 @@ Public Member Functions</h2></td></tr>
 </dl>
 <p>This constructor makes an "uninitialized" object. Call Reset to set the central latitude and longitude, prior to calling Forward and Reverse. </p>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00109">109</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00113">113</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -190,7 +203,7 @@ Public Member Functions</h2></td></tr>
 </dl>
 <p><em>lat0</em> should be in the range [-90, 90] and <em>lon0</em> should be in the range [-180, 360]. </p>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00123">123</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00127">127</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -405,7 +418,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a37656c7551b10ad75a40758d0bba570d">CassiniSoldner::Forward</a> without returning the azimuth and scale. </p>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00179">179</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00183">183</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -447,7 +460,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aea917b790f577026184a0bb262102db4">CassiniSoldner::Reverse</a> without returning the azimuth and scale. </p>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00188">188</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00192">192</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -466,7 +479,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00200">200</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00204">204</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -485,7 +498,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>lat0</em> the latitude of origin (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00205">205</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00209">209</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -504,7 +517,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>lon0</em> the longitude of origin (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00211">211</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00215">215</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -523,7 +536,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00218">218</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00222">222</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -542,27 +555,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00224">224</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aae869d96e9267c13e675e3a3804eb0e2"></a><!-- doxytag: member="GeographicLib::CassiniSoldner::InverseFlattening" ref="aae869d96e9267c13e675e3a3804eb0e2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::CassiniSoldner::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00230">230</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00228">228</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
 
 </div>
 </div>
@@ -571,8 +564,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="CassiniSoldner_8cpp_source.html">CassiniSoldner.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1CircularEngine-members.html b/doc/html/classGeographicLib_1_1CircularEngine-members.html
index c041a05..055384e 100644
--- a/doc/html/classGeographicLib_1_1CircularEngine-members.html
+++ b/doc/html/classGeographicLib_1_1CircularEngine-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -58,8 +73,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">operator()</a>(real lon, real &gradx, real &grady, real &gradz) const </td><td><a class="el" href="classGeographicLib_1_1CircularEngine.html">GeographicLib::CircularEngine</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CircularEngine.html#ab89064f7f3c32a745c72d8c3188f7485">SphericalEngine</a> class</td><td><a class="el" href="classGeographicLib_1_1CircularEngine.html">GeographicLib::CircularEngine</a></td><td><code> [friend]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1CircularEngine.html b/doc/html/classGeographicLib_1_1CircularEngine.html
index b427771..a2767e4 100644
--- a/doc/html/classGeographicLib_1_1CircularEngine.html
+++ b/doc/html/classGeographicLib_1_1CircularEngine.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::CircularEngine Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -74,7 +89,7 @@ Friends</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Spherical Harmonic sums for a circle. </p>
-<p>The class is a companion to <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. If the results of a spherical harmonic sum are needed for several points on a circle of constant latitude <em>lat</em> and height <em>h</em>, then <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">SphericalEngine::Circle</a> can compute the inner sum, which is independent of [...]
+<p>The class is a companion to <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. If the results of a spherical harmonic sum are needed for several points on a circle of constant latitude <em>lat</em> and height <em>h</em>, then <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">SphericalEngine::Circle</a> can compute the inner sum, which is independent of [...]
 <p><a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> is tightly linked to the internals of <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. For that reason, the constructor for this class is private. Use <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2b2b2ad35bba090a4956693ba5ef0f32">SphericalHarmonic::Ci [...]
 <p><a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> stores the coefficients needed to allow the summation over order to be performed in 2 or 6 vectors of length <em>M</em> + 1 (depending on whether gradients are to be calculated). For this reason the constructor may throw a bad_alloc exception.</p>
 <p>Example of use: </p>
@@ -102,7 +117,7 @@ Friends</h2></td></tr>
     vector<double> S(sa, sa + N * (N + 1) / 2);
     <span class="keywordtype">double</span> a = 1;
     <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> h(C, S, N, a);
-    <span class="keywordtype">double</span> x = 2, y = 3, z = 1, p = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(x, y);
+    <span class="keywordtype">double</span> x = 2, y = 3, z = 1, p = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(x, y);
     <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> circ = h.Circle(p, z, <span class="keyword">true</span>);
     <span class="keywordtype">double</span> v, vx, vy, vz;
     v = circ(x/p, y/p, vx, vy, vz);
@@ -114,9 +129,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="CircularEngine_8hpp_source.html#l00053">53</a> of file <a class="el" href="CircularEngine_8hpp_source.html">CircularEngine.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a91dd2b9cc408e35f8cb6482cdf3aadbf"></a><!-- doxytag: member="GeographicLib::CircularEngine::CircularEngine" ref="a91dd2b9cc408e35f8cb6482cdf3aadbf" args="()" -->
 <div class="memitem">
 <div class="memproto">
@@ -367,8 +380,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="CircularEngine_8cpp_source.html">CircularEngine.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Constants-members.html b/doc/html/classGeographicLib_1_1Constants-members.html
index b855b0e..b44d03e 100644
--- a/doc/html/classGeographicLib_1_1Constants-members.html
+++ b/doc/html/classGeographicLib_1_1Constants-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,38 +72,42 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">fathom</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ac69f40e7e56c71bc72011c7591f7bef9">foot</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">furlong</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GRS80_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GRS80_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GRS80_J2</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GRS80_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GRS80_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GRS80_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GRS80_J2</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GRS80_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">hectare</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">kilometer</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">mile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">nauticalmile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">square_kilometer</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">square_meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">square_meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">square_meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">square_mile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a5acf6b2c23d1c9ddf140a6b4e588e88a">square_nauticalmile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a7faf6e7435791c0a8061296a79c0be08">surveyfoot</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">UPS_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">UPS_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">UTM_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">UTM_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">WGS84_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">WGS84_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">WGS84_f</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">WGS84_f</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">WGS84_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">WGS84_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">WGS84_r</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">WGS84_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">WGS84_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">yard</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Constants.html b/doc/html/classGeographicLib_1_1Constants.html
index fd0676a..9773fc4 100644
--- a/doc/html/classGeographicLib_1_1Constants.html
+++ b/doc/html/classGeographicLib_1_1Constants.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Constants Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,40 +80,38 @@ Static Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">arcsecond</a> ()  throw ()</td></tr>
 <tr><td colspan="2"><div class="groupHeader">Ellipsoid parameters</div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">WGS84_a</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">WGS84_a</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">WGS84_f</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">WGS84_f</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">WGS84_GM</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">WGS84_GM</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">WGS84_omega</a> ()  throw ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">WGS84_r</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">WGS84_omega</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GRS80_a</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GRS80_a</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GRS80_GM</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GRS80_GM</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GRS80_omega</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GRS80_omega</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GRS80_J2</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GRS80_J2</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">UTM_k0</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">UTM_k0</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">UPS_k0</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">UPS_k0</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a> ()  throw ()</td></tr>
 <tr><td colspan="2"><div class="groupHeader">SI units</div></td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">kilometer</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">nauticalmile</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">square_meter</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">square_meter</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">square_meter</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">hectare</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">square_kilometer</a> ()  throw ()</td></tr>
@@ -131,7 +144,7 @@ Static Public Member Functions</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    cout << <a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>() << <span class="stringliteral">" 1/"</span> << 1/<a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>() << <span class="stringliteral">"\n"</span>;
+    cout << <a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>() << <span class="stringliteral">" 1/"</span> << 1/<a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>() << <span class="stringliteral">"\n"</span>;
   }
   <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
     cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
@@ -139,9 +152,7 @@ Static Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00072">72</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
 <a class="anchor" id="a26ff02acd8141a815428cddf0ff3ff66"></a><!-- doxytag: member="GeographicLib::Constants::degree" ref="a26ff02acd8141a815428cddf0ff3ff66" args="()" -->
 <div class="memitem">
 <div class="memproto">
@@ -155,7 +166,7 @@ Static Public Member Functions</h2></td></tr>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">Math::degree<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">Math::degree<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00081">81</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
@@ -199,7 +210,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="af7abfdedede7d8180d0c2c4015b72194"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_a" ref="af7abfdedede7d8180d0c2c4015b72194" args="()" -->
+<a class="anchor" id="ae12127984ac6713823746d917b4abfa7"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_a" ref="ae12127984ac6713823746d917b4abfa7" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -239,13 +250,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">WGS84_a<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">WGS84_a<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00105">105</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a2e95ed8ac2738590348f9f3bbaa3fa41"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_f" ref="a2e95ed8ac2738590348f9f3bbaa3fa41" args="()" -->
+<a class="anchor" id="acc5244425bb484594be51b27d56cd335"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_f" ref="acc5244425bb484594be51b27d56cd335" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -285,13 +296,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">WGS84_f<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">WGS84_f<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00115">115</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="aa6cbaa16e143ebbe8b2c226492c09fbc"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_GM" ref="aa6cbaa16e143ebbe8b2c226492c09fbc" args="()" -->
+<a class="anchor" id="af7806106d7bd289bb63d5290e79c87a6"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_GM" ref="af7806106d7bd289bb63d5290e79c87a6" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -318,7 +329,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="a60299d9299292f18312eee2870bdf9ba"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_omega" ref="a60299d9299292f18312eee2870bdf9ba" args="()" -->
+<a class="anchor" id="a98c114d5a6ca42d3e4ece8595a0c2180"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_omega" ref="a98c114d5a6ca42d3e4ece8595a0c2180" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -345,28 +356,6 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="aa886c9955848d0fe9204b1a14f7ae43f"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_r" ref="aa886c9955848d0fe9204b1a14f7ae43f" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">static T GeographicLib::Constants::WGS84_r </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td>  throw ()<code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>the reciprocal flattening of WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00134">134</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-
-</div>
-</div>
 <a class="anchor" id="a199810de7ff3351be6473d20ef045789"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_r" ref="a199810de7ff3351be6473d20ef045789" args="()" -->
 <div class="memitem">
 <div class="memproto">
@@ -380,13 +369,12 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p><b>DEPRECATED</b> A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">WGS84_r<real>()</a>. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00140">140</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00142">142</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ac0ae4c03001a7fb4dea386d7539d38d3"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_a" ref="ac0ae4c03001a7fb4dea386d7539d38d3" args="()" -->
+<a class="anchor" id="a9b955c3556dcfcebce6a2926bfeaf464"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_a" ref="a9b955c3556dcfcebce6a2926bfeaf464" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -409,11 +397,11 @@ template<typename T > </div>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the equatorial radius of GRS80 ellipsoid, <em>a</em>, in m. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00145">145</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00147">147</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a436996122a60fde693eef527c74b3f05"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_GM" ref="a436996122a60fde693eef527c74b3f05" args="()" -->
+<a class="anchor" id="a7541474ca70cbec7fccb08d3e3fbfe31"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_GM" ref="a7541474ca70cbec7fccb08d3e3fbfe31" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -436,11 +424,11 @@ template<typename T > </div>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the gravitational constant of the GRS80 ellipsoid, <em>GM</em>, in m<sup>3</sup> s<sup>-2</sup>. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00152">152</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00154">154</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ae714c61fde82178814973c94038b9b41"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_omega" ref="ae714c61fde82178814973c94038b9b41" args="()" -->
+<a class="anchor" id="a9caea97ab2be0959c7972155141bfd1b"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_omega" ref="a9caea97ab2be0959c7972155141bfd1b" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -464,11 +452,11 @@ template<typename T > </div>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the angular velocity of the the GRS80 ellipsoid, <em>omega</em>, in rad s<sup>-1</sup>.</dd></dl>
 <p>This is about 2*pi*366.25 / (365.25*24*3600) rad s<sup>-1</sup>. 365.25 is the number of days in a Julian year and 365.35/366.25 converts from solar days to sidereal days. Using the number of days in a Gregorian year (365.2425) results in a worse approximation (because the Gregorian year includes the precession of the earth's axis). </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00165">165</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00167">167</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ae37450bc3e1137946cdf874affa2e44c"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_J2" ref="ae37450bc3e1137946cdf874affa2e44c" args="()" -->
+<a class="anchor" id="a59c7a1d298eb72256119894b67470974"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_J2" ref="a59c7a1d298eb72256119894b67470974" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -491,11 +479,11 @@ template<typename T > </div>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the dynamical form factor of the GRS80 ellipsoid, <em>J</em><sub>2</sub>. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00172">172</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00174">174</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a76c804fc143b26086a296d05ed09fe4f"></a><!-- doxytag: member="GeographicLib::Constants::UTM_k0" ref="a76c804fc143b26086a296d05ed09fe4f" args="()" -->
+<a class="anchor" id="ab5cc487ab160c0a213fdf8e12cde198a"></a><!-- doxytag: member="GeographicLib::Constants::UTM_k0" ref="ab5cc487ab160c0a213fdf8e12cde198a" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -518,7 +506,7 @@ template<typename T > </div>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the central scale factor for UTM (0.9996). </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00178">178</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00180">180</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -535,13 +523,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">UTM_k0<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">UTM_k0<real>()</a>. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00183">183</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00185">185</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ae48baa0a561e58acb2574f07e7acda1f"></a><!-- doxytag: member="GeographicLib::Constants::UPS_k0" ref="ae48baa0a561e58acb2574f07e7acda1f" args="()" -->
+<a class="anchor" id="a3fe287ab1a0847f5392c1aaf9c5e635a"></a><!-- doxytag: member="GeographicLib::Constants::UPS_k0" ref="a3fe287ab1a0847f5392c1aaf9c5e635a" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -564,7 +552,7 @@ template<typename T > </div>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the central scale factor for UPS (0.994). </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00188">188</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00190">190</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -581,13 +569,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">UPS_k0<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">UPS_k0<real>()</a>. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00193">193</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00195">195</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="aa1f90367063bc442ef165907650ef1f0"></a><!-- doxytag: member="GeographicLib::Constants::meter" ref="aa1f90367063bc442ef165907650ef1f0" args="()" -->
+<a class="anchor" id="ac1b17e7cf67ef42b9b91f3677c2eaa75"></a><!-- doxytag: member="GeographicLib::Constants::meter" ref="ac1b17e7cf67ef42b9b91f3677c2eaa75" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -611,7 +599,7 @@ template<typename T > </div>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a meter.</dd></dl>
 <p>This is unity, but this lets the internal system of units be changed if necessary. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00206">206</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00208">208</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -628,9 +616,9 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter<real>()</a>. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00210">210</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00212">212</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -649,7 +637,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a kilometer. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00214">214</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00216">216</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -668,11 +656,11 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a nautical mile (approximately 1 arc minute) </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00220">220</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00222">222</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a69b9a03f52615661b8e16f4aaa05425a"></a><!-- doxytag: member="GeographicLib::Constants::square_meter" ref="a69b9a03f52615661b8e16f4aaa05425a" args="()" -->
+<a class="anchor" id="ab92200b36f9d306a2710738c6d9bc705"></a><!-- doxytag: member="GeographicLib::Constants::square_meter" ref="ab92200b36f9d306a2710738c6d9bc705" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -696,7 +684,7 @@ template<typename T > </div>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square meter.</dd></dl>
 <p>This is unity, but this lets the internal system of units be changed if necessary. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00230">230</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00232">232</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -713,9 +701,9 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">square_meter<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">square_meter<real>()</a>. </p>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00235">235</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00237">237</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -734,7 +722,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a hectare. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00240">240</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00242">242</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -753,7 +741,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square kilometer. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00245">245</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00247">247</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -772,7 +760,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square nautical mile. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00250">250</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00252">252</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -791,7 +779,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in an international foot. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00260">260</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00262">262</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -810,7 +798,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a yard. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00265">265</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00267">267</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -829,7 +817,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a fathom. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00269">269</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00271">271</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -848,7 +836,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a chain. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00273">273</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00275">275</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -867,7 +855,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a furlong. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00277">277</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00279">279</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -886,7 +874,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a statute mile. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00281">281</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00283">283</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -905,7 +893,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in an acre. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00285">285</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00287">287</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -924,7 +912,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square statute mile. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00289">289</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00291">291</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -943,7 +931,7 @@ template<typename T > </div>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a US survey foot. </dd></dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00298">298</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00300">300</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -951,8 +939,13 @@ template<typename T > </div>
 <li><a class="el" href="Constants_8hpp_source.html">Constants.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1DMS-members.html b/doc/html/classGeographicLib_1_1DMS-members.html
index 2bc893f..f825568 100644
--- a/doc/html/classGeographicLib_1_1DMS-members.html
+++ b/doc/html/classGeographicLib_1_1DMS-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,14 +68,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> enum name</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">Decode</a>(const std::string &dms, flag &ind)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">Decode</a>(real d, real m=0, real s=0)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">Decode</a>(const std::string &str)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DecodeAngle</a>(const std::string &angstr)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DecodeAzimuth</a>(const std::string &azistr)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">DecodeFraction</a>(const std::string &str)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DecodeLatLon</a>(const std::string &dmsa, const std::string &dmsb, real &lat, real &lon, bool swaplatlong=false)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a8ee59944227e74901b71f27410d70781">DEGREE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">Encode</a>(real angle, component trailing, unsigned prec, flag ind, char dmssep)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">Encode</a>(real angle, component trailing, unsigned prec, flag ind=NONE)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">Encode</a>(real angle, unsigned prec, flag ind=NONE)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#aeb9d338b12e885092a611bda7e52f9f4">Encode</a>(real angle, unsigned prec, flag ind=NONE, char dmssep=char(0))</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a>(real ang, real &d, real &m)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a>(real ang, real &d, real &m, real &s)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> enum name</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
@@ -71,8 +85,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">NUMBER</a> enum value</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a10c28c85ddfa71db5f1d46d362333075">SECOND</a> enum value</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1DMS.html b/doc/html/classGeographicLib_1_1DMS.html
index 49b2ec7..c873efe 100644
--- a/doc/html/classGeographicLib_1_1DMS.html
+++ b/doc/html/classGeographicLib_1_1DMS.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::DMS Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -78,13 +93,12 @@ Public Types</h2></td></tr>
 Static Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">Decode</a> (const std::string &dms, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> &ind)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">Decode</a> (real d, real m=0, real s=0)  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">Decode</a> (const std::string &str)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">DecodeFraction</a> (const std::string &str)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DecodeLatLon</a> (const std::string &dmsa, const std::string &dmsb, real &lat, real &lon, bool swaplatlong=false)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DecodeAngle</a> (const std::string &angstr)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DecodeAzimuth</a> (const std::string &azistr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">Encode</a> (real angle, <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind, char dmssep)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">Encode</a> (real angle, <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind=NONE)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">Encode</a> (real angle, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind=NONE)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#aeb9d338b12e885092a611bda7e52f9f4">Encode</a> (real angle, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind=NONE, char dmssep=char(0))</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a> (real ang, real &d, real &m)  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a> (real ang, real &d, real &m, real &s)  throw ()</td></tr>
 </table>
@@ -106,13 +120,13 @@ Static Public Member Functions</h2></td></tr>
   <span class="keywordflow">try</span> {
     {
       <span class="keywordtype">string</span> dms = <span class="stringliteral">"30d14'45.6\"S"</span>;
-      <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> type;
+      <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a><a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">::flag</a> type;
       <span class="keywordtype">double</span> ang = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(dms, type);
       cout << type << <span class="stringliteral">" "</span> << ang << <span class="stringliteral">"\n"</span>;
     }
     {
       <span class="keywordtype">double</span> ang = -30.245715;
-      <span class="keywordtype">string</span> dms = <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(ang, 6, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>);
+      <span class="keywordtype">string</span> dms = <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(ang, 6, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>);
       cout << dms << <span class="stringliteral">"\n"</span>;
     }
   }
@@ -122,9 +136,7 @@ Static Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00036">36</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="a7a1101fd2577636863753baae3e54869"></a><!-- doxytag: member="GeographicLib::DMS::flag" ref="a7a1101fd2577636863753baae3e54869" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -312,60 +324,6 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="aab2493a4f9bcf1b8fa8b636361feca47"></a><!-- doxytag: member="GeographicLib::DMS::Decode" ref="aab2493a4f9bcf1b8fa8b636361feca47" args="(const std::string &str)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::DMS::Decode </td>
-          <td>(</td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>str</em></td><td>)</td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> (use <a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">Utility::num</a>, instead). Convert a string to a real number.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>string input. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>decoded number. </dd></dl>
-
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00201">201</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adb889bc03d4370fbc99c6f8fd34b12f9"></a><!-- doxytag: member="GeographicLib::DMS::DecodeFraction" ref="adb889bc03d4370fbc99c6f8fd34b12f9" args="(const std::string &str)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::DMS::DecodeFraction </td>
-          <td>(</td>
-          <td class="paramtype">const std::string & </td>
-          <td class="paramname"><em>str</em></td><td>)</td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> (use <a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">Utility::fract</a>, instead). Convert a string to a real number treating the case where the string is a simple fraction.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>string input. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>decoded number. </dd></dl>
-
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00213">213</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
-
-</div>
-</div>
 <a class="anchor" id="a2d38adcfecb7a41865092e870e19730f"></a><!-- doxytag: member="GeographicLib::DMS::DecodeLatLon" ref="a2d38adcfecb7a41865092e870e19730f" args="(const std::string &dmsa, const std::string &dmsb, real &lat, real &lon, bool swaplatlong=false)" -->
 <div class="memitem">
 <div class="memproto">
@@ -487,7 +445,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a3e36baa6114d46f82a8900d002784369"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a3e36baa6114d46f82a8900d002784369" args="(real angle, component trailing, unsigned prec, flag ind=NONE)" -->
+<a class="anchor" id="a0777e26ef4507f8123549723bf3cb56f"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a0777e26ef4507f8123549723bf3cb56f" args="(real angle, component trailing, unsigned prec, flag ind, char dmssep)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -513,7 +471,13 @@ Static Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> </td>
-          <td class="paramname"><em>ind</em> = <code>NONE</code> </td>
+          <td class="paramname"><em>ind</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char </td>
+          <td class="paramname"><em>dmssep</em> </td>
         </tr>
         <tr>
           <td></td>
@@ -530,6 +494,7 @@ Static Public Member Functions</h2></td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">trailing</td><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">DMS::component</a> value indicating the trailing units on the string and this is given as a decimal number if necessary. </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>the number of digits after the decimal point for the trailing component. </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">ind</td><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> value indicated additional formatting. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">dmssep</td><td>if non-null, use as the <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> separator character (instead of d, ', " delimiters). </td></tr>
   </table>
   </dd>
 </dl>
@@ -545,16 +510,16 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="DMS_8cpp_source.html#l00261">261</a> of file <a class="el" href="DMS_8cpp_source.html">DMS.cpp</a>.</p>
 
-<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00043">AzimuthString()</a>, <a class="el" href="Geod_8cpp_source.html#l00049">DistanceStrings()</a>, <a class="el" href="Geod_8cpp_source.html#l00034">LatLonString()</a>, and <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00034">LatLonString()</a>, <a class="el" href="Geod_8cpp_source.html#l00043">AzimuthString()</a>, <a class="el" href="Geod_8cpp_source.html#l00049">DistanceStrings()</a>, and <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a87dd4a3eea0be6d3a45c8390e725aeb9"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a87dd4a3eea0be6d3a45c8390e725aeb9" args="(real angle, unsigned prec, flag ind=NONE)" -->
+<a class="anchor" id="a3e36baa6114d46f82a8900d002784369"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a3e36baa6114d46f82a8900d002784369" args="(real angle, component trailing, unsigned prec, flag ind=NONE)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">static std::string GeographicLib::DMS::Encode </td>
+          <td class="memname">string GeographicLib::DMS::Encode </td>
           <td>(</td>
           <td class="paramtype">real </td>
           <td class="paramname"><em>angle</em>, </td>
@@ -562,6 +527,12 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
+          <td class="paramtype"><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> </td>
+          <td class="paramname"><em>trailing</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
           <td class="paramtype">unsigned </td>
           <td class="paramname"><em>prec</em>, </td>
         </tr>
@@ -574,6 +545,59 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td></td>
           <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Convert angle (in degrees) into a <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> string (using d, ', and ").</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">angle</td><td>input angle (degrees) </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">trailing</td><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">DMS::component</a> value indicating the trailing units on the string and this is given as a decimal number if necessary. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>the number of digits after the decimal point for the trailing component. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">ind</td><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> value indicated additional formatting. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>formatted string</dd></dl>
+<p><b>COMPATIBILITY NOTE:</b> This function calls <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">Encode(real, component, unsigned, flag, char)</a> with a 5th argument of char(0). At some point, <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">Encode(real, component, unsigned, flag)</a> and will be withdrawn and the interface to <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f"> [...]
+
+<p>Definition at line <a class="el" href="DMS_8cpp_source.html#l00338">338</a> of file <a class="el" href="DMS_8cpp_source.html">DMS.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb9d338b12e885092a611bda7e52f9f4"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="aeb9d338b12e885092a611bda7e52f9f4" args="(real angle, unsigned prec, flag ind=NONE, char dmssep=char(0))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static std::string GeographicLib::DMS::Encode </td>
+          <td>(</td>
+          <td class="paramtype">real </td>
+          <td class="paramname"><em>angle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned </td>
+          <td class="paramname"><em>prec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> </td>
+          <td class="paramname"><em>ind</em> = <code>NONE</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char </td>
+          <td class="paramname"><em>dmssep</em> = <code>char(0)</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
           <td></td><td><code> [inline, static]</code></td>
         </tr>
       </table>
@@ -585,13 +609,14 @@ Static Public Member Functions</h2></td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">angle</td><td>input angle (degrees) </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>the precision relative to 1 degree. </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">ind</td><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> value indicated additional formatting. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">dmssep</td><td>if non-null, use as the <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> separator character (instead of d, ', " delimiters). </td></tr>
   </table>
   </dd>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>formatted string</dd></dl>
-<p><em>prec</em> indicates the precision relative to 1 degree, e.g., <em>prec</em> = 3 gives a result accurate to 0.1' and <em>prec</em> = 4 gives a result accurate to 1". <em>ind</em> is interpreted as in <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a> with the additional facility that <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a> represents <em> [...]
+<p><em>prec</em> indicates the precision relative to 1 degree, e.g., <em>prec</em> = 3 gives a result accurate to 0.1' and <em>prec</em> = 4 gives a result accurate to 1". <em>ind</em> is interpreted as in <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a> with the additional facility that <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a> represents <em> [...]
 
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00305">305</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
+<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00332">332</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
 
 </div>
 </div>
@@ -635,7 +660,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00320">320</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
+<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00348">348</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
 
 </div>
 </div>
@@ -686,7 +711,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00332">332</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
+<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00360">360</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
 
 </div>
 </div>
@@ -695,8 +720,13 @@ Static Public Member Functions</h2></td></tr>
 <li><a class="el" href="DMS_8cpp_source.html">DMS.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1EllipticFunction-members.html b/doc/html/classGeographicLib_1_1EllipticFunction-members.html
index 65553f1..99e4449 100644
--- a/doc/html/classGeographicLib_1_1EllipticFunction-members.html
+++ b/doc/html/classGeographicLib_1_1EllipticFunction-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,8 +74,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() const </td><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html">GeographicLib::EllipticFunction</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html#a0b8d63970c4276503d03d4133ee6c321">sncndn</a>(real x, real &sn, real &cn, real &dn) const </td><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html">GeographicLib::EllipticFunction</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1EllipticFunction.html b/doc/html/classGeographicLib_1_1EllipticFunction.html
index 671421e..46a7808 100644
--- a/doc/html/classGeographicLib_1_1EllipticFunction.html
+++ b/doc/html/classGeographicLib_1_1EllipticFunction.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::EllipticFunction Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -99,11 +114,11 @@ Public Member Functions</h2></td></tr>
     <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> ell(0.1);  <span class="comment">// parameter m = 0.1</span>
     <span class="comment">// See Abramowitz and Stegun, table 17.1</span>
     cout << ell.K() << <span class="stringliteral">" "</span> << ell.E() << <span class="stringliteral">"\n"</span>;
-    <span class="keywordtype">double</span> phi = 20 * <a class="code" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">Math::degree</a>();
+    <span class="keywordtype">double</span> phi = 20 * <a class="code" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">Math::degree</a>();
     <span class="comment">// See Abramowitz and Stegun, table 17.6 with</span>
     <span class="comment">// alpha = asin(sqrt(m)) = 18.43 deg and phi = 20 deg</span>
     cout << ell.E(phi) << <span class="stringliteral">" "</span>
-         << ell.E(sin(phi), cos(phi), sqrt(1 - ell.m() * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sin(phi))))
+         << ell.E(sin(phi), cos(phi), sqrt(1 - ell.m() * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sin(phi))))
          << <span class="stringliteral">"\n"</span>;
   }
   <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>& e) {
@@ -111,9 +126,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="EllipticFunction_8hpp_source.html#l00046">46</a> of file <a class="el" href="EllipticFunction_8hpp_source.html">EllipticFunction.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="ada122111b55eb0ab9c7b9fafb0a4b1e6"></a><!-- doxytag: member="GeographicLib::EllipticFunction::EllipticFunction" ref="ada122111b55eb0ab9c7b9fafb0a4b1e6" args="(real m)" -->
 <div class="memitem">
 <div class="memproto">
@@ -365,8 +378,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="EllipticFunction_8cpp_source.html">EllipticFunction.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GeoCoords-members.html b/doc/html/classGeographicLib_1_1GeoCoords-members.html
index 68a9721..2821e11 100644
--- a/doc/html/classGeographicLib_1_1GeoCoords-members.html
+++ b/doc/html/classGeographicLib_1_1GeoCoords-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,6 +72,7 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a020732ccba257d7f5248692afd318b93">AltUTMUPSRepresentation</a>(int prec=0) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">AltZone</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">Convergence</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">DMSRepresentation</a>(int prec, bool swaplatlong, char dmssep) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">DMSRepresentation</a>(int prec=0, bool swaplatlong=false) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">Easting</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
@@ -66,7 +82,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords</a>(int zone, bool northp, real easting, real northing)</td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a79af2d72afdfeede78f2ba65b809d6b3">GeoRepresentation</a>(int prec=0, bool swaplatlong=false) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">Hemisphere</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
@@ -81,8 +96,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">UTMUPSRepresentation</a>(int prec=0) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">Zone</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GeoCoords.html b/doc/html/classGeographicLib_1_1GeoCoords.html
index fea548a..60b2d87 100644
--- a/doc/html/classGeographicLib_1_1GeoCoords.html
+++ b/doc/html/classGeographicLib_1_1GeoCoords.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::GeoCoords Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -85,6 +100,7 @@ Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">AltScale</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><div class="groupHeader">String representations of the GeoCoords object</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a79af2d72afdfeede78f2ba65b809d6b3">GeoRepresentation</a> (int prec=0, bool swaplatlong=false) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">DMSRepresentation</a> (int prec, bool swaplatlong, char dmssep) const </td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">DMSRepresentation</a> (int prec=0, bool swaplatlong=false) const </td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">MGRSRepresentation</a> (int prec=0) const </td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">UTMUPSRepresentation</a> (int prec=0) const </td></tr>
@@ -93,7 +109,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">InverseFlattening</a> () const   throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Conversion between geographic coordinates. </p>
@@ -137,8 +152,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00047">47</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+</pre></div><p><a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a8b3f4a919ba4478c4fec0e7b01e84c57"></a><!-- doxytag: member="GeographicLib::GeoCoords::GeoCoords" ref="a8b3f4a919ba4478c4fec0e7b01e84c57" args="()" -->
 <div class="memitem">
@@ -155,7 +169,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>The default constructor is equivalent to <em>latitude</em> = 90<sup>o</sup>, <em>longitude</em> = 0<sup>o</sup>. </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00075">75</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00078">78</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -210,6 +224,7 @@ Public Member Functions</h2></td></tr>
 <li>33.44 43.27</li>
 <li>N33d26.4' E43d16.2'</li>
 <li>43d16'12"E 33d26'24"N</li>
+<li>43:16:12E 33:26:24</li>
 </ul>
 </li>
 <li><a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a><ul>
@@ -233,12 +248,14 @@ Public Member Functions</h2></td></tr>
 <li>75W 40N</li>
 <li>E-75 -40S</li>
 </ul>
-<p>are all the same position. The coordinates may be given in decimal degrees, degrees and decimal minutes, degrees, minutes, seconds, etc. Use d, ', and " to make off the degrees, minutes and seconds.  Thus
- - 40d30'30"</p>
+<p>are all the same position. The coordinates may be given in decimal degrees, degrees and decimal minutes, degrees, minutes, seconds, etc. Use d, ', and " to mark off the degrees, minutes and seconds. Alternatively, use : to separate these components. Thus</p>
 <ul>
+<li>40d30'30"</li>
 <li>40d30'30</li>
 <li>40d30.5'</li>
 <li>40d30.5</li>
+<li>40:30:30</li>
+<li>40:30.5</li>
 <li>40.508333333</li>
 </ul>
 <p>all specify the same angle. The leading sign applies to all components so -1d30 is -(1+30/60) = -1.5. Latitudes must be in the range [-90, 90] and longitudes in the range [-180, 360]. Internally longitudes are reduced to the range [-180, 180).</p>
@@ -256,7 +273,7 @@ Public Member Functions</h2></td></tr>
 <li>38SMB44148470 = 38N 444140 3684700 </li>
 </ul>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00161">161</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00169">169</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -300,7 +317,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00173">173</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00181">181</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -351,7 +368,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00185">185</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00193">193</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -390,7 +407,7 @@ Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00027">27</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 
-<p>Referenced by <a class="el" href="GeoConvert_8cpp_source.html#l00034">main()</a>.</p>
+<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
 </div>
 </div>
@@ -426,7 +443,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>Reset the location in terms of geographic coordinates. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">GeoCoords(real latitude, real longitude, int zone)</a>. </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00200">200</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00208">208</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 <p>References <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
 
@@ -470,7 +487,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>Reset the location in terms of UPS/UPS coordinates. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords(int zone, bool northp, real easting, real northing)</a>. </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00215">215</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00223">223</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 <p>References <a class="el" href="UTMUPS_8cpp_source.html#l00124">GeographicLib::UTMUPS::Reverse()</a>.</p>
 
@@ -491,7 +508,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>latitude (degrees) </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00233">233</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00241">241</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -512,7 +529,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>longitude (degrees) </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00238">238</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00246">246</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -533,7 +550,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>easting (meters) </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00243">243</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00251">251</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -552,7 +569,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>northing (meters) </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00248">248</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00256">256</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -571,7 +588,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>meridian convergence (degrees) for the UTM/UPS projection. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00253">253</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00261">261</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -590,7 +607,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>scale for the UTM/UPS projection. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00258">258</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00266">266</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -609,7 +626,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>hemisphere (false means south, true means north). </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00263">263</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00271">271</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -628,7 +645,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>hemisphere letter N or S. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00268">268</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00276">276</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -647,7 +664,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the zone corresponding to the input (return 0 for UPS). </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00273">273</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00281">281</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -674,9 +691,9 @@ Public Member Functions</h2></td></tr>
 </dl>
 <p>See <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7">UTMUPS::zonespec</a> for more information on the interpretation of <em>zone</em>. Note that <em>zone</em> == <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a> (the default) use the standard UPS or UTM zone, <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3 [...]
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00291">291</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00299">299</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
-<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00104">GeographicLib::UTMUPS::MATCH</a>, and <a class="el" href="UTMUPS_8cpp_source.html#l00049">GeographicLib::UTMUPS::StandardZone()</a>.</p>
+<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00104">GeographicLib::UTMUPS::MATCH</a>, <a class="el" href="UTMUPS_8cpp_source.html#l00049">GeographicLib::UTMUPS::StandardZone()</a>, and <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
 
 </div>
 </div>
@@ -695,7 +712,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>current alternate zone (return 0 for UPS). </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00309">309</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00317">317</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -714,7 +731,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>easting (meters) for alternate zone. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00314">314</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00322">322</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -733,7 +750,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>northing (meters) for alternate zone. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00319">319</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00327">327</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -752,7 +769,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>meridian convergence (degrees) for alternate zone. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00324">324</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00332">332</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -771,7 +788,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>scale for alternate zone. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00329">329</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00337">337</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 </div>
 </div>
@@ -820,7 +837,7 @@ Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="ab37746606876eb77335268054589390a"></a><!-- doxytag: member="GeographicLib::GeoCoords::DMSRepresentation" ref="ab37746606876eb77335268054589390a" args="(int prec=0, bool swaplatlong=false) const " -->
+<a class="anchor" id="af6e9f9087a407b01dc24401df8610257"></a><!-- doxytag: member="GeographicLib::GeoCoords::DMSRepresentation" ref="af6e9f9087a407b01dc24401df8610257" args="(int prec, bool swaplatlong, char dmssep) const " -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -828,13 +845,19 @@ Public Member Functions</h2></td></tr>
           <td class="memname">string GeographicLib::GeoCoords::DMSRepresentation </td>
           <td>(</td>
           <td class="paramtype">int </td>
-          <td class="paramname"><em>prec</em> = <code>0</code>, </td>
+          <td class="paramname"><em>prec</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">bool </td>
-          <td class="paramname"><em>swaplatlong</em> = <code>false</code> </td>
+          <td class="paramname"><em>swaplatlong</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char </td>
+          <td class="paramname"><em>dmssep</em> </td>
         </tr>
         <tr>
           <td></td>
@@ -849,6 +872,7 @@ Public Member Functions</h2></td></tr>
   <table class="params">
     <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>precision (relative to about 1m) </td></tr>
     <tr><td class="paramdir">[in]</td><td class="paramname">swaplatlong</td><td>if true give longitude first (default = false) </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">dmssep</td><td>if non-null, use as the <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> separator character (instead of d, ', " delimiters). </td></tr>
   </table>
   </dd>
 </dl>
@@ -859,16 +883,55 @@ Public Member Functions</h2></td></tr>
 <li>prec = -4, 0.1d</li>
 <li>prec = -3, 1'</li>
 <li>prec = -2, 0.1'</li>
-<li>prec = -1, 1"
- - prec = 0, 0.1" (about 3m)</li>
-<li>prec = 1, 0.01"
- - prec = 10 (max), 10<sup>-11</sup>" </li>
+<li>prec = -1, 1"</li>
+<li>prec = 0, 0.1" (about 3m)</li>
+<li>prec = 1, 0.01"</li>
+<li>prec = 10 (max), 10<sup>-11</sup>" </li>
 </ul>
 
 <p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00088">88</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 
 </div>
 </div>
+<a class="anchor" id="ab37746606876eb77335268054589390a"></a><!-- doxytag: member="GeographicLib::GeoCoords::DMSRepresentation" ref="ab37746606876eb77335268054589390a" args="(int prec=0, bool swaplatlong=false) const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">string GeographicLib::GeoCoords::DMSRepresentation </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>prec</em> = <code>0</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool </td>
+          <td class="paramname"><em>swaplatlong</em> = <code>false</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>String representation with latitude and longitude as degrees, minutes, seconds, and hemisphere.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>precision (relative to about 1m) </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">swaplatlong</td><td>if true give longitude first (default = false) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> latitude/longitude string representation.</dd></dl>
+<p><b>COMPATIBILITY NOTE:</b> This function calls <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">DMSRepresentation(int, bool, char) const </a>with a 3rd argument of char(0). At some point, <a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">DMSRepresentation(int, bool) const </a>and will be withdrawn and the interface to <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8 [...]
+
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00097">97</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+
+</div>
+</div>
 <a class="anchor" id="a36594aaa4f293b0ddf00b1c78bb04595"></a><!-- doxytag: member="GeographicLib::GeoCoords::MGRSRepresentation" ref="a36594aaa4f293b0ddf00b1c78bb04595" args="(int prec=0) const " -->
 <div class="memitem">
 <div class="memproto">
@@ -903,7 +966,7 @@ Public Member Functions</h2></td></tr>
 <li>prec = 6 (max), 1um </li>
 </ul>
 
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00096">96</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00100">100</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 
 </div>
 </div>
@@ -939,7 +1002,7 @@ Public Member Functions</h2></td></tr>
 <li>prec = 9 (max), 1nm </li>
 </ul>
 
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00134">134</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00138">138</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 
 </div>
 </div>
@@ -959,7 +1022,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a> string for the alternate zone. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">GeoCoords::MGRSRepresentation</a>. </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00104">104</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00108">108</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 
 </div>
 </div>
@@ -979,7 +1042,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>UTM/UPS string for the alternate zone. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">GeoCoords::UTMUPSRepresentation</a>. </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00140">140</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00144">144</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
 
 </div>
 </div>
@@ -999,7 +1062,7 @@ Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the WGS84 ellipsoid (meters).</dd></dl>
 <p>(The WGS84 value is returned because the UTM and UPS projections are based on this ellipsoid.) </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00430">430</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00459">459</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 <p>References <a class="el" href="UTMUPS_8hpp_source.html#l00295">GeographicLib::UTMUPS::MajorRadius()</a>.</p>
 
@@ -1021,41 +1084,24 @@ Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the WGS84 ellipsoid.</dd></dl>
 <p>(The WGS84 value is returned because the UTM and UPS projections are based on this ellipsoid.) </p>
 
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00438">438</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00467">467</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
 
 <p>References <a class="el" href="UTMUPS_8hpp_source.html#l00304">GeographicLib::UTMUPS::Flattening()</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a8f653a04eb087280cd020466213c9cac"></a><!-- doxytag: member="GeographicLib::GeoCoords::InverseFlattening" ref="a8f653a04eb087280cd020466213c9cac" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::GeoCoords::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00444">444</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
-
-<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00311">GeographicLib::UTMUPS::InverseFlattening()</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following files:<ul>
 <li><a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a></li>
 <li><a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Geocentric-members.html b/doc/html/classGeographicLib_1_1Geocentric-members.html
index e50f28d..1193b09 100644
--- a/doc/html/classGeographicLib_1_1Geocentric-members.html
+++ b/doc/html/classGeographicLib_1_1Geocentric-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,7 +72,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a243c90a7f9bf3f7aa96877a4b0667a89">GravityCircle</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#ada1db1d9f480d8044753ed869c995519">GravityModel</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">LocalCartesian</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a7294f6a1cc932f8fd1562a15602e9e86">MagneticCircle</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#af6619ebe4c078705fc49a0d9f950b431">MagneticModel</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
@@ -70,8 +84,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a3eabc426b6edd718324c791ef3536360">SphericalHarmonic2</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a></td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Geocentric.html b/doc/html/classGeographicLib_1_1Geocentric.html
index eb196ec..c3492c2 100644
--- a/doc/html/classGeographicLib_1_1Geocentric.html
+++ b/doc/html/classGeographicLib_1_1Geocentric.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Geocentric Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,6 @@ Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#ae20c62c298f1724412fec581285cf269">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#a30ba434524b5836c9852d454e61d795f">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classGeographicLib_1_1Geocentric.html">Geocentric</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a></td></tr>
@@ -115,7 +129,7 @@ Friends</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geocentric& earth = Geocentric::WGS84;</span>
     {
       <span class="comment">// Sample forward calculation</span>
@@ -140,8 +154,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00060">60</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+</pre></div><p><a href="CartConvert.1.html">CartConvert</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a6527d3ab1df78de8277122581dbcdaff"></a><!-- doxytag: member="GeographicLib::Geocentric::Geocentric" ref="a6527d3ab1df78de8277122581dbcdaff" args="(real a, real f)" -->
 <div class="memitem">
@@ -198,7 +211,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>A default constructor (for use by <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>). </p>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00116">116</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00119">119</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -265,7 +278,7 @@ Friends</h2></td></tr>
 </dl>
 <p><em>lat</em> should be in the range [-90, 90]; <em>lon</em> and <em>lon0</em> should be in the range [-180, 360]. </p>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00131">131</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00134">134</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
 
@@ -345,7 +358,7 @@ Friends</h2></td></tr>
 </ul>
 <p>Then we have <em>v0</em> = <em>M</em> . <em>v1</em>. </p>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00160">160</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00163">163</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -411,7 +424,7 @@ Friends</h2></td></tr>
 </dl>
 <p>In general there are multiple solutions and the result which maximizes <em>h</em> is returned. If there are still multiple solutions with different latitudes (applies only if <em>Z</em> = 0), then the solution with <em>lat</em> > 0 is returned. If there are still multiple solutions with different longitudes (applies only if <em>X</em> = <em>Y</em> = 0) then <em>lon</em> = 0 is returned. The value of <em>h</em> returned satisfies <em>h</em> >= - <em>a</em> (1 - <em>e</em><sup>2</ [...]
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00192">192</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00195">195</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
 
@@ -491,7 +504,7 @@ Friends</h2></td></tr>
 </ul>
 <p>Then we have <em>v1</em> = <em>M^T</em> . <em>v0</em>, where <em>M^T</em> is the transpose of <em>M</em>. </p>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00221">221</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00224">224</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -510,7 +523,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00240">240</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00243">243</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -529,7 +542,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00245">245</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00248">248</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -548,27 +561,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00252">252</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa947dd7275c12692b03d6ff43d217d13"></a><!-- doxytag: member="GeographicLib::Geocentric::InverseFlattening" ref="aa947dd7275c12692b03d6ff43d217d13" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Geocentric::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00259">259</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00255">255</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -584,7 +577,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00063">63</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00066">66</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -599,7 +592,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00064">64</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00067">67</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -614,7 +607,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00065">65</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00068">68</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -629,7 +622,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00066">66</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00069">69</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -644,7 +637,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00067">67</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00070">70</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -659,7 +652,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00068">68</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00071">71</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -674,7 +667,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00069">69</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00072">72</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -689,7 +682,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00070">70</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00073">73</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -704,7 +697,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00071">71</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00074">74</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -721,7 +714,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> with the parameters for the WGS84 ellipsoid. </p>
 
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00267">267</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00272">272</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
 
 </div>
 </div>
@@ -730,8 +723,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="Geocentric_8cpp_source.html">Geocentric.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Geodesic-members.html b/doc/html/classGeographicLib_1_1Geodesic-members.html
index aeb2af1..ad83e1b 100644
--- a/doc/html/classGeographicLib_1_1Geodesic-members.html
+++ b/doc/html/classGeographicLib_1_1Geodesic-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -81,7 +96,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">Inverse</a>(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">Inverse</a>(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &M12, real &M21) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ad3f98a5f2adf39ff26cf3d6fe32258a8">Inverse</a>(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12, real &M12, real &M21) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">LATITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Line</a>(real lat1, real lon1, real azi1, unsigned caps=ALL) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">LONGITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
@@ -91,8 +105,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">REDUCEDLENGTH</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">WGS84</a></td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Geodesic.html b/doc/html/classGeographicLib_1_1Geodesic.html
index 165bb26..c8614f4 100644
--- a/doc/html/classGeographicLib_1_1Geodesic.html
+++ b/doc/html/classGeographicLib_1_1Geodesic.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Geodesic Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -113,7 +128,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions.</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#acd276bb113cfdf3fe59aa43fb3d7289b">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">EllipsoidArea</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -147,7 +161,7 @@ Friends</h2></td></tr>
 <li>C. F. F. Karney, <a href="http://arxiv.org/abs/1102.1215v1">Geodesics on an ellipsoid of revolution</a>, Feb. 2011; preprint <a href="http://arxiv.org/abs/1102.1215v1">arXiv:1102.1215v1</a>.</li>
 <li>C. F. F. Karney, <a href="http://arxiv.org/abs/1109.4448">Algorithms for geodesics</a>, Sept. 2011; preprint <a href="http://arxiv.org/abs/1109.4448">arxiv:1109.4448</a>.</li>
 </ul>
-<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
 <p>Example of use: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::Geodesic class</span>
 <span class="comment">// $Id: c825b2bc016f758b52995e446ac77aa42e0f3fda $</span>
@@ -162,7 +176,7 @@ Friends</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
     {
       <span class="comment">// Sample direct calculation, travelling about NE from JFK</span>
@@ -187,8 +201,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00126">126</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+</pre></div><p><a href="Geod.1.html">Geod</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>. </p>
 </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="aab966190e69651b86661fc2628d20828"></a><!-- doxytag: member="GeographicLib::Geodesic::mask" ref="aab966190e69651b86661fc2628d20828" args="" -->
 <div class="memitem">
@@ -236,7 +249,7 @@ Friends</h2></td></tr>
 </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00233">233</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00236">236</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -382,7 +395,7 @@ Friends</h2></td></tr>
 <p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. An arc length greater that 180 degrees signifies a geodesic which is not a shortest path. (For a prolate ellipsoid, an additional condition is necessary for a shortest path: the longitudinal extent must not exceed of 180 degrees.)</p>
 <p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a> which omit some of the output parameters. Note, however, that the arc length is always computed and returned as the function value. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00345">345</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00348">348</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
 
@@ -438,7 +451,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00359">359</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00362">362</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -498,7 +511,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00371">371</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00374">374</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -564,7 +577,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00383">383</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00386">386</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -636,7 +649,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00395">395</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00398">398</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -714,7 +727,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00408">408</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00411">411</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -824,7 +837,7 @@ Friends</h2></td></tr>
 <p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. An arc length greater that 180 degrees signifies a geodesic which is not a shortest path. (For a prolate ellipsoid, an additional condition is necessary for a shortest path: the longitudinal extent must not exceed of 180 degrees.)</p>
 <p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a> which omit some of the output parameters. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00457">457</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00460">460</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
 
@@ -880,7 +893,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00470">470</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00473">473</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -940,7 +953,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00481">481</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00484">484</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1006,7 +1019,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00492">492</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00495">495</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1078,7 +1091,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00504">504</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00507">507</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1156,7 +1169,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00517">517</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00520">520</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1240,7 +1253,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00530">530</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00533">533</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1373,7 +1386,7 @@ Friends</h2></td></tr>
 </ul>
 <p>The function value <em>a12</em> is always computed and returned and this equals <em>s12_a12</em> is <em>arcmode</em> is true. If <em>outmask</em> includes <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">Geodesic::DISTANCE</a> and <em>arcmode</em> is false, then <em>s12</em> = <em>s12_a12</em>. It is not necessary to include <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d208 [...]
 
-<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00109">109</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00110">110</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
 
 </div>
 </div>
@@ -1474,10 +1487,10 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a12</em> arc length of between point 1 and point 2 (degrees).</dd></dl>
 <p><em>lat1</em> and <em>lat2</em> should be in the range [-90, 90]; <em>lon1</em> and <em>lon2</em> should be in the range [-180, 360]. The values of <em>azi1</em> and <em>azi2</em> returned are in the range [-180, 180).</p>
-<p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. If the routine fails to converge, then all the requested outputs are set to <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">Math::NaN()</a>. (Test for such results with <a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f7 [...]
+<p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. If the routine fails to converge, then all the requested outputs are set to <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">Math::NaN()</a>. (Test for such results with <a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a [...]
 <p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a> which omit some of the output parameters. Note, however, that the arc length is always computed and returned as the function value. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00632">632</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00635">635</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
 
@@ -1527,7 +1540,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00644">644</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00647">647</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1581,7 +1594,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00655">655</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00658">658</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1641,7 +1654,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00666">666</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00669">669</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1707,7 +1720,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00678">678</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00681">681</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1779,7 +1792,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00690">690</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00693">693</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1857,7 +1870,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00702">702</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00705">705</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -1974,9 +1987,9 @@ Friends</h2></td></tr>
 </ul>
 <p>The arc length is always computed and returned as the function value. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00122">122</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00123">123</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
 
-<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>, and <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>.</p>
 
 </div>
 </div>
@@ -2041,7 +2054,7 @@ Friends</h2></td></tr>
 <p>The default value of <em>caps</em> is <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">Geodesic::ALL</a> which turns on all the capabilities.</p>
 <p>If the point is at a pole, the azimuth is defined by keeping the <em>lon1</em> fixed and writing <em>lat1</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00104">104</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00105">105</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
 
@@ -2062,7 +2075,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00808">808</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00811">811</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -2081,27 +2094,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00814">814</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab64c9662ce24d7a658924db0c85f8b2d"></a><!-- doxytag: member="GeographicLib::Geodesic::InverseFlattening" ref="ab64c9662ce24d7a658924db0c85f8b2d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Geodesic::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00820">820</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00817">817</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -2120,7 +2113,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>total area of ellipsoid in meters<sup>2</sup>. The area of a polygon encircling a pole can be found by adding <a class="el" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">Geodesic::EllipsoidArea()</a>/2 to the sum of <em>S12</em> for each side of the polygon. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00828">828</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00833">833</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -2136,7 +2129,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00129">129</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00132">132</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -2153,7 +2146,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> with the parameters for the WGS84 ellipsoid. </p>
 
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00836">836</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00841">841</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
 
 </div>
 </div>
@@ -2162,8 +2155,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GeodesicLine-members.html b/doc/html/classGeographicLib_1_1GeodesicLine-members.html
index 6cde87e..e004e6d 100644
--- a/doc/html/classGeographicLib_1_1GeodesicLine-members.html
+++ b/doc/html/classGeographicLib_1_1GeodesicLine-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,7 +88,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#ae5ad84103d70f252c66bf61afbda3fa0">GeodesicLine</a>()</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca74f896572150d24be4667cf66ed696a6">GEODESICSCALE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">Init</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a00a291e94d0c688a168a58623a360659">Latitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca34e259b158b7fa5441e91d32eae20c23">LATITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">LONGITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
@@ -89,8 +103,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#aa42e5028aa78ef3ce8fbcb01b25eb458">Position</a>(real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21) const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccab6649103de9393f5f18a5d2e44624411">REDUCEDLENGTH</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GeodesicLine.html b/doc/html/classGeographicLib_1_1GeodesicLine.html
index 833eb65..a3a242b 100644
--- a/doc/html/classGeographicLib_1_1GeodesicLine.html
+++ b/doc/html/classGeographicLib_1_1GeodesicLine.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::GeodesicLine Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -107,7 +122,6 @@ Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">EquatorialArc</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#af8953029b9985a3929fe406f7530143b">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a42e1f97e3ed564f98b305450b0d04590">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">Capabilities</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">Capabilities</a> (unsigned testcaps) const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="friends"></a>
@@ -124,10 +138,10 @@ Friends</h2></td></tr>
 <li>C. F. F. Karney, <a href="http://arxiv.org/abs/1102.1215v1">Geodesics on an ellipsoid of revolution</a>, Feb. 2011; preprint <a href="http://arxiv.org/abs/1102.1215v1">arXiv:1102.1215v1</a>.</li>
 <li>C. F. F. Karney, <a href="http://arxiv.org/abs/1109.4448">Algorithms for geodesics</a>, Sept. 2011; preprint <a href="http://arxiv.org/abs/1109.4448">arxiv:1109.4448</a>.</li>
 </ul>
-<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
 <p>Example of use: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::GeodesicLine class</span>
-<span class="comment">// $Id: 89118a11e5334de7be20d26aa9eaa7da48ae463c $</span>
+<span class="comment">// $Id: df5c5ffe6534d46e343544430de8c13fc8119bfb $</span>
 
 <span class="preprocessor">#include <iostream></span>
 <span class="preprocessor">#include <exception></span>
@@ -143,18 +157,18 @@ Friends</h2></td></tr>
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
     <span class="comment">// Print waypoints between JFK and SIN</span>
-    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
-    <span class="comment">// Alternatively: const Geodesic& geodesic = Geodesic::WGS84;</span>
+    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
+    <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
     <span class="keywordtype">double</span>
       lat1 = 40.640, lon1 = -73.779, <span class="comment">// JFK</span>
-      lat2 =  1.359, lon2 = 177.486; <span class="comment">// SIN</span>
+      lat2 =  1.359, lon2 = 103.989; <span class="comment">// SIN</span>
     <span class="keywordtype">double</span> s12, azi1, azi2,
       a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Inverse</a>(lat1, lon1, lat2, lon2, s12, azi1, azi2);
-    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> line(geod, lat1, lon1, azi1);
+    <span class="keyword">const</span> GeographicLib<a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">::GeodesicLine</a> line(geod, lat1, lon1, azi1);
     <span class="comment">// Alternatively</span>
     <span class="comment">// const GeographicLib::GeodesicLine line = geod.Line(lat1, lon1, azi1);</span>
     <span class="keywordtype">double</span> ds = 500e3;          <span class="comment">// Nominal distance between points = 500 km</span>
-    <span class="keywordtype">int</span> num = ceil(s12 / ds);   <span class="comment">// The number of intervals</span>
+    <span class="keywordtype">int</span> num = int(ceil(s12 / ds)); <span class="comment">// The number of intervals</span>
     cout << fixed << setprecision(3);
     {
       <span class="comment">// Use intervals of equal length</span>
@@ -181,8 +195,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00056">56</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+</pre></div><p><a href="Geod.1.html">Geod</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>. </p>
 </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="adeec76cf92a8c30770e1199bdadacbcc"></a><!-- doxytag: member="GeographicLib::GeodesicLine::mask" ref="adeec76cf92a8c30770e1199bdadacbcc" args="" -->
 <div class="memitem">
@@ -230,7 +243,7 @@ Friends</h2></td></tr>
 </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00093">93</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00096">96</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -322,7 +335,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>A default constructor. If <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a> is called on the resulting object, it returns immediately (without doing any calculations). The object can be set with a call to <a class="el" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Geodesic::Line</a>. Use <a class="el" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">In [...]
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00204">204</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00207">207</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -403,10 +416,10 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a12</em> arc length of between point 1 and point 2 (degrees).</dd></dl>
 <p>The values of <em>lon2</em> and <em>azi2</em> returned are in the range [-180, 180).</p>
-<p>The <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object <em>must</em> have been constructed with <em>caps</em> |= <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">GeodesicLine::DISTANCE_IN</a>; otherwise <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">Math::NaN()</a> is returned and no parameters are set. Reques [...]
+<p>The <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object <em>must</em> have been constructed with <em>caps</em> |= <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">GeodesicLine::DISTANCE_IN</a>; otherwise <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">Math::NaN()</a> is returned and no parameters are set. Reques [...]
 <p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a> which omit some of the output parameters. Note, however, that the arc length is always computed and returned as the function value. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00249">249</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00252">252</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Gnomonic_8cpp_source.html#l00044">GeographicLib::Gnomonic::Reverse()</a>.</p>
 
@@ -444,7 +457,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00263">263</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00266">266</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -486,7 +499,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00273">273</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00276">276</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -534,7 +547,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00284">284</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00287">287</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -588,7 +601,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00296">296</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00299">299</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -648,7 +661,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00309">309</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00312">312</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -737,7 +750,7 @@ Friends</h2></td></tr>
 <p>Requesting a value which the <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object is not capable of computing is not an error; the corresponding argument will not be altered.</p>
 <p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a> which omit some of the output parameters. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00362">362</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00365">365</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -773,7 +786,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00374">374</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00377">377</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -815,7 +828,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00385">385</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00388">388</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -863,7 +876,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00397">397</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00400">400</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -917,7 +930,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00408">408</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00411">411</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -977,7 +990,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00420">420</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00423">423</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1043,7 +1056,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00433">433</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00436">436</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1176,7 +1189,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00512">512</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00515">515</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1195,7 +1208,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>lat1</em> the latitude of point 1 (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00517">517</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00520">520</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1214,7 +1227,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>lon1</em> the longitude of point 1 (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00523">523</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00526">526</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1233,7 +1246,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>azi1</em> the azimuth (degrees) of the geodesic line at point 1. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00529">529</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00532">532</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1252,7 +1265,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>azi0</em> the azimuth (degrees) of the geodesic line as it crosses the equator in a northward direction. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00536">536</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00539">539</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1271,7 +1284,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a1</em> the arc length (degrees) between the northward equatorial crossing and point 1. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00545">545</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00548">548</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1290,7 +1303,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00554">554</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00557">557</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1309,27 +1322,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00561">561</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad0d59a47c24d11229ab7ce4363d525ea"></a><!-- doxytag: member="GeographicLib::GeodesicLine::InverseFlattening" ref="ad0d59a47c24d11229ab7ce4363d525ea" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::GeodesicLine::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00568">568</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00564">564</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1348,7 +1341,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>caps</em> the computational capabilities that this object was constructed with. LATITUDE and AZIMUTH are always included. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00575">575</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00580">580</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1374,7 +1367,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object has all these capabilities. </dd></dl>
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00581">581</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00586">586</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1390,7 +1383,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00059">59</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00062">62</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
 
 </div>
 </div>
@@ -1399,8 +1392,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="GeodesicLine_8cpp_source.html">GeodesicLine.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GeographicErr-members.html b/doc/html/classGeographicLib_1_1GeographicErr-members.html
index 7001033..1a93f94 100644
--- a/doc/html/classGeographicLib_1_1GeographicErr-members.html
+++ b/doc/html/classGeographicLib_1_1GeographicErr-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,13 @@
 This is the complete list of members for <a class="el" href="classGeographicLib_1_1GeographicErr.html">GeographicLib::GeographicErr</a>, including all inherited members.<table>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">GeographicErr</a>(const std::string &msg)</td><td><a class="el" href="classGeographicLib_1_1GeographicErr.html">GeographicLib::GeographicErr</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GeographicErr.html b/doc/html/classGeographicLib_1_1GeographicErr.html
index 9b34878..cf7b6b7 100644
--- a/doc/html/classGeographicLib_1_1GeographicErr.html
+++ b/doc/html/classGeographicLib_1_1GeographicErr.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::GeographicErr Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,9 +99,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00312">312</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="ae0f338af58f073657b012c8a9a64b006"></a><!-- doxytag: member="GeographicLib::GeographicErr::GeographicErr" ref="ae0f338af58f073657b012c8a9a64b006" args="(const std::string &msg)" -->
 <div class="memitem">
 <div class="memproto">
@@ -109,7 +122,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00321">321</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00323">323</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
 
 </div>
 </div>
@@ -117,8 +130,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="Constants_8hpp_source.html">Constants.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Geoid-members.html b/doc/html/classGeographicLib_1_1Geoid-members.html
index cb1f67b..7282d20 100644
--- a/doc/html/classGeographicLib_1_1Geoid-members.html
+++ b/doc/html/classGeographicLib_1_1Geoid-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,7 +86,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">GeoidName</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">GEOIDTOELLIPSOID</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">Interpolation</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">NONE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td></td></tr>
@@ -82,8 +96,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">ThreadSafe</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Geoid.html b/doc/html/classGeographicLib_1_1Geoid.html
index f89d2f8..c47c5b0 100644
--- a/doc/html/classGeographicLib_1_1Geoid.html
+++ b/doc/html/classGeographicLib_1_1Geoid.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Geoid Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -95,7 +110,6 @@ Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath</a> ()</td></tr>
@@ -132,7 +146,7 @@ Static Public Member Functions</h2></td></tr>
     <span class="keywordtype">double</span>
       geoid_height = egm96(lat, lon),
       height_above_ellipsoid = (height_above_geoid +
-                                <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">Geoid::GEOIDTOELLIPSOID</a> * geoid_height);
+                                <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">::GEOIDTOELLIPSOID</a> * geoid_height);
     cout << height_above_ellipsoid << <span class="stringliteral">"\n"</span>;
   }
   <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
@@ -141,8 +155,7 @@ Static Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00071">71</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+</pre></div><p><a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>. </p>
 </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="a58ddbd0fd48c25b361f45bdb70dadb96"></a><!-- doxytag: member="GeographicLib::Geoid::convertflag" ref="a58ddbd0fd48c25b361f45bdb70dadb96" args="" -->
 <div class="memitem">
@@ -169,7 +182,7 @@ Static Public Member Functions</h2></td></tr>
 </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00155">155</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00185">185</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -222,9 +235,9 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <p>The data file is formed by appending ".pgm" to the name. If <em>path</em> is specified (and is non-empty), then the file is loaded from directory, <em>path</em>. Otherwise the path is given by <a class="el" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath()</a>. This may throw an exception because the file does not exist, is unreadable, or is corrupt. If the <em>threadsafe</em> parameter is true, the data set is read into memory (which this ma [...]
 
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00207">207</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00208">208</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
-<p>References <a class="el" href="Geoid_8hpp_source.html#l00228">CacheAll()</a>, and <a class="el" href="Geoid_8cpp_source.html#l00529">DefaultGeoidPath()</a>.</p>
+<p>References <a class="el" href="Constants_8hpp_source.html#l00025">STATIC_ASSERT</a>, <a class="el" href="Geoid_8cpp_source.html#l00529">DefaultGeoidPath()</a>, and <a class="el" href="Geoid_8hpp_source.html#l00258">CacheAll()</a>.</p>
 
 </div>
 </div>
@@ -277,9 +290,9 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <p>Cache the data for the specified "rectangular" area bounded by the parallels <em>south</em> and <em>north</em> and the meridians <em>west</em> and <em>east</em>. <em>east</em> is always interpreted as being east of <em>west</em>, if necessary by adding 360<sup>o</sup> to its value. This may throw an error because of insufficient memory or because of an error reading the data from the file. In this case, you can catch the error and either do nothing (you will have no cache in this case [...]
 
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00446">446</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00448">448</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
-<p>References <a class="el" href="Geoid_8cpp_source.html#l00433">CacheClear()</a>.</p>
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00435">CacheClear()</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -300,9 +313,9 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>Cache all the data. On most computers, this is fast for data sets with grid resolution of 5' or coarser. For a 1' grid, the required RAM is 450MB; a 2.5' grid needs 72MB; and a 5' grid needs 18MB. This may throw an error because of insufficient memory or because of an error reading the data from the file. In this case, you can catch the error and either do nothing (you will have no cache in this case) or try using <a class="el" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046 [...]
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00228">228</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00258">258</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00207">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00208">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
 </div>
 </div>
@@ -321,9 +334,9 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>Clear the cache. This never throws an error. (This does nothing with a thread safe <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>.) </p>
 
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00433">433</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00435">435</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
-<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00446">CacheArea()</a>.</p>
+<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00448">CacheArea()</a>.</p>
 
 </div>
 </div>
@@ -362,7 +375,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>geoid height (meters).</dd></dl>
 <p>The latitude should be in [-90, 90] and longitude should be in [-180,360]. This may throw an error because of an error reading data from disk. However, it will not throw if (<em>lat</em>, <em>lon</em>) is within a successfully cached area. </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00254">254</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00284">284</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -413,9 +426,9 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>geoid height (meters).</dd></dl>
-<p>The latitude should be in [-90, 90] and longitude should be in [-180, 360]. This may throw an error because of an error reading data from disk. However, it will not throw if (<em>lat</em>, <em>lon</em>) is within a successfully cached area. </p>
+<p>The latitude should be in [-90, 90] and longitude should be in [-180, 360]. This may throw an error because of an error reading data from disk. However, it will not throw if (<em>lat</em>, <em>lon</em>) is within a successfully cached area. As a result of the way that the geoid data is stored, the calculation of gradients can result in large quantization errors. This is particularly acute for fine grids, at high latitudes, and for the easterly gradient. If you need to compute the dire [...]
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00273">273</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00308">308</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -467,7 +480,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>converted height (meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00290">290</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00325">325</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -486,7 +499,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>geoid description, if available, in the data file; if absent, return "NONE". </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00305">305</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00340">340</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -507,7 +520,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>date of the data file; if absent, return "UNKNOWN". </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00310">310</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00345">345</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -528,7 +541,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>full file name used to load the geoid data. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00315">315</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00350">350</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -549,7 +562,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>"name" used to load the geoid data (from the first argument of the constructor). </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00321">321</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00356">356</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -568,7 +581,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>directory used to load the geoid data. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00326">326</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00361">361</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -587,7 +600,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>interpolation method ("cubic" or "bilinear"). </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00331">331</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00366">366</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -609,7 +622,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>estimate of the maximum interpolation and quantization error (meters).</dd></dl>
 <p>This relies on the value being stored in the data file. If the value is absent, return -1. </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00341">341</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00376">376</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -631,7 +644,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>estimate of the RMS interpolation and quantization error (meters).</dd></dl>
 <p>This relies on the value being stored in the data file. If the value is absent, return -1. </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00350">350</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00385">385</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -653,7 +666,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>offset (meters).</dd></dl>
 <p>This in used in converting from the pixel values in the data file to geoid heights. </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00358">358</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00393">393</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -675,7 +688,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>scale (meters).</dd></dl>
 <p>This in used in converting from the pixel values in the data file to geoid heights. </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00366">366</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00401">401</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -696,7 +709,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the object is constructed to be thread safe. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00371">371</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00406">406</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -715,7 +728,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if a data cache is active. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00376">376</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00411">411</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -736,7 +749,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>west edge of the cached area; the cache includes this edge. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00381">381</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00416">416</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -757,7 +770,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>east edge of the cached area; the cache excludes this edge. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00390">390</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00425">425</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -778,7 +791,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>north edge of the cached area; the cache includes this edge. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00400">400</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00435">435</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -799,7 +812,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>south edge of the cached area; the cache excludes this edge unless it's the south pole. </dd></dl>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00408">408</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00443">443</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -821,7 +834,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the WGS84 ellipsoid (meters).</dd></dl>
 <p>(The WGS84 value is returned because the supported geoid models are all based on this ellipsoid.) </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00418">418</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00453">453</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -841,27 +854,7 @@ Static Public Member Functions</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the WGS84 ellipsoid.</dd></dl>
 <p>(The WGS84 value is returned because the supported geoid models are all based on this ellipsoid.) </p>
 
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00427">427</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a19fd88ada94ee9b3b063e9ff097fd2e5"></a><!-- doxytag: member="GeographicLib::Geoid::InverseFlattening" ref="a19fd88ada94ee9b3b063e9ff097fd2e5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Geoid::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00433">433</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00462">462</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
 
 </div>
 </div>
@@ -883,9 +876,9 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00529">529</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
-<p>References <a class="el" href="Geoid_8cpp_source.html#l00026">GEOGRAPHICLIB_DATA</a>.</p>
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00027">GEOGRAPHICLIB_DATA</a>.</p>
 
-<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00207">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00208">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
 </div>
 </div>
@@ -907,7 +900,7 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00542">542</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
 
-<p>References <a class="el" href="Geoid_8cpp_source.html#l00031">GEOID_DEFAULT_NAME</a>.</p>
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00032">GEOID_DEFAULT_NAME</a>.</p>
 
 <p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -918,8 +911,13 @@ Static Public Member Functions</h2></td></tr>
 <li><a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Gnomonic-members.html b/doc/html/classGeographicLib_1_1Gnomonic-members.html
index 015e379..280fc44 100644
--- a/doc/html/classGeographicLib_1_1Gnomonic-members.html
+++ b/doc/html/classGeographicLib_1_1Gnomonic-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,13 +68,17 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a2c08cf2bad190ee9ab88f7d877223208">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">Gnomonic</a>(const Geodesic &earth=Geodesic::WGS84)</td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline, explicit]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a8700d59a1e244f8dd211e344587dfed3">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Gnomonic.html b/doc/html/classGeographicLib_1_1Gnomonic.html
index 36150fb..203df62 100644
--- a/doc/html/classGeographicLib_1_1Gnomonic.html
+++ b/doc/html/classGeographicLib_1_1Gnomonic.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Gnomonic Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,7 +83,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">InverseFlattening</a> () const   throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Gnomonic Projection. </p>
@@ -88,7 +102,7 @@ Public Member Functions</h2></td></tr>
  <br/>
  where <em>K</em> is the Gaussian curvature.</p>
 <p>This result applies for any surface. For an ellipsoid of revolution, consider all geodesics whose end points are within a distance <em>r</em> of <em>C</em>. For a given <em>r</em>, the deviation is maximum when the latitude of <em>C</em> is 45<sup>o</sup>, when endpoints are a distance <em>r</em> away, and when their azimuths from the center are +/- 45<sup>o</sup> or +/- 135<sup>o</sup>. To lowest order in <em>r</em> and the flattening <em>f</em>, the deviation is <em>f</em> (<em>r</e [...]
-<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
 <p><b>CAUTION:</b> The definition of this projection for a sphere is standard. However, there is no standard for how it should be extended to an ellipsoid. The choices are:</p>
 <ul>
 <li>Declare that the projection is undefined for an ellipsoid.</li>
@@ -110,7 +124,7 @@ Public Member Functions</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
     <span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
     <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> proj(geod);
@@ -135,8 +149,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00103">103</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+</pre></div><p><a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a2ac973ebbd7aaf18c451b152cd92db99"></a><!-- doxytag: member="GeographicLib::Gnomonic::Gnomonic" ref="a2ac973ebbd7aaf18c451b152cd92db99" args="(const Geodesic &earth=Geodesic::WGS84)" -->
 <div class="memitem">
@@ -160,7 +173,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00119">119</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00123">123</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
 
 </div>
 </div>
@@ -325,7 +338,7 @@ Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="Gnomonic_8cpp_source.html#l00044">44</a> of file <a class="el" href="Gnomonic_8cpp_source.html">Gnomonic.cpp</a>.</p>
 
-<p>References <a class="el" href="GeodesicLine_8hpp_source.html#l00249">GeographicLib::GeodesicLine::Position()</a>.</p>
+<p>References <a class="el" href="GeodesicLine_8hpp_source.html#l00252">GeographicLib::GeodesicLine::Position()</a>.</p>
 
 <p>Referenced by <a class="el" href="GeodesicProj_8cpp_source.html#l00037">main()</a>.</p>
 
@@ -381,7 +394,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Gnomonic::Forward</a> without returning the azimuth and scale. </p>
 
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00180">180</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00184">184</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
 
 </div>
 </div>
@@ -435,7 +448,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Gnomonic::Reverse</a> without returning the azimuth and scale. </p>
 
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00189">189</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00193">193</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
 
 </div>
 </div>
@@ -454,7 +467,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00202">202</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00206">206</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
 
 </div>
 </div>
@@ -473,27 +486,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00208">208</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a655eff8ef95f92902899459e8a5efe63"></a><!-- doxytag: member="GeographicLib::Gnomonic::InverseFlattening" ref="a655eff8ef95f92902899459e8a5efe63" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Gnomonic::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00214">214</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00212">212</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
 
 </div>
 </div>
@@ -502,8 +495,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="Gnomonic_8cpp_source.html">Gnomonic.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GravityCircle-members.html b/doc/html/classGeographicLib_1_1GravityCircle-members.html
index 38f06bd..755f589 100644
--- a/doc/html/classGeographicLib_1_1GravityCircle-members.html
+++ b/doc/html/classGeographicLib_1_1GravityCircle-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,8 +82,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">V</a>(real lon, real &GX, real &GY, real &GZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityCircle.html">GeographicLib::GravityCircle</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">W</a>(real lon, real &gX, real &gY, real &gZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityCircle.html">GeographicLib::GravityCircle</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GravityCircle.html b/doc/html/classGeographicLib_1_1GravityCircle.html
index b86325b..32ba8a9 100644
--- a/doc/html/classGeographicLib_1_1GravityCircle.html
+++ b/doc/html/classGeographicLib_1_1GravityCircle.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::GravityCircle Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -132,8 +147,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00040">40</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+</pre></div><p><a href="Gravity.1.html">Gravity</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a4a000e07f0856a130ab11f1b26c933ed"></a><!-- doxytag: member="GeographicLib::GravityCircle::GravityCircle" ref="a4a000e07f0856a130ab11f1b26c933ed" args="()" -->
 <div class="memitem">
@@ -150,7 +164,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>A default constructor for the normal gravity. This sets up an uninitialized object which can be later replaced by the <a class="el" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">GravityModel::Circle</a>. </p>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00104">104</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00107">107</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -388,7 +402,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>W</em> = <em>V</em> + <em>Phi</em> the sum of the gravitational and centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00185">185</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00188">188</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -440,7 +454,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>V</em> = <em>W</em> - <em>Phi</em> the gravitational potential (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00205">205</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00208">208</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -492,7 +506,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00226">226</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00229">229</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -519,7 +533,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00240">240</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00243">243</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -538,7 +552,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00254">254</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00257">257</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -557,7 +571,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00261">261</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00264">264</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -576,7 +590,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00268">268</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00271">271</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -595,7 +609,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the latitude of the circle (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00274">274</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00277">277</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -614,7 +628,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the height of the circle (meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00280">280</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00283">283</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -633,7 +647,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>caps</em> the computational capabilities that this object was constructed with. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00287">287</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00290">290</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -659,7 +673,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object has all these capabilities. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00293">293</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00296">296</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -675,7 +689,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00090">90</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00093">93</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -684,8 +698,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="GravityCircle_8cpp_source.html">GravityCircle.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GravityModel-members.html b/doc/html/classGeographicLib_1_1GravityModel-members.html
index 97c1995..fdf8ccd 100644
--- a/doc/html/classGeographicLib_1_1GravityModel-members.html
+++ b/doc/html/classGeographicLib_1_1GravityModel-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,8 +99,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">V</a>(real X, real Y, real Z, real &GX, real &GY, real &GZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityModel.html">GeographicLib::GravityModel</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">W</a>(real X, real Y, real Z, real &gX, real &gY, real &gZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityModel.html">GeographicLib::GravityModel</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1GravityModel.html b/doc/html/classGeographicLib_1_1GravityModel.html
index 7f4cefa..825bc26 100644
--- a/doc/html/classGeographicLib_1_1GravityModel.html
+++ b/doc/html/classGeographicLib_1_1GravityModel.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::GravityModel Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -164,8 +179,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00084">84</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+</pre></div><p><a href="Gravity.1.html">Gravity</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>. </p>
 </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="af8691d0f13d6d42278cd1e615903d365"></a><!-- doxytag: member="GeographicLib::GravityModel::mask" ref="af8691d0f13d6d42278cd1e615903d365" args="" -->
 <div class="memitem">
@@ -204,7 +218,7 @@ Friends</h2></td></tr>
 </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00119">119</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00122">122</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -246,7 +260,7 @@ Friends</h2></td></tr>
 
 <p>Definition at line <a class="el" href="GravityModel_8cpp_source.html#l00043">43</a> of file <a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a>.</p>
 
-<p>References <a class="el" href="SphericalHarmonic_8hpp_source.html#l00336">GeographicLib::SphericalHarmonic::Coefficients()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00343">DefaultGravityPath()</a>, <a class="el" href="NormalGravity_8hpp_source.html#l00233">GeographicLib::NormalGravity::MassConstant()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00173">GeographicLib::SphericalEngine::coeff::mmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l001 [...]
+<p>References <a class="el" href="GravityModel_8cpp_source.html#l00343">DefaultGravityPath()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00382">GeographicLib::SphericalEngine::coeff::readcoeffs()</a>, <a class="el" href="SphericalHarmonic_8hpp_source.html#l00336">GeographicLib::SphericalHarmonic::Coefficients()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00169">GeographicLib::SphericalEngine::coeff::nmx()</a>, <a class="el" href="Math_8hpp_source.html#l00130 [...]
 
 </div>
 </div>
@@ -696,7 +710,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00319">319</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00322">322</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -741,7 +755,7 @@ Friends</h2></td></tr>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00332">332</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00335">335</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -808,7 +822,7 @@ Friends</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>U</em> = <em>V</em><sub>0</sub> + <em>Phi</em> the sum of the normal gravitational and centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</dd></dl>
 <p>This calls <a class="el" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">NormalGravity::U</a> for <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a>. </p>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00356">356</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00359">359</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -861,7 +875,7 @@ Friends</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>Phi</em> the centrifugal potential (m<sup>2</sup> s<sup>-2</sup>).</dd></dl>
 <p>This calls <a class="el" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">NormalGravity::Phi</a> for <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a>. </p>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00373">373</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00376">376</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -918,7 +932,7 @@ Friends</h2></td></tr>
 
 <p>Definition at line <a class="el" href="GravityModel_8cpp_source.html#l00309">309</a> of file <a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a>.</p>
 
-<p>References <a class="el" href="SphericalHarmonic1_8hpp_source.html#l00240">GeographicLib::SphericalHarmonic1::Circle()</a>, <a class="el" href="SphericalHarmonic_8hpp_source.html#l00312">GeographicLib::SphericalHarmonic::Circle()</a>, <a class="el" href="NormalGravity_8hpp_source.html#l00294">GeographicLib::NormalGravity::Earth()</a>, <a class="el" href="GravityModel_8hpp_source.html#l00087">GravityCircle</a>, <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypo [...]
+<p>References <a class="el" href="NormalGravity_8hpp_source.html#l00294">GeographicLib::NormalGravity::Earth()</a>, <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="NormalGravity_8cpp_source.html#l00155">GeographicLib::NormalGravity::SurfaceGravity()</a>, <a class="el" href="NormalGravity_8cpp_source.html#l00216">GeographicLib::NormalGravity::U()</a>, <a class="el" href="NormalGravity_8cpp_source.html#l00208">GeographicLib::NormalGra [...]
 
 <p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
 
@@ -939,7 +953,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> object for the reference ellipsoid. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00420">420</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00423">423</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -958,7 +972,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the description of the gravity model, if available, in the data file; if absent, return "NONE". </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00426">426</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00429">429</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
 
@@ -979,7 +993,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>date of the model; if absent, return "UNKNOWN". </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00431">431</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00434">434</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
 
@@ -1000,7 +1014,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>full file name used to load the gravity model. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00436">436</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00439">439</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
 
@@ -1021,7 +1035,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>"name" used to load the gravity model (from the first argument of the constructor, but this may be overridden by the model file). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00442">442</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00445">445</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
 
@@ -1042,7 +1056,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>directory used to load the gravity model. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00447">447</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00450">450</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -1061,7 +1075,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00452">452</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00455">455</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -1080,7 +1094,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>GM</em> the mass constant of the model (m<sup>3</sup> s<sup>-2</sup>); this is the product of <em>G</em> the gravitational constant and <em>M</em> the mass of the earth (usually including the mass of the earth's atmosphere). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00460">460</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00463">463</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -1099,7 +1113,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>GM</em> the mass constant of the <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a> (m<sup>3</sup> s<sup>-2</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00466">466</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00469">469</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -1118,7 +1132,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>omega</em> the angular velocity of the model and the <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a> (rad s<sup>-1</sup>). </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00473">473</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00476">476</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -1137,7 +1151,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. </dd></dl>
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00479">479</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00482">482</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -1161,7 +1175,7 @@ Friends</h2></td></tr>
 
 <p>References <a class="el" href="GravityModel_8cpp_source.html#l00026">GEOGRAPHICLIB_DATA</a>.</p>
 
-<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00043">GravityModel()</a>, and <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
+<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>, and <a class="el" href="GravityModel_8cpp_source.html#l00043">GravityModel()</a>.</p>
 
 </div>
 </div>
@@ -1201,7 +1215,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00087">87</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00090">90</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00309">Circle()</a>.</p>
 
@@ -1212,8 +1226,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1LambertConformalConic-members.html b/doc/html/classGeographicLib_1_1LambertConformalConic-members.html
index 85374ec..e28a1d4 100644
--- a/doc/html/classGeographicLib_1_1LambertConformalConic-members.html
+++ b/doc/html/classGeographicLib_1_1LambertConformalConic-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +68,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2bafb6c1a81d4b6cf04f172b9e96278c">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a14a3757d85e81488afe476f7ceb8a720">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a21dc9fa160a5b96a1c11ab30af0eb129">LambertConformalConic</a>(real a, real f, real stdlat, real k0)</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a6273d61ce32ad6016471a7bd0e155ca4">LambertConformalConic</a>(real a, real f, real stdlat1, real stdlat2, real k1)</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a4d772372388f32029359b156dc43e4cd">LambertConformalConic</a>(real a, real f, real sinlat1, real coslat1, real sinlat2, real coslat2, real k1)</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
@@ -64,8 +78,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a1bffe1259895569e6834a4b1df9b22ab">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#aac6267f7f970b35043b17e12e4163ff2">SetScale</a>(real lat, real k=real(1))</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1LambertConformalConic.html b/doc/html/classGeographicLib_1_1LambertConformalConic.html
index 6db7618..ff42bb7 100644
--- a/doc/html/classGeographicLib_1_1LambertConformalConic.html
+++ b/doc/html/classGeographicLib_1_1LambertConformalConic.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::LambertConformalConic Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">OriginLatitude</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">CentralScale</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
@@ -88,7 +102,7 @@ Static Public Attributes</h2></td></tr>
 <p>This is a implementation of the equations in Snyder except that divided differences have been used to transform the expressions into ones which may be evaluated accurately and that Newton's method is used to invert the projection. In this implementation, the projection correctly becomes the Mercator projection or the polar stereographic projection when the standard latitude is the equator or a pole. The accuracy of the projections is about 10 nm (10 nanometers).</p>
 <p>The ellipsoid parameters, the standard parallels, and the scale on the standard parallels are set in the constructor. Internally, the case with two standard parallels is converted into a single standard parallel, the latitude of tangency (also the latitude of minimum scale), with a scale specified on this parallel. This latitude is also used as the latitude of origin which is returned by <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f2 [...]
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::LambertConformalConic class</span>
-<span class="comment">// $Id: fee4349167387dc01f6253ec8d9cbd0172a7392b $</span>
+<span class="comment">// $Id: 5cb2532e2709bcafee50974307836930069b0cff $</span>
 
 <span class="preprocessor">#include <iostream></span>
 <span class="preprocessor">#include <exception></span>
@@ -100,35 +114,35 @@ Static Public Attributes</h2></td></tr>
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
     <span class="comment">// Define the Pennsylvania South state coordinate system EPSG:3364</span>
-   <span class="keyword">const</span> <span class="keywordtype">double</span>
-     a = Constants::WGS84_a<double>(),
-     f = 1/298.257222101,                      <span class="comment">// GRS80</span>
-     lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, <span class="comment">// standard parallels</span>
-     k1 = 1,                                   <span class="comment">// scale</span>
-     lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, <span class="comment">// origin</span>
-     fe = 600000, fn = 0;                      <span class="comment">// false easting and northing</span>
-   <span class="comment">// Set up basic projection</span>
-   <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> PASouth(a, f, lat1, lat2, k1);
-   <span class="keywordtype">double</span> x0, y0;
-   <span class="comment">// Transform origin point</span>
-   PASouth.Forward(lon0, lat0, lon0, x0, y0);
-   x0 -= fe; y0 -= fn;
-   {
-     <span class="comment">// Sample conversion from geodetic to PASouth grid</span>
-     <span class="keywordtype">double</span> lat = 39.95, lon = -75.17;    <span class="comment">// Philadelphia</span>
-     <span class="keywordtype">double</span> x, y;
-     PASouth.Forward(lon0, lat, lon, x, y);
-     x -= x0; y -= y0;
-     std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">"\n"</span>;
-   }
-   {
-     <span class="comment">// Sample conversion from PASouth grid to geodetic</span>
-     <span class="keywordtype">double</span> x = 820e3, y = 72e3;
-     <span class="keywordtype">double</span> lat, lon;
-     x += x0; y += y0;
-     PASouth.Reverse(lon0, x, y, lat, lon);
-     std::cout << lat << <span class="stringliteral">" "</span> << lon << <span class="stringliteral">"\n"</span>;
-   }
+    <span class="keyword">const</span> <span class="keywordtype">double</span>
+      a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<double>(),
+      f = 1/298.257222101,                      <span class="comment">// GRS80</span>
+      lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, <span class="comment">// standard parallels</span>
+      k1 = 1,                                   <span class="comment">// scale</span>
+      lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, <span class="comment">// origin</span>
+      fe = 600000, fn = 0;                      <span class="comment">// false easting and northing</span>
+    <span class="comment">// Set up basic projection</span>
+    <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> PASouth(a, f, lat1, lat2, k1);
+    <span class="keywordtype">double</span> x0, y0;
+    <span class="comment">// Transform origin point</span>
+    PASouth.Forward(lon0, lat0, lon0, x0, y0);
+    x0 -= fe; y0 -= fn;
+    {
+      <span class="comment">// Sample conversion from geodetic to PASouth grid</span>
+      <span class="keywordtype">double</span> lat = 39.95, lon = -75.17;    <span class="comment">// Philadelphia</span>
+      <span class="keywordtype">double</span> x, y;
+      PASouth.Forward(lon0, lat, lon, x, y);
+      x -= x0; y -= y0;
+      std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">"\n"</span>;
+    }
+    {
+      <span class="comment">// Sample conversion from PASouth grid to geodetic</span>
+      <span class="keywordtype">double</span> x = 820e3, y = 72e3;
+      <span class="keywordtype">double</span> lat, lon;
+      x += x0; y += y0;
+      PASouth.Reverse(lon0, x, y, lat, lon);
+      std::cout << lat << <span class="stringliteral">" "</span> << lon << <span class="stringliteral">"\n"</span>;
+    }
   }
   <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
     cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
@@ -136,8 +150,7 @@ Static Public Attributes</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00055">55</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+</pre></div><p><a href="ConicProj.1.html">ConicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> and <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a21dc9fa160a5b96a1c11ab30af0eb129"></a><!-- doxytag: member="GeographicLib::LambertConformalConic::LambertConformalConic" ref="a21dc9fa160a5b96a1c11ab30af0eb129" args="(real a, real f, real stdlat, real k0)" -->
 <div class="memitem">
@@ -366,7 +379,7 @@ Static Public Attributes</h2></td></tr>
 
 <p>Definition at line <a class="el" href="LambertConformalConic_8cpp_source.html#l00455">455</a> of file <a class="el" href="LambertConformalConic_8cpp_source.html">LambertConformalConic.cpp</a>.</p>
 
-<p>References <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">Forward()</a>, and <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, and <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">Forward()</a>.</p>
 
 </div>
 </div>
@@ -518,7 +531,7 @@ Static Public Attributes</h2></td></tr>
 
 <p>Definition at line <a class="el" href="LambertConformalConic_8cpp_source.html#l00371">371</a> of file <a class="el" href="LambertConformalConic_8cpp_source.html">LambertConformalConic.cpp</a>.</p>
 
-<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="Math_8hpp_source.html#l00224">GeographicLib::Math::log1p()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>, and <a class="el" href="Math_8hpp_source.html#l00224">GeographicLib::Math::log1p()</a>.</p>
 
 </div>
 </div>
@@ -566,7 +579,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2bafb6c1a81d4b6cf04f172b9e96278c">LambertConformalConic::Forward</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00258">258</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00262">262</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -614,7 +627,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">LambertConformalConic::Reverse</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00268">268</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00272">272</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -633,7 +646,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00281">281</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00285">285</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -652,27 +665,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00287">287</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2dcd66922112771c232d686e7bcc5f31"></a><!-- doxytag: member="GeographicLib::LambertConformalConic::InverseFlattening" ref="a2dcd66922112771c232d686e7bcc5f31" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::LambertConformalConic::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00293">293</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00291">291</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -692,7 +685,7 @@ Static Public Attributes</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin for the projection (degrees).</dd></dl>
 <p>This is the latitude of minimum scale and equals the <em>stdlat</em> in the 1-parallel constructor and lies between <em>stdlat1</em> and <em>stdlat2</em> in the 2-parallel constructors. </p>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00302">302</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00308">308</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -711,7 +704,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>central scale for the projection. This is the scale on the latitude of origin. </dd></dl>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00308">308</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00314">314</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -728,7 +721,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> with the WGS84 ellipsoid, <em>stdlat</em> = 0, and <em>k0</em> = 1. This degenerates to the Mercator projection. </p>
 
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00316">316</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00322">322</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
 
 </div>
 </div>
@@ -737,8 +730,13 @@ Static Public Attributes</h2></td></tr>
 <li><a class="el" href="LambertConformalConic_8cpp_source.html">LambertConformalConic.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1LocalCartesian-members.html b/doc/html/classGeographicLib_1_1LocalCartesian-members.html
index 5c96cdc..9612c50 100644
--- a/doc/html/classGeographicLib_1_1LocalCartesian-members.html
+++ b/doc/html/classGeographicLib_1_1LocalCartesian-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +68,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">Forward</a>(real lat, real lon, real h, real &x, real &y, real &z) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a774332be14e894536f13b3cc7a8323c7">Forward</a>(real lat, real lon, real h, real &x, real &y, real &z, std::vector< real > &M) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">LatitudeOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">LocalCartesian</a>(real lat0, real lon0, real h0=0, const Geocentric &earth=Geocentric::WGS84)</td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a3474a0434b2ff8b258111fe6d8468f0d">LocalCartesian</a>(const Geocentric &earth=Geocentric::WGS84)</td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline, explicit]</code></td></tr>
@@ -63,8 +77,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">Reverse</a>(real x, real y, real z, real &lat, real &lon, real &h) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a7baa88b38b320d763f6cba3ece4f518d">Reverse</a>(real x, real y, real z, real &lat, real &lon, real &h, std::vector< real > &M) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1LocalCartesian.html b/doc/html/classGeographicLib_1_1LocalCartesian.html
index c4fb03a..d59bcd7 100644
--- a/doc/html/classGeographicLib_1_1LocalCartesian.html
+++ b/doc/html/classGeographicLib_1_1LocalCartesian.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::LocalCartesian Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,7 +88,6 @@ Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">InverseFlattening</a> () const   throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Local Cartesian coordinates. </p>
@@ -94,7 +108,7 @@ Public Member Functions</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geocentric& earth = Geocentric::WGS84;</span>
     <span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
     <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> proj(lat0, lon0, 0, earth);
@@ -119,8 +133,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00036">36</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+</pre></div><p><a href="CartConvert.1.html">CartConvert</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="ad277a6798293d5d66168c3c1438d10a2"></a><!-- doxytag: member="GeographicLib::LocalCartesian::LocalCartesian" ref="ad277a6798293d5d66168c3c1438d10a2" args="(real lat0, real lon0, real h0=0, const Geocentric &earth=Geocentric::WGS84)" -->
 <div class="memitem">
@@ -169,7 +182,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00060">60</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00063">63</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -196,7 +209,7 @@ Public Member Functions</h2></td></tr>
 </dl>
 <p>Sets <em>lat0</em> = 0, <em>lon0</em> = 0, <em>h0</em> = 0. </p>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00073">73</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00076">76</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -307,7 +320,7 @@ Public Member Functions</h2></td></tr>
 </dl>
 <p><em>lat</em> should be in the range [-90, 90]; <em>lon</em> and <em>lon0</em> should be in the range [-180, 360]. </p>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00101">101</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00104">104</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
 
@@ -387,7 +400,7 @@ Public Member Functions</h2></td></tr>
 </ul>
 <p>Then we have <em>v0</em> = <em>M</em> . <em>v1</em>. </p>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00130">130</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00133">133</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -453,7 +466,7 @@ Public Member Functions</h2></td></tr>
 </dl>
 <p>The value of <em>lon</em> returned is in the range [-180, 180). </p>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00153">153</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00156">156</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
 
@@ -533,7 +546,7 @@ Public Member Functions</h2></td></tr>
 </ul>
 <p>Then we have <em>v1</em> = <em>M^T</em> . <em>v0</em>, where <em>M^T</em> is the transpose of <em>M</em>. </p>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00183">183</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00186">186</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -552,7 +565,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00200">200</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00203">203</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -571,7 +584,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>longitude of the origin (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00205">205</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00208">208</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -590,7 +603,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>height of the origin (meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00210">210</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00213">213</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -609,7 +622,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value of <em>a</em> inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00217">217</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00220">220</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -628,27 +641,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00223">223</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad6991a2dff56a460a650c757ffda8e94"></a><!-- doxytag: member="GeographicLib::LocalCartesian::InverseFlattening" ref="ad6991a2dff56a460a650c757ffda8e94" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::LocalCartesian::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00229">229</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00226">226</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
 
 </div>
 </div>
@@ -657,8 +650,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="LocalCartesian_8cpp_source.html">LocalCartesian.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1MGRS-members.html b/doc/html/classGeographicLib_1_1MGRS-members.html
index d01875f..8d8f74c 100644
--- a/doc/html/classGeographicLib_1_1MGRS-members.html
+++ b/doc/html/classGeographicLib_1_1MGRS-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,13 +67,17 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a>()</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a91de10ebde478dbb85b3c7d057ff97b9">Forward</a>(int zone, bool northp, real x, real y, int prec, std::string &mgrs)</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a37f9dd9b12dbc74381116d842be47ccd">Forward</a>(int zone, bool northp, real x, real y, real lat, int prec, std::string &mgrs)</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">InverseFlattening</a>()</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a>()</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a066b79e78cd85bf4b50df50808bed7e3">Reverse</a>(const std::string &mgrs, int &zone, bool &northp, real &x, real &y, int &prec, bool centerp=true)</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a6a0cfac496024eaf645c7a2f98a02a75">UTMUPS</a> class</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [friend]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1MGRS.html b/doc/html/classGeographicLib_1_1MGRS.html
index d5eae15..62ce7c6 100644
--- a/doc/html/classGeographicLib_1_1MGRS.html
+++ b/doc/html/classGeographicLib_1_1MGRS.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::MGRS Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,7 +82,6 @@ Static Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a> ()  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">InverseFlattening</a> ()  throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="friends"></a>
 Friends</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a6a0cfac496024eaf645c7a2f98a02a75">UTMUPS</a></td></tr>
@@ -136,9 +150,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="MGRS_8hpp_source.html#l00063">63</a> of file <a class="el" href="MGRS_8hpp_source.html">MGRS.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
 <a class="anchor" id="a91de10ebde478dbb85b3c7d057ff97b9"></a><!-- doxytag: member="GeographicLib::MGRS::Forward" ref="a91de10ebde478dbb85b3c7d057ff97b9" args="(int zone, bool northp, real x, real y, int prec, std::string &mgrs)" -->
 <div class="memitem">
 <div class="memproto">
@@ -420,28 +432,6 @@ Friends</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a32792f0e117641cb48d06786d4c6fdbc"></a><!-- doxytag: member="GeographicLib::MGRS::InverseFlattening" ref="a32792f0e117641cb48d06786d4c6fdbc" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::MGRS::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td>  throw ()<code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="MGRS_8hpp_source.html#l00279">279</a> of file <a class="el" href="MGRS_8hpp_source.html">MGRS.hpp</a>.</p>
-
-<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00311">GeographicLib::UTMUPS::InverseFlattening()</a>.</p>
-
-</div>
-</div>
 <hr/><h2>Friends And Related Function Documentation</h2>
 <a class="anchor" id="a6a0cfac496024eaf645c7a2f98a02a75"></a><!-- doxytag: member="GeographicLib::MGRS::UTMUPS" ref="a6a0cfac496024eaf645c7a2f98a02a75" args="" -->
 <div class="memitem">
@@ -463,8 +453,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="MGRS_8cpp_source.html">MGRS.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1MagneticCircle-members.html b/doc/html/classGeographicLib_1_1MagneticCircle-members.html
index 5d28981..a02a78b 100644
--- a/doc/html/classGeographicLib_1_1MagneticCircle-members.html
+++ b/doc/html/classGeographicLib_1_1MagneticCircle-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,8 +75,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">operator()</a>(real lon, real &Bx, real &By, real &Bz, real &Bxt, real &Byt, real &Bzt) const </td><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html">GeographicLib::MagneticCircle</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html#a44783c9e44f16bbd48cc5061b30ce8e9">Time</a>() const </td><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html">GeographicLib::MagneticCircle</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1MagneticCircle.html b/doc/html/classGeographicLib_1_1MagneticCircle.html
index 45c3944..f668272 100644
--- a/doc/html/classGeographicLib_1_1MagneticCircle.html
+++ b/doc/html/classGeographicLib_1_1MagneticCircle.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::MagneticCircle Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -124,8 +139,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00036">36</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+</pre></div><p><a href="MagneticField.1.html">MagneticField</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a49170460b1833722ad9bc45b92c86e5a"></a><!-- doxytag: member="GeographicLib::MagneticCircle::MagneticCircle" ref="a49170460b1833722ad9bc45b92c86e5a" args="()" -->
 <div class="memitem">
@@ -142,7 +156,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <p>A default constructor for the normal gravity. This sets up an uninitialized object which can be later replaced by the <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00075">75</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00078">78</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -194,7 +208,7 @@ Friends</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00090">90</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00093">93</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -266,7 +280,7 @@ Friends</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00108">108</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00111">111</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -285,7 +299,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00120">120</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00123">123</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -304,7 +318,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00126">126</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00129">129</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -323,7 +337,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00132">132</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00135">135</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -342,7 +356,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the latitude of the circle (degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00137">137</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00140">140</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -361,7 +375,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the height of the circle (meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00142">142</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00145">145</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -380,7 +394,7 @@ Friends</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the time (fractional years). </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00147">147</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00150">150</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -396,7 +410,7 @@ Friends</h2></td></tr>
 </div>
 <div class="memdoc">
 
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00066">66</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00069">69</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
 
 </div>
 </div>
@@ -405,8 +419,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="MagneticCircle_8cpp_source.html">MagneticCircle.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1MagneticModel-members.html b/doc/html/classGeographicLib_1_1MagneticModel-members.html
index c24a16e..b2ffb1f 100644
--- a/doc/html/classGeographicLib_1_1MagneticModel-members.html
+++ b/doc/html/classGeographicLib_1_1MagneticModel-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,8 +84,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">operator()</a>(real t, real lat, real lon, real h, real &Bx, real &By, real &Bz) const </td><td><a class="el" href="classGeographicLib_1_1MagneticModel.html">GeographicLib::MagneticModel</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticModel.html#a11fed1ca7a45947f6f43f6ba7897250f">operator()</a>(real t, real lat, real lon, real h, real &Bx, real &By, real &Bz, real &Bxt, real &Byt, real &Bzt) const </td><td><a class="el" href="classGeographicLib_1_1MagneticModel.html">GeographicLib::MagneticModel</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1MagneticModel.html b/doc/html/classGeographicLib_1_1MagneticModel.html
index 6f12732..5cb66ac 100644
--- a/doc/html/classGeographicLib_1_1MagneticModel.html
+++ b/doc/html/classGeographicLib_1_1MagneticModel.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::MagneticModel Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -140,8 +155,7 @@ Compute the magnetic field</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00061">61</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+</pre></div><p><a href="MagneticField.1.html">MagneticField</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a84a020586d58c4da61ec6ffbc7b4fa37"></a><!-- doxytag: member="GeographicLib::MagneticModel::MagneticModel" ref="a84a020586d58c4da61ec6ffbc7b4fa37" args="(const std::string &name, const std::string &path="", const Geocentric &earth=Geocentric::WGS84)" -->
 <div class="memitem">
@@ -261,7 +275,7 @@ Compute the magnetic field</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00128">128</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00131">131</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -354,7 +368,7 @@ Compute the magnetic field</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00150">150</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00153">153</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -474,7 +488,7 @@ Compute the magnetic field</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00187">187</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00190">190</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -618,7 +632,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>the description of the magnetic model, if available, from the Description file in the data file; if absent, return "NONE". </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00228">228</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00231">231</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -639,7 +653,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>date of the model, if available, from the ReleaseDate field in the data file; if absent, return "UNKNOWN". </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00234">234</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00237">237</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -660,7 +674,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>full file name used to load the magnetic model. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00239">239</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00242">242</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -681,7 +695,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>"name" used to load the magnetic model (from the first argument of the constructor, but this may be overridden by the model file). </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00245">245</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00248">248</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -702,7 +716,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>directory used to load the magnetic model. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00250">250</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00253">253</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -722,7 +736,7 @@ Compute the magnetic field</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the minimum height above the ellipsoid (in meters) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
 <p>Because the model will typically provide useful results slightly outside the range of allowed heights, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00261">261</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00264">264</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -744,7 +758,7 @@ Compute the magnetic field</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the maximum height above the ellipsoid (in meters) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
 <p>Because the model will typically provide useful results slightly outside the range of allowed heights, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00272">272</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00275">275</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -766,7 +780,7 @@ Compute the magnetic field</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the minimum time (in years) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
 <p>Because the model will typically provide useful results slightly outside the range of allowed times, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00283">283</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00286">286</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -788,7 +802,7 @@ Compute the magnetic field</h2></td></tr>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the maximum time (in years) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
 <p>Because the model will typically provide useful results slightly outside the range of allowed times, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00294">294</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00297">297</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
 
@@ -809,7 +823,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value of <em>a</em> inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00301">301</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00304">304</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -828,7 +842,7 @@ Compute the magnetic field</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00307">307</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00310">310</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
 
 </div>
 </div>
@@ -852,7 +866,7 @@ Compute the magnetic field</h2></td></tr>
 
 <p>References <a class="el" href="MagneticModel_8cpp_source.html#l00027">GEOGRAPHICLIB_DATA</a>.</p>
 
-<p>Referenced by <a class="el" href="MagneticModel_8cpp_source.html#l00044">MagneticModel()</a>, and <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>, and <a class="el" href="MagneticModel_8cpp_source.html#l00044">MagneticModel()</a>.</p>
 
 </div>
 </div>
@@ -885,8 +899,13 @@ Compute the magnetic field</h2></td></tr>
 <li><a class="el" href="MagneticModel_8cpp_source.html">MagneticModel.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Math-members.html b/doc/html/classGeographicLib_1_1Math-members.html
index cdd5691..3cb8dc5 100644
--- a/doc/html/classGeographicLib_1_1Math-members.html
+++ b/doc/html/classGeographicLib_1_1Math-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -49,30 +64,35 @@
 </div>
 <div class="contents">
 This is the complete list of members for <a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a>, including all inherited members.<table>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">asinh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">atanh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">asinh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">atanh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">bigendian</a></td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">cbrt</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">degree</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">cbrt</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">degree</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a5bb8bea024e11eb402ecbcf9bae28bb5">degree</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">expm1</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">expm1</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">extended</a> typedef</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">hypot</a>(T x, T y)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">hypot</a>(T x, T y)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a1606218c36b8d7c60a5ad5847a94ab9c">infinity</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">isfinite</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">isnan</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">log1p</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">isfinite</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">isnan</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">log1p</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a28304be9b5cb17eeb7413b059604a154">NaN</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">pi</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">pi</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#abb031de2a30d6fbac4c634b344e46df4">pi</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> typedef</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">sq</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">swab</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">sq</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">swab</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Math.html b/doc/html/classGeographicLib_1_1Math.html
index bd9c932..1837c88 100644
--- a/doc/html/classGeographicLib_1_1Math.html
+++ b/doc/html/classGeographicLib_1_1Math.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Math Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,37 +82,37 @@ Public Types</h2></td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">pi</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">pi</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#abb031de2a30d6fbac4c634b344e46df4">pi</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">degree</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">degree</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a5bb8bea024e11eb402ecbcf9bae28bb5">degree</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">sq</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">sq</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">hypot</a> (T x, T y)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">hypot</a> (T x, T y)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">expm1</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">expm1</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">log1p</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">log1p</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">asinh</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">asinh</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">atanh</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">atanh</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">cbrt</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">cbrt</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">isfinite</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">isfinite</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a28304be9b5cb17eeb7413b059604a154">NaN</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">isnan</a> (T x)  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">isnan</a> (T x)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity</a> ()  throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a1606218c36b8d7c60a5ad5847a94ab9c">infinity</a> ()  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">swab</a> (T x)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">swab</a> (T x)</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">bigendian</a> = WORDS_BIGENDIAN</td></tr>
@@ -118,7 +133,7 @@ Static Public Attributes</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    cout << <a class="code" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">Math::pi</a>() << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">Math::pi</a>()) << <span class="stringliteral">"\n"</span>;
+    cout << <a class="code" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">Math::pi</a>() << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">Math::pi</a>()) << <span class="stringliteral">"\n"</span>;
   }
   <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
     cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
@@ -126,9 +141,7 @@ Static Public Attributes</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00061">61</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-</div><hr/><h2>Member Typedef Documentation</h2>
+</pre></div> </div><hr/><h2>Member Typedef Documentation</h2>
 <a class="anchor" id="a436f350a6a9539e176dda19d0e4811f8"></a><!-- doxytag: member="GeographicLib::Math::extended" ref="a436f350a6a9539e176dda19d0e4811f8" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -161,7 +174,7 @@ Static Public Attributes</h2></td></tr>
 </div>
 </div>
 <hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a55d06bfccddf52b1c1066962af738b75"></a><!-- doxytag: member="GeographicLib::Math::pi" ref="a55d06bfccddf52b1c1066962af738b75" args="()" -->
+<a class="anchor" id="aca1580c771e7019bfe826512fba9b2f1"></a><!-- doxytag: member="GeographicLib::Math::pi" ref="aca1580c771e7019bfe826512fba9b2f1" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -201,13 +214,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">pi<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">pi<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00110">110</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a3d84677a4dfd6c2149c16426544eaf6c"></a><!-- doxytag: member="GeographicLib::Math::degree" ref="a3d84677a4dfd6c2149c16426544eaf6c" args="()" -->
+<a class="anchor" id="a0f3b4ea16cc2cb21557555fca3b1c201"></a><!-- doxytag: member="GeographicLib::Math::degree" ref="a0f3b4ea16cc2cb21557555fca3b1c201" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -247,13 +260,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">degree<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">degree<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00121">121</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a8a952f405e2ff2cbe079ba5687c40327"></a><!-- doxytag: member="GeographicLib::Math::sq" ref="a8a952f405e2ff2cbe079ba5687c40327" args="(T x)" -->
+<a class="anchor" id="a6a092f38e231c80a1f144814c90f1895"></a><!-- doxytag: member="GeographicLib::Math::sq" ref="a6a092f38e231c80a1f144814c90f1895" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -286,11 +299,11 @@ template<typename T > </div>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00130">130</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="MagneticModel_8cpp_source.html#l00222">GeographicLib::MagneticModel::FieldComponents()</a>, <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, <a class="el" href="PolarStereographic_8cpp_source.html#l00072">GeographicLib::PolarStereographic::Forward()</a>, <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">GeographicLib::LambertConformalConic::Forward()</a>, <a class="el" h [...]
+<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00379">GeographicLib::AlbersEqualArea::Forward()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00409">GeographicLib::AlbersEqualArea::Reverse()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00439">GeographicLib::AlbersEqualArea::SetScale()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00123">GeographicLib::Geodesic::GenInverse()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00 [...]
 
 </div>
 </div>
-<a class="anchor" id="a0d422863198d4bec2aae6b187a60760c"></a><!-- doxytag: member="GeographicLib::Math::hypot" ref="a0d422863198d4bec2aae6b187a60760c" args="(T x, T y)" -->
+<a class="anchor" id="a62b6fca06c571481aafba3f1716a8bb2"></a><!-- doxytag: member="GeographicLib::Math::hypot" ref="a62b6fca06c571481aafba3f1716a8bb2" args="(T x, T y)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -334,11 +347,11 @@ template<typename T > </div>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00142">142</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00309">GeographicLib::GravityModel::Circle()</a>, <a class="el" href="MagneticModel_8cpp_source.html#l00222">GeographicLib::MagneticModel::FieldComponents()</a>, <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, <a class="el" href="PolarStereographic_8cpp_source.html#l00072">GeographicLib::PolarStereographic::Forward()</a>, <a class="el" href="Geodesic_8cpp_ [...]
+<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00409">GeographicLib::AlbersEqualArea::Reverse()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00123">GeographicLib::Geodesic::GenInverse()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00250">GeographicLib::GravityModel::SphericalAnomaly()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00277">GeographicLib::GravityModel::GeoidHeight()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00 [...]
 
 </div>
 </div>
-<a class="anchor" id="a71afd1ae80f942a0b90d65f7784bf2f8"></a><!-- doxytag: member="GeographicLib::Math::expm1" ref="a71afd1ae80f942a0b90d65f7784bf2f8" args="(T x)" -->
+<a class="anchor" id="a2fd4e8930d9dd953352d25fc184d843e"></a><!-- doxytag: member="GeographicLib::Math::expm1" ref="a2fd4e8930d9dd953352d25fc184d843e" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -373,7 +386,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="ac84507dc4df09cf27e831620e8ad8880"></a><!-- doxytag: member="GeographicLib::Math::log1p" ref="ac84507dc4df09cf27e831620e8ad8880" args="(T x)" -->
+<a class="anchor" id="a90eddd5a6d0c9dcc4a9f18dd647ac520"></a><!-- doxytag: member="GeographicLib::Math::log1p" ref="a90eddd5a6d0c9dcc4a9f18dd647ac520" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -411,7 +424,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="ab0998a80c8946d1c016c1bc4810a0698"></a><!-- doxytag: member="GeographicLib::Math::asinh" ref="ab0998a80c8946d1c016c1bc4810a0698" args="(T x)" -->
+<a class="anchor" id="aba75669f9d52fc672a8faaf69261bd8a"></a><!-- doxytag: member="GeographicLib::Math::asinh" ref="aba75669f9d52fc672a8faaf69261bd8a" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -427,7 +440,7 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>The inverse hyperbolic sine function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
+<p>The inverse hyperbolic sine function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
 <dl><dt><b>Template Parameters:</b></dt><dd>
   <table class="">
     <tr><td class="paramname">T</td><td>the type of the argument and the returned value. </td></tr>
@@ -444,11 +457,11 @@ template<typename T > </div>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00256">256</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, and <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">GeographicLib::LambertConformalConic::Forward()</a>.</p>
+<p>Referenced by <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">GeographicLib::LambertConformalConic::Forward()</a>, and <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a62ae372f983cb076561204be8de263bd"></a><!-- doxytag: member="GeographicLib::Math::atanh" ref="a62ae372f983cb076561204be8de263bd" args="(T x)" -->
+<a class="anchor" id="a372ac604592d9de9cf608cfdfc463447"></a><!-- doxytag: member="GeographicLib::Math::atanh" ref="a372ac604592d9de9cf608cfdfc463447" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -464,7 +477,7 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>The inverse hyperbolic tangent function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
+<p>The inverse hyperbolic tangent function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
 <dl><dt><b>Template Parameters:</b></dt><dd>
   <table class="">
     <tr><td class="paramname">T</td><td>the type of the argument and the returned value. </td></tr>
@@ -483,7 +496,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="a21b33765456b50bf9e32ed0d57b441a6"></a><!-- doxytag: member="GeographicLib::Math::cbrt" ref="a21b33765456b50bf9e32ed0d57b441a6" args="(T x)" -->
+<a class="anchor" id="a04b87b033b845f4812a5700661c64a2a"></a><!-- doxytag: member="GeographicLib::Math::cbrt" ref="a04b87b033b845f4812a5700661c64a2a" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -518,7 +531,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="adadc6f5069c0a5f75a7c5a5bf2720aa3"></a><!-- doxytag: member="GeographicLib::Math::isfinite" ref="adadc6f5069c0a5f75a7c5a5bf2720aa3" args="(T x)" -->
+<a class="anchor" id="af61f7360e67c35131d80083e7b53dda8"></a><!-- doxytag: member="GeographicLib::Math::isfinite" ref="af61f7360e67c35131d80083e7b53dda8" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -551,11 +564,11 @@ template<typename T > </div>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00330">330</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00031">GeographicLib::AlbersEqualArea::AlbersEqualArea()</a>, <a class="el" href="Geocentric_8cpp_source.html#l00022">GeographicLib::Geocentric::Geocentric()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00054">GeographicLib::Geodesic::Geodesic()</a>, <a class="el" href="LambertConformalConic_8cpp_source.html#l00030">GeographicLib::LambertConformalConic::LambertConformalConic()</a>, <a class="el" href="NormalGra [...]
+<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00031">GeographicLib::AlbersEqualArea::AlbersEqualArea()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00439">GeographicLib::AlbersEqualArea::SetScale()</a>, <a class="el" href="Geocentric_8cpp_source.html#l00022">GeographicLib::Geocentric::Geocentric()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00054">GeographicLib::Geodesic::Geodesic()</a>, <a class="el" href="LambertConformalConic_8cpp_source. [...]
 
 </div>
 </div>
-<a class="anchor" id="a77c57c61f93d7ac3f6a5095489c36715"></a><!-- doxytag: member="GeographicLib::Math::NaN" ref="a77c57c61f93d7ac3f6a5095489c36715" args="()" -->
+<a class="anchor" id="ad1dc13a367125d3f8d291eaa98339186"></a><!-- doxytag: member="GeographicLib::Math::NaN" ref="ad1dc13a367125d3f8d291eaa98339186" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -596,13 +609,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00354">354</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="aa63d7a640d1126e47af65f782dd40bca"></a><!-- doxytag: member="GeographicLib::Math::isnan" ref="aa63d7a640d1126e47af65f782dd40bca" args="(T x)" -->
+<a class="anchor" id="a554d35e9f54bf304447833a21ee2047c"></a><!-- doxytag: member="GeographicLib::Math::isnan" ref="a554d35e9f54bf304447833a21ee2047c" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -639,7 +652,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="a4e8a86ff2039262e99b8e41070cc2223"></a><!-- doxytag: member="GeographicLib::Math::infinity" ref="a4e8a86ff2039262e99b8e41070cc2223" args="()" -->
+<a class="anchor" id="a82ccc01be301f14061c681ee93a5120b"></a><!-- doxytag: member="GeographicLib::Math::infinity" ref="a82ccc01be301f14061c681ee93a5120b" args="()" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -680,13 +693,13 @@ template<typename T > </div>
       </table>
 </div>
 <div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity<real>()</a>. </p>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00385">385</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="aa81163e3148b2d45d903d23f5d8fb261"></a><!-- doxytag: member="GeographicLib::Math::swab" ref="aa81163e3148b2d45d903d23f5d8fb261" args="(T x)" -->
+<a class="anchor" id="aec7f95c2bb99422f1f047cb628a232f8"></a><!-- doxytag: member="GeographicLib::Math::swab" ref="aec7f95c2bb99422f1f047cb628a232f8" args="(T x)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -736,7 +749,7 @@ template<typename T > </div>
 
 <p>Definition at line <a class="el" href="Math_8hpp_source.html#l00099">99</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="Utility_8hpp_source.html#l00372">GeographicLib::Utility::readarray()</a>.</p>
+<p>Referenced by <a class="el" href="Utility_8hpp_source.html#l00372">GeographicLib::Utility::readarray()</a>, and <a class="el" href="Utility_8hpp_source.html#l00435">GeographicLib::Utility::writearray()</a>.</p>
 
 </div>
 </div>
@@ -744,8 +757,13 @@ template<typename T > </div>
 <li><a class="el" href="Math_8hpp_source.html">Math.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1NormalGravity-members.html b/doc/html/classGeographicLib_1_1NormalGravity-members.html
index 99ee830..d39765b 100644
--- a/doc/html/classGeographicLib_1_1NormalGravity-members.html
+++ b/doc/html/classGeographicLib_1_1NormalGravity-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,8 +86,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">V0</a>(real X, real Y, real Z, real &GammaX, real &GammaY, real &GammaZ) const </td><td><a class="el" href="classGeographicLib_1_1NormalGravity.html">GeographicLib::NormalGravity</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">WGS84</a></td><td><a class="el" href="classGeographicLib_1_1NormalGravity.html">GeographicLib::NormalGravity</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1NormalGravity.html b/doc/html/classGeographicLib_1_1NormalGravity.html
index 152fa9a..dee56c4 100644
--- a/doc/html/classGeographicLib_1_1NormalGravity.html
+++ b/doc/html/classGeographicLib_1_1NormalGravity.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::NormalGravity Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -124,9 +139,9 @@ Friends</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> grav(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), Constants::WGS84_GM<double>(),
+    <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> grav(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), Constants::WGS84_GM<double>(),
                        Constants::WGS84_omega<double>(),
-                       <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(), 0);
+                       <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(), 0);
     <span class="comment">// Alternatively: const NormalGravity& grav = NormalGravity::WGS84;</span>
     <span class="keywordtype">double</span> lat = 27.99, h = 8820; <span class="comment">// Mt Everest</span>
     <span class="keywordtype">double</span> gammay, gammaz;
@@ -139,9 +154,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="NormalGravity_8hpp_source.html#l00061">61</a> of file <a class="el" href="NormalGravity_8hpp_source.html">NormalGravity.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="af625bbc7df2d36ba5c43c8f20f61c134"></a><!-- doxytag: member="GeographicLib::NormalGravity::NormalGravity" ref="af625bbc7df2d36ba5c43c8f20f61c134" args="(real a, real GM, real omega, real f, real J2)" -->
 <div class="memitem">
 <div class="memproto">
@@ -776,8 +789,13 @@ Friends</h2></td></tr>
 <li><a class="el" href="NormalGravity_8cpp_source.html">NormalGravity.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1OSGB-members.html b/doc/html/classGeographicLib_1_1OSGB-members.html
index 3fa0e30..30261d9 100644
--- a/doc/html/classGeographicLib_1_1OSGB-members.html
+++ b/doc/html/classGeographicLib_1_1OSGB-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,15 +72,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a0f705bee98c6669ca7a95394712fd758">Forward</a>(real lat, real lon, real &x, real &y)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a0a79e8f2babae1eb0305a0e728fea8c8">GridReference</a>(real x, real y, int prec, std::string &gridref)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a3693cfef49442747750e8393c81014aa">GridReference</a>(const std::string &gridref, real &x, real &y, int &prec, bool centerp=true)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">InverseFlattening</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">MajorRadius</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#ae006380e574858a81011752dd1d4af60">Reverse</a>(real x, real y, real &lat, real &lon, real &gamma, real &k)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#ab804929a4126ed390a40d35e837b4001">Reverse</a>(real x, real y, real &lat, real &lon)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1OSGB.html b/doc/html/classGeographicLib_1_1OSGB.html
index 4e4288b..2e5449d 100644
--- a/doc/html/classGeographicLib_1_1OSGB.html
+++ b/doc/html/classGeographicLib_1_1OSGB.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::OSGB Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,6 @@ Static Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">MajorRadius</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#aae688ebd8c126f22517eaa0a01d659f8">Flattening</a> ()  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">InverseFlattening</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a65210bfdcac362f393a8f81f28259ad0">CentralScale</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a> ()  throw ()</td></tr>
@@ -125,9 +139,7 @@ Static Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00046">46</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
 <a class="anchor" id="a92618eea9870908e11446875d80aab6b"></a><!-- doxytag: member="GeographicLib::OSGB::Forward" ref="a92618eea9870908e11446875d80aab6b" args="(real lat, real lon, real &x, real &y, real &gamma, real &k)" -->
 <div class="memitem">
 <div class="memproto">
@@ -506,26 +518,6 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a72bb966b2a93e4607bfcbf78f5b80bb4"></a><!-- doxytag: member="GeographicLib::OSGB::InverseFlattening" ref="a72bb966b2a93e4607bfcbf78f5b80bb4" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::OSGB::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td>  throw ()<code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the Airy 1830 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00201">201</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
-
-</div>
-</div>
 <a class="anchor" id="a65210bfdcac362f393a8f81f28259ad0"></a><!-- doxytag: member="GeographicLib::OSGB::CentralScale" ref="a65210bfdcac362f393a8f81f28259ad0" args="()" -->
 <div class="memitem">
 <div class="memproto">
@@ -541,7 +533,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>k0</em> central scale for the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (0.9996012717). </dd></dl>
 
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00206">206</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00208">208</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
 
 </div>
 </div>
@@ -560,7 +552,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin for the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (49 degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00212">212</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00214">214</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
 
 </div>
 </div>
@@ -579,7 +571,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>longitude of the origin for the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (-2 degrees). </dd></dl>
 
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00217">217</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00219">219</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
 
 </div>
 </div>
@@ -598,7 +590,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>false northing the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (-100000 meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00222">222</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00224">224</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
 
 </div>
 </div>
@@ -617,7 +609,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd>false easting the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (400000 meters). </dd></dl>
 
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00227">227</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00229">229</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
 
 </div>
 </div>
@@ -626,8 +618,13 @@ Static Public Member Functions</h2></td></tr>
 <li><a class="el" href="OSGB_8cpp_source.html">OSGB.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1PolarStereographic-members.html b/doc/html/classGeographicLib_1_1PolarStereographic-members.html
index d8b71bf..297823e 100644
--- a/doc/html/classGeographicLib_1_1PolarStereographic-members.html
+++ b/doc/html/classGeographicLib_1_1PolarStereographic-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +68,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a30ef1a1f906ee389e2a5f7e5fd7d8fa4">Forward</a>(bool northp, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ac2fe4c9524ec35f8d05336555f96e1b1">Forward</a>(bool northp, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a170d21f9c7a2e922c57fc83a44ea3dfa">PolarStereographic</a>(real a, real f, real k0)</td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a01302b8dba43c57e3c3849f94123a157">Reverse</a>(bool northp, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
@@ -61,8 +75,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">SetScale</a>(real lat, real k=real(1))</td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">UPS</a></td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1PolarStereographic.html b/doc/html/classGeographicLib_1_1PolarStereographic.html
index bde0bda..ed35120 100644
--- a/doc/html/classGeographicLib_1_1PolarStereographic.html
+++ b/doc/html/classGeographicLib_1_1PolarStereographic.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::PolarStereographic Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">CentralScale</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -98,8 +112,8 @@ Static Public Attributes</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(),
-                            <a class="code" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">Constants::UPS_k0</a>());
+    <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(),
+                            <a class="code" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">Constants::UPS_k0</a>());
     <span class="comment">// Alternatively:</span>
     <span class="comment">// const PolarStereographic& proj = PolarStereographic::UPS;</span>
     <span class="keywordtype">bool</span> northp = <span class="keyword">true</span>;
@@ -124,9 +138,7 @@ Static Public Attributes</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00033">33</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a170d21f9c7a2e922c57fc83a44ea3dfa"></a><!-- doxytag: member="GeographicLib::PolarStereographic::PolarStereographic" ref="a170d21f9c7a2e922c57fc83a44ea3dfa" args="(real a, real f, real k0)" -->
 <div class="memitem">
 <div class="memproto">
@@ -211,7 +223,7 @@ Static Public Attributes</h2></td></tr>
 
 <p>Definition at line <a class="el" href="PolarStereographic_8cpp_source.html#l00126">126</a> of file <a class="el" href="PolarStereographic_8cpp_source.html">PolarStereographic.cpp</a>.</p>
 
-<p>References <a class="el" href="PolarStereographic_8cpp_source.html#l00072">Forward()</a>, and <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, and <a class="el" href="PolarStereographic_8cpp_source.html#l00072">Forward()</a>.</p>
 
 </div>
 </div>
@@ -288,7 +300,7 @@ Static Public Attributes</h2></td></tr>
 
 <p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
 
-<p>Referenced by <a class="el" href="PolarStereographic_8cpp_source.html#l00126">SetScale()</a>.</p>
+<p>Referenced by <a class="el" href="PolarStereographic_8cpp_source.html#l00126">SetScale()</a>, and <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
 
 </div>
 </div>
@@ -365,6 +377,8 @@ Static Public Attributes</h2></td></tr>
 
 <p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
 
+<p>Referenced by <a class="el" href="UTMUPS_8cpp_source.html#l00124">GeographicLib::UTMUPS::Reverse()</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="ac2fe4c9524ec35f8d05336555f96e1b1"></a><!-- doxytag: member="GeographicLib::PolarStereographic::Forward" ref="ac2fe4c9524ec35f8d05336555f96e1b1" args="(bool northp, real lat, real lon, real &x, real &y) const " -->
@@ -501,26 +515,6 @@ Static Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a969a21c3df38517a081e233ae90c098e"></a><!-- doxytag: member="GeographicLib::PolarStereographic::InverseFlattening" ref="a969a21c3df38517a081e233ae90c098e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::PolarStereographic::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00155">155</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
-
-</div>
-</div>
 <a class="anchor" id="ad6f7bd8a35208d91706ac8c258387e6f"></a><!-- doxytag: member="GeographicLib::PolarStereographic::CentralScale" ref="ad6f7bd8a35208d91706ac8c258387e6f" args="() const " -->
 <div class="memitem">
 <div class="memproto">
@@ -536,7 +530,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>The central scale for the projection. This is the value of <em>k0</em> used in the constructor and is the scale at the pole unless overridden by <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">PolarStereographic::SetScale</a>. </p>
 
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00162">162</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00164">164</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
 
 </div>
 </div>
@@ -553,7 +547,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> with the WGS84 ellipsoid and the UPS scale factor. However, unlike UPS, no false easting or northing is added. </p>
 
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00170">170</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00172">172</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
 
 </div>
 </div>
@@ -562,8 +556,13 @@ Static Public Attributes</h2></td></tr>
 <li><a class="el" href="PolarStereographic_8cpp_source.html">PolarStereographic.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1PolygonArea-members.html b/doc/html/classGeographicLib_1_1PolygonArea-members.html
index 496f811..8910567 100644
--- a/doc/html/classGeographicLib_1_1PolygonArea-members.html
+++ b/doc/html/classGeographicLib_1_1PolygonArea-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,8 +72,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolygonArea.html#a060a1dc499bd079c62f62ed5cad929e5">PolygonArea</a>(const Geodesic &earth, bool polyline=false)</td><td><a class="el" href="classGeographicLib_1_1PolygonArea.html">GeographicLib::PolygonArea</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolygonArea.html#ac46ac5567223b3db2ee11e6c4f72c257">TestCompute</a>(real lat, real lon, bool reverse, bool sign, real &perimeter, real &area) const </td><td><a class="el" href="classGeographicLib_1_1PolygonArea.html">GeographicLib::PolygonArea</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1PolygonArea.html b/doc/html/classGeographicLib_1_1PolygonArea.html
index feaf849..d9664fc 100644
--- a/doc/html/classGeographicLib_1_1PolygonArea.html
+++ b/doc/html/classGeographicLib_1_1PolygonArea.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::PolygonArea Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -95,7 +110,7 @@ Public Member Functions</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+    <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
     <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
     <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> poly(geod);
     poly.AddPoint( 52,  0);     <span class="comment">// London</span>
@@ -112,8 +127,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00050">50</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+</pre></div><p><a href="Planimeter.1.html">Planimeter</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a060a1dc499bd079c62f62ed5cad929e5"></a><!-- doxytag: member="GeographicLib::PolygonArea::PolygonArea" ref="a060a1dc499bd079c62f62ed5cad929e5" args="(const Geodesic &earth, bool polyline=false)" -->
 <div class="memitem">
@@ -148,7 +162,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00095">95</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00098">98</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -168,7 +182,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <p>Clear <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a>, allowing a new polygon to be started. </p>
 
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00107">107</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00110">110</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
 
 <p>Referenced by <a class="el" href="Planimeter_8cpp_source.html#l00037">main()</a>.</p>
 
@@ -350,7 +364,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00178">178</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00181">181</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -369,7 +383,7 @@ Public Member Functions</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00184">184</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00187">187</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
 
 </div>
 </div>
@@ -378,8 +392,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="PolygonArea_8cpp_source.html">PolygonArea.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine-members.html b/doc/html/classGeographicLib_1_1SphericalEngine-members.html
index 3bb18af..2af8583 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -49,17 +64,22 @@
 </div>
 <div class="contents">
 This is the complete list of members for <a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a>, including all inherited members.<table>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">Circle</a>(const coeff c[], const real f[], real p, real z, real a)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">Circle</a>(const coeff c[], const real f[], real p, real z, real a)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a0c689dbf7b6bf2fb4cffb109085b1d3b">CircularEngine</a> class</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [friend]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#ab3fb8f933adb257df6b7537268d55a75">ClearRootTable</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">FULL</a> enum value</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949f">normalization</a> enum name</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7fac63262c0a8bb18aee8c962a08d429">RootTable</a>(int N)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SCHMIDT</a> enum value</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">Value</a>(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">Value</a>(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine.html b/doc/html/classGeographicLib_1_1SphericalEngine.html
index feebf10..ae8fa26 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::SphericalEngine Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,9 +88,9 @@ Public Types</h2></td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
 <tr><td class="memTemplParams" colspan="2">template<bool gradp, normalization norm, int L> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">Value</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real x, real y, real z, real a, real &gradx, [...]
+<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">Value</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real x, real y, real z, real a, real &gradx, [...]
 <tr><td class="memTemplParams" colspan="2">template<bool gradp, normalization norm, int L> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">Circle</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real p, real z, real a)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">Circle</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real p, real z, real a)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7fac63262c0a8bb18aee8c962a08d429">RootTable</a> (int N)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#ab3fb8f933adb257df6b7537268d55a75">ClearRootTable</a> ()</td></tr>
 <tr><td colspan="2"><h2><a name="friends"></a>
@@ -106,12 +121,12 @@ Friends</h2></td></tr>
     vector<double> C(ca, ca + (N + 1) * (N + 2) / 2);
     <span class="keywordtype">double</span> sa[] = {6, 5, 4, 3, 2, 1}; <span class="comment">// sine coefficients</span>
     vector<double> S(sa, sa + N * (N + 1) / 2);
-    <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> c[1];
+    <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff c[1];
     c[0] = <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>(C, S, N);
     <span class="keywordtype">double</span> f[] = {1};
     <span class="keywordtype">double</span> x = 2, y = 3, z = 1, a = 1;
     <span class="keywordtype">double</span> v, vx, vy, vz;
-    v = SphericalEngine::Value<true, SphericalEngine::FULL, 1>
+    v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 1>
       (c, f, x, y, z, a, vx, vy, vz);
     cout << v << <span class="stringliteral">" "</span> << vx << <span class="stringliteral">" "</span> << vy << <span class="stringliteral">" "</span> << vz << <span class="stringliteral">"\n"</span>;
   }
@@ -121,9 +136,7 @@ Friends</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00041">41</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="a5332d09191e018cbddc568c1fc71949f"></a><!-- doxytag: member="GeographicLib::SphericalEngine::normalization" ref="a5332d09191e018cbddc568c1fc71949f" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -151,7 +164,7 @@ Friends</h2></td></tr>
 </div>
 </div>
 <hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a987cbe2cdb67410174a6e9594da92573"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Value" ref="a987cbe2cdb67410174a6e9594da92573" args="(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)" -->
+<a class="anchor" id="a1157f59596dd15bf0a21b6a7fb99630b"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Value" ref="a1157f59596dd15bf0a21b6a7fb99630b" args="(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -252,7 +265,7 @@ template<bool gradp, SphericalEngine::normalization norm, int L> </div>
 
 </div>
 </div>
-<a class="anchor" id="a7733e7913671b573042a2fcf8db089dd"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Circle" ref="a7733e7913671b573042a2fcf8db089dd" args="(const coeff c[], const real f[], real p, real z, real a)" -->
+<a class="anchor" id="af6a5fa63535d47cf528b733bb6a97901"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Circle" ref="af6a5fa63535d47cf528b733bb6a97901" args="(const coeff c[], const real f[], real p, real z, real a)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -316,11 +329,11 @@ template<bool gradp, SphericalEngine::normalization norm, int L> </div>
   </dd>
 </dl>
 <dl class="return"><dt><b>Returns:</b></dt><dd>the <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> object.</dd></dl>
-<p>If you need to evaluate the spherical harmonic sum for several points with constant <em>f</em>, <em>p</em> = sqrt(<em>x</em><sup>2</sup> + <em>y</em><sup>2</sup>), <em>z</em>, and <em>a</em>, it is more efficient to construct call <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">SphericalEngine::Circle</a> to give a <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngin [...]
+<p>If you need to evaluate the spherical harmonic sum for several points with constant <em>f</em>, <em>p</em> = sqrt(<em>x</em><sup>2</sup> + <em>y</em><sup>2</sup>), <em>z</em>, and <em>a</em>, it is more efficient to construct call <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">SphericalEngine::Circle</a> to give a <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngin [...]
 
 <p>Definition at line <a class="el" href="SphericalEngine_8cpp_source.html#l00298">298</a> of file <a class="el" href="SphericalEngine_8cpp_source.html">SphericalEngine.cpp</a>.</p>
 
-<p>References <a class="el" href="SphericalEngine_8hpp_source.html#l00189">GeographicLib::SphericalEngine::coeff::Cv()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00173">GeographicLib::SphericalEngine::coeff::mmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00169">GeographicLib::SphericalEngine::coeff::nmx()</a>, <a class="el" href="Constants_8hpp_source.html#l00025">STATIC_ASSERT</a>, and <a class="el" href="SphericalEngine_8hpp_source.html#l00196">Geograp [...]
+<p>References <a class="el" href="Constants_8hpp_source.html#l00025">STATIC_ASSERT</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00169">GeographicLib::SphericalEngine::coeff::nmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00173">GeographicLib::SphericalEngine::coeff::mmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00189">GeographicLib::SphericalEngine::coeff::Cv()</a>, and <a class="el" href="SphericalEngine_8hpp_source.html#l00196">Geograp [...]
 
 </div>
 </div>
@@ -395,8 +408,13 @@ template<bool gradp, SphericalEngine::normalization norm, int L> </div>
 <li><a class="el" href="SphericalEngine_8cpp_source.html">SphericalEngine.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html
index 418b32e..fd2fb53 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,8 +80,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">Sv</a>(int k) const </td><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">GeographicLib::SphericalEngine::coeff</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">Sv</a>(int k, int n, int m, real f) const </td><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">GeographicLib::SphericalEngine::coeff</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html
index 59e78b9..6dce922 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::SphericalEngine::coeff Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -81,10 +96,8 @@ Static Public Member Functions</h2></td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Package up coefficients for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. </p>
-<p>This packages up the <em>C</em>, <em>S</em> coefficients and information about how the coefficients are stored into a single structure. This allows a vector of type <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> to be passed to <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">SphericalEngine::Value</a>. This class also includes func [...]
+<p>This packages up the <em>C</em>, <em>S</em> coefficients and information about how the coefficients are stored into a single structure. This allows a vector of type <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> to be passed to <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">SphericalEngine::Value</a>. This class also includes func [...]
 <p>The storage layout of the coefficients is documented in <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> and <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#adb71d28aa60a813ca3384f9c58ef8fa1">SphericalHarmonic::SphericalHarmonic</a>. </p>
-
-<p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00092">92</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a98ee0fd797434667a8cb5093d7644af4"></a><!-- doxytag: member="GeographicLib::SphericalEngine::coeff::coeff" ref="a98ee0fd797434667a8cb5093d7644af4" args="()" -->
 <div class="memitem">
@@ -252,7 +265,7 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00169">169</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, and <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>.</p>
+<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>, and <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>.</p>
 
 </div>
 </div>
@@ -273,7 +286,7 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00173">173</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, and <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>.</p>
+<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>, and <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>.</p>
 
 </div>
 </div>
@@ -619,8 +632,13 @@ Static Public Member Functions</h2></td></tr>
 <li><a class="el" href="SphericalEngine_8cpp_source.html">SphericalEngine.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html b/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html
index 31130a9..49ddb23 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,8 +75,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2ed62c0ad8fb1ab36d5a331a3f33c3d7">SphericalHarmonic</a>(const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx, real a, unsigned norm=FULL)</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html">GeographicLib::SphericalHarmonic</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a6d97388f273d1511a8191d812e9bde3e">SphericalHarmonic</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html">GeographicLib::SphericalHarmonic</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic.html b/doc/html/classGeographicLib_1_1SphericalHarmonic.html
index cba0620..2b80024 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::SphericalHarmonic Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -136,9 +151,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="SphericalHarmonic_8hpp_source.html#l00066">66</a> of file <a class="el" href="SphericalHarmonic_8hpp_source.html">SphericalHarmonic.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="a889791c67edc32865996842c600104eb"></a><!-- doxytag: member="GeographicLib::SphericalHarmonic::normalization" ref="a889791c67edc32865996842c600104eb" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -533,8 +546,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="SphericalHarmonic_8hpp_source.html">SphericalHarmonic.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html b/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html
index ff1fca3..b9d7c7d 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,8 +76,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#aca472a143f7e000e232f4c261550b626">SphericalHarmonic1</a>(const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx, const std::vector< real > &C1, const std::vector< real > &S1, int N1, int nmx1, int mmx1, real a, unsigned norm=FULL)</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">GeographicLib::Spherical [...]
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#aa976378e6eae1e85ce04976b631ccb5f">SphericalHarmonic1</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">GeographicLib::SphericalHarmonic1</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic1.html b/doc/html/classGeographicLib_1_1SphericalHarmonic1.html
index f0b0fe8..c9305cf 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic1.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic1.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::SphericalHarmonic1 Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -114,9 +129,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="SphericalHarmonic1_8hpp_source.html#l00032">32</a> of file <a class="el" href="SphericalHarmonic1_8hpp_source.html">SphericalHarmonic1.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="ac4aaa81e0f753894ecef173c4d667916"></a><!-- doxytag: member="GeographicLib::SphericalHarmonic1::normalization" ref="ac4aaa81e0f753894ecef173c4d667916" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -578,8 +591,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="SphericalHarmonic1_8hpp_source.html">SphericalHarmonic1.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html b/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html
index 1b59442..fb46ed1 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -62,8 +77,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a19300de2d629c014883026bf0042b6f0">SphericalHarmonic2</a>(const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx, const std::vector< real > &C1, const std::vector< real > &S1, int N1, int nmx1, int mmx1, const std::vector< real > &C2, const std::vector< real > &S2, int N2, int nmx2, int mmx2, real a, unsigned  [...]
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a2fad42164df6175bc376e2f78e3e0c5a">SphericalHarmonic2</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html">GeographicLib::SphericalHarmonic2</a></td><td><code> [inline]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic2.html b/doc/html/classGeographicLib_1_1SphericalHarmonic2.html
index e1ca40b..f2b8ef1 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic2.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic2.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::SphericalHarmonic2 Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -119,9 +134,7 @@ Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="SphericalHarmonic2_8hpp_source.html#l00033">33</a> of file <a class="el" href="SphericalHarmonic2_8hpp_source.html">SphericalHarmonic2.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="adbdc59ce4e6f1e4ce0fc7169c760f8be"></a><!-- doxytag: member="GeographicLib::SphericalHarmonic2::normalization" ref="adbdc59ce4e6f1e4ce0fc7169c760f8be" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -677,8 +690,13 @@ Public Member Functions</h2></td></tr>
 <li><a class="el" href="SphericalHarmonic2_8hpp_source.html">SphericalHarmonic2.hpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercator-members.html b/doc/html/classGeographicLib_1_1TransverseMercator-members.html
index 662b25f..afdbe5b 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercator-members.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercator-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,15 +68,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#af689c212234963734354347d56bf12f6">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">Reverse</a>(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#ac3bd58646dd6c06731a9baadee11f7e5">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a9a4074c9d0ea35f0ebfc9c9f73bd3183">TransverseMercator</a>(real a, real f, real k0)</td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">UTM</a></td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercator.html b/doc/html/classGeographicLib_1_1TransverseMercator.html
index f0492a8..7187db5 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercator.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercator.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::TransverseMercator Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">CentralScale</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -85,7 +99,7 @@ Static Public Attributes</h2></td></tr>
 <p>Krüger's method has been extended from 4th to 6th order. The maximum error is 5 nm (5 nanometers), ground distance, for all positions within 35 degrees of the central meridian. The error in the convergence is 2e-15" and the relative error in the scale is 6e-12%%. See Sec. 4 of <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a> for details. The speed penalty in going to 6th order is only about 1%. <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" ti [...]
 <p>The ellipsoid parameters and the central scale are set in the constructor. The central meridian (which is a trivial shift of the longitude) is specified as the <em>lon0</em> argument of the <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">TransverseMercator::Forward</a> and <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">TransverseMercator::Reverse</a> functions. The latitude of or [...]
 <p>See <a class="el" href="TransverseMercator_8cpp.html" title="Implementation for GeographicLib::TransverseMercator class.">TransverseMercator.cpp</a> for more information on the implementation.</p>
-<p>See <a class="el" href="transversemercator.html">Transverse Mercator Projection</a> for a discussion of this projection.</p>
+<p>See <a class="el" href="transversemercator.html">Transverse Mercator projection</a> for a discussion of this projection.</p>
 <p>Example of use: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::TransverseMercator class</span>
 <span class="comment">// $Id: c01651412c934220e2293c344258773ac3d7131c $</span>
@@ -101,8 +115,8 @@ Static Public Attributes</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(),
-                            <a class="code" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">Constants::UTM_k0</a>());
+    <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(),
+                            <a class="code" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">Constants::UTM_k0</a>());
     <span class="comment">// Alternatively: const TransverseMercator& proj = TransverseMercator::UTM;</span>
     <span class="keywordtype">double</span> lon0 = -75;          <span class="comment">// Central meridian for UTM zone 18</span>
     {
@@ -126,8 +140,7 @@ Static Public Attributes</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00075">75</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+</pre></div><p><a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a9a4074c9d0ea35f0ebfc9c9f73bd3183"></a><!-- doxytag: member="GeographicLib::TransverseMercator::TransverseMercator" ref="a9a4074c9d0ea35f0ebfc9c9f73bd3183" args="(real a, real f, real k0)" -->
 <div class="memitem">
@@ -248,7 +261,9 @@ Static Public Attributes</h2></td></tr>
 
 <p>Definition at line <a class="el" href="TransverseMercator_8cpp_source.html#l00217">217</a> of file <a class="el" href="TransverseMercator_8cpp_source.html">TransverseMercator.cpp</a>.</p>
 
-<p>References <a class="el" href="Math_8hpp_source.html#l00256">GeographicLib::Math::asinh()</a>, <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="Math_8hpp_source.html#l00256">GeographicLib::Math::asinh()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+
+<p>Referenced by <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
 
 </div>
 </div>
@@ -325,6 +340,8 @@ Static Public Attributes</h2></td></tr>
 
 <p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
 
+<p>Referenced by <a class="el" href="UTMUPS_8cpp_source.html#l00124">GeographicLib::UTMUPS::Reverse()</a>.</p>
+
 </div>
 </div>
 <a class="anchor" id="af689c212234963734354347d56bf12f6"></a><!-- doxytag: member="GeographicLib::TransverseMercator::Forward" ref="af689c212234963734354347d56bf12f6" args="(real lon0, real lat, real lon, real &x, real &y) const " -->
@@ -371,7 +388,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">TransverseMercator::Forward</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00149">149</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00153">153</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 
 </div>
 </div>
@@ -419,7 +436,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">TransverseMercator::Reverse</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00158">158</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00162">162</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 
 </div>
 </div>
@@ -438,7 +455,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00171">171</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00175">175</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 
 </div>
 </div>
@@ -457,27 +474,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00177">177</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5b5a56027507ae2aa08ab5b43a4bddc5"></a><!-- doxytag: member="GeographicLib::TransverseMercator::InverseFlattening" ref="a5b5a56027507ae2aa08ab5b43a4bddc5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::TransverseMercator::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00183">183</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00181">181</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 
 </div>
 </div>
@@ -496,7 +493,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>k0</em> central scale for the projection. This is the value of <em>k0</em> used in the constructor and is the scale on the central meridian. </dd></dl>
 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00189">189</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00195">195</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 
 </div>
 </div>
@@ -513,7 +510,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> with the WGS84 ellipsoid and the UTM scale factor. However, unlike UTM, no false easting or northing is added. </p>
 
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00197">197</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00203">203</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
 
 </div>
 </div>
@@ -522,8 +519,13 @@ Static Public Attributes</h2></td></tr>
 <li><a class="el" href="TransverseMercator_8cpp_source.html">TransverseMercator.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html b/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html
index b9995fc..5f85f18 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,15 +68,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a39c294a3389af325c41a8de51fd9228a">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a350070780708de5a622d4f4c4757104c">Reverse</a>(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a56ff2f371d59e2ca0da8644571706169">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a72ffcc89eee6f30a6d1f4d061518a6f1">TransverseMercatorExact</a>(real a, real f, real k0, bool extendp=false)</td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">UTM</a></td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercatorExact.html b/doc/html/classGeographicLib_1_1TransverseMercatorExact.html
index e48b079..a50aa85 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercatorExact.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercatorExact.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::TransverseMercatorExact Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,6 @@ Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a> () const   throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">InverseFlattening</a> () const   throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">CentralScale</a> () const   throw ()</td></tr>
 <tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -88,7 +102,7 @@ Static Public Attributes</h2></td></tr>
 <p>The ellipsoid parameters and the central scale are set in the constructor. The central meridian (which is a trivial shift of the longitude) is specified as the <em>lon0</em> argument of the <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">TransverseMercatorExact::Forward</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a350070780708de5a622d4f4c4757104c">TransverseMercatorExact::Reverse</a> functions [...]
 <p>See <a href="http://geographiclib.sourceforge.net/tm-grid.kmz" type="application/vnd.google-earth.kmz">tm-grid.kmz</a>, for an illustration of the transverse Mercator grid in Google Earth.</p>
 <p>See <a class="el" href="TransverseMercatorExact_8cpp.html" title="Implementation for GeographicLib::TransverseMercatorExact class.">TransverseMercatorExact.cpp</a> for more information on the implementation.</p>
-<p>See <a class="el" href="transversemercator.html">Transverse Mercator Projection</a> for a discussion of this projection.</p>
+<p>See <a class="el" href="transversemercator.html">Transverse Mercator projection</a> for a discussion of this projection.</p>
 <p>Example of use: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::TransverseMercatorExact class</span>
 <span class="comment">// $Id: 047cbdcff7135fed1fecf5f50ff2195eda993fcb $</span>
@@ -104,8 +118,8 @@ Static Public Attributes</h2></td></tr>
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
   <span class="keywordflow">try</span> {
-    <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(),
-                                 <a class="code" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">Constants::UTM_k0</a>());
+    <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(),
+                                 <a class="code" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">Constants::UTM_k0</a>());
     <span class="comment">// Alternatively:</span>
     <span class="comment">// const TransverseMercatorExact& proj = TransverseMercatorExact::UTM;</span>
     <span class="keywordtype">double</span> lon0 = -75;          <span class="comment">// Central meridian for UTM zone 18</span>
@@ -130,8 +144,7 @@ Static Public Attributes</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00075">75</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+</pre></div><p><a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>. </p>
 </div><hr/><h2>Constructor & Destructor Documentation</h2>
 <a class="anchor" id="a72ffcc89eee6f30a6d1f4d061518a6f1"></a><!-- doxytag: member="GeographicLib::TransverseMercatorExact::TransverseMercatorExact" ref="a72ffcc89eee6f30a6d1f4d061518a6f1" args="(real a, real f, real k0, bool extendp=false)" -->
 <div class="memitem">
@@ -393,7 +406,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">TransverseMercatorExact::Forward</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00213">213</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00217">217</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 
 </div>
 </div>
@@ -441,7 +454,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a350070780708de5a622d4f4c4757104c">TransverseMercatorExact::Reverse</a> without returning the convergence and scale. </p>
 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00223">223</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00227">227</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 
 </div>
 </div>
@@ -460,7 +473,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00236">236</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00240">240</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 
 </div>
 </div>
@@ -479,27 +492,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00242">242</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9c4df948ed85f96273c04414fc6871df"></a><!-- doxytag: member="GeographicLib::TransverseMercatorExact::InverseFlattening" ref="a9c4df948ed85f96273c04414fc6871df" args="() const " -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::TransverseMercatorExact::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const  throw ()<code> [inline]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00248">248</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00246">246</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 
 </div>
 </div>
@@ -518,7 +511,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <dl class="return"><dt><b>Returns:</b></dt><dd><em>k0</em> central scale for the projection. This is the value of <em>k0</em> used in the constructor and is the scale on the central meridian. </dd></dl>
 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00254">254</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00260">260</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 
 </div>
 </div>
@@ -535,7 +528,7 @@ Static Public Attributes</h2></td></tr>
 <div class="memdoc">
 <p>A global instantiation of <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> with the WGS84 ellipsoid and the UTM scale factor. However, unlike UTM, no false easting or northing is added. </p>
 
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00262">262</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00268">268</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
 
 </div>
 </div>
@@ -544,8 +537,13 @@ Static Public Attributes</h2></td></tr>
 <li><a class="el" href="TransverseMercatorExact_8cpp_source.html">TransverseMercatorExact.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1UTMUPS-members.html b/doc/html/classGeographicLib_1_1UTMUPS-members.html
index 856f70f..d823322 100644
--- a/doc/html/classGeographicLib_1_1UTMUPS-members.html
+++ b/doc/html/classGeographicLib_1_1UTMUPS-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -55,7 +70,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">Forward</a>(real lat, real lon, int &zone, bool &northp, real &x, real &y, real &gamma, real &k, int setzone=STANDARD, bool mgrslimits=false)</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#aa21ec1bc26f691e0a6f2ccc44debe6f0">Forward</a>(real lat, real lon, int &zone, bool &northp, real &x, real &y, int setzone=STANDARD, bool mgrslimits=false)</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">INVALID</a> enum value</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">InverseFlattening</a>()</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d49db77a23917ea1092">MajorRadius</a>()</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">MATCH</a> enum value</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7ac22db7e136b6e06fba7c3c06b5888362">MAXPSEUDOZONE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
@@ -73,8 +87,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">UTMShift</a>()</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7">zonespec</a> enum name</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1UTMUPS.html b/doc/html/classGeographicLib_1_1UTMUPS.html
index 4c40947..f1f8426 100644
--- a/doc/html/classGeographicLib_1_1UTMUPS.html
+++ b/doc/html/classGeographicLib_1_1UTMUPS.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::UTMUPS Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -90,7 +105,6 @@ Static Public Member Functions</h2></td></tr>
 <tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d49db77a23917ea1092">MajorRadius</a> ()  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c55a266777039b8a9d">Flattening</a> ()  throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">InverseFlattening</a> ()  throw ()</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
 <div class="textblock"><p>Convert between Geographic coordinates and UTM/UPS. </p>
@@ -151,9 +165,7 @@ Static Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00063">63</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
 <a class="anchor" id="a0c459615da18cc899a960bdc8c5b11b7"></a><!-- doxytag: member="GeographicLib::UTMUPS::zonespec" ref="a0c459615da18cc899a960bdc8c5b11b7" args="" -->
 <div class="memitem">
 <div class="memproto">
@@ -251,7 +263,7 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="UTMUPS_8cpp_source.html#l00049">49</a> of file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
 
-<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00291">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00299">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
 
 </div>
 </div>
@@ -347,7 +359,9 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="UTMUPS_8cpp_source.html#l00073">73</a> of file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
 
-<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00200">GeographicLib::GeoCoords::Reset()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00291">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
+<p>References <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, and <a class="el" href="PolarStereographic_8cpp_source.html#l00072">GeographicLib::PolarStereographic::Forward()</a>.</p>
+
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00208">GeographicLib::GeoCoords::Reset()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00299">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
 
 </div>
 </div>
@@ -439,7 +453,9 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="UTMUPS_8cpp_source.html#l00124">124</a> of file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
 
-<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00215">GeographicLib::GeoCoords::Reset()</a>.</p>
+<p>References <a class="el" href="TransverseMercator_8cpp_source.html#l00387">GeographicLib::TransverseMercator::Reverse()</a>, and <a class="el" href="PolarStereographic_8cpp_source.html#l00095">GeographicLib::PolarStereographic::Reverse()</a>.</p>
+
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00223">GeographicLib::GeoCoords::Reset()</a>.</p>
 
 </div>
 </div>
@@ -692,7 +708,7 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00295">295</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="MGRS_8hpp_source.html#l00265">GeographicLib::MGRS::MajorRadius()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00430">GeographicLib::GeoCoords::MajorRadius()</a>.</p>
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00459">GeographicLib::GeoCoords::MajorRadius()</a>, and <a class="el" href="MGRS_8hpp_source.html#l00265">GeographicLib::MGRS::MajorRadius()</a>.</p>
 
 </div>
 </div>
@@ -714,29 +730,7 @@ Static Public Member Functions</h2></td></tr>
 
 <p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00304">304</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
 
-<p>Referenced by <a class="el" href="MGRS_8hpp_source.html#l00273">GeographicLib::MGRS::Flattening()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00438">GeographicLib::GeoCoords::Flattening()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3de827995b6327282bfe95fcab99ebb2"></a><!-- doxytag: member="GeographicLib::UTMUPS::InverseFlattening" ref="a3de827995b6327282bfe95fcab99ebb2" args="()" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::UTMUPS::InverseFlattening </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td>  throw ()<code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00311">311</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
-
-<p>Referenced by <a class="el" href="MGRS_8hpp_source.html#l00279">GeographicLib::MGRS::InverseFlattening()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00444">GeographicLib::GeoCoords::InverseFlattening()</a>.</p>
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00467">GeographicLib::GeoCoords::Flattening()</a>, and <a class="el" href="MGRS_8hpp_source.html#l00273">GeographicLib::MGRS::Flattening()</a>.</p>
 
 </div>
 </div>
@@ -745,8 +739,13 @@ Static Public Member Functions</h2></td></tr>
 <li><a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Utility-members.html b/doc/html/classGeographicLib_1_1Utility-members.html
index 4fe9b33..e2f5d5c 100644
--- a/doc/html/classGeographicLib_1_1Utility-members.html
+++ b/doc/html/classGeographicLib_1_1Utility-members.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Member List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -55,18 +70,25 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a0590e044fe0352adc10a58c46fa1e529">day</a>(int y, int m, int d, bool check)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">dow</a>(int y, int m, int d)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a4687c34e55dc7ccc135e31a72402f008">dow</a>(int s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">fract</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">fractionalyear</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">fract</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">fractionalyear</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a9a47fdaaa00a92e9a42035e62bd98faa">lookup</a>(const std::string &s, char c)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">num</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">nummatch</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">num</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">nummatch</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
   <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">ParseLine</a>(const std::string &line, std::string &key, std::string &val)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">readarray</a>(std::istream &str, IntT array[], size_t num)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a3acad0c1faffcd87292776d1cae26290">readarray</a>(std::istream &str, std::vector< IntT > &array)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
-  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">str</a>(T x, int p=-1)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">readarray</a>(std::istream &str, IntT array[], size_t num)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a044796b4fc14a952abec27da27fc20be">readarray</a>(std::istream &str, std::vector< IntT > &array)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">str</a>(T x, int p=-1)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">writearray</a>(std::ostream &str, const IntT array[], size_t num)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+  <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">writearray</a>(std::ostream &str, std::vector< IntT > &array)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
 </table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classGeographicLib_1_1Utility.html b/doc/html/classGeographicLib_1_1Utility.html
index 61f3511..609475b 100644
--- a/doc/html/classGeographicLib_1_1Utility.html
+++ b/doc/html/classGeographicLib_1_1Utility.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib::Utility Class Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,20 +82,24 @@ Static Public Member Functions</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">dow</a> (int y, int m, int d)  throw ()</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a4687c34e55dc7ccc135e31a72402f008">dow</a> (int s)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">fractionalyear</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">fractionalyear</a> (const std::string &s)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">str</a> (T x, int p=-1)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">str</a> (T x, int p=-1)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">num</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">num</a> (const std::string &s)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">nummatch</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">nummatch</a> (const std::string &s)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">fract</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">fract</a> (const std::string &s)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a9a47fdaaa00a92e9a42035e62bd98faa">lookup</a> (const std::string &s, char c)  throw ()</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">readarray</a> (std::istream &str, IntT array[], size_t num)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">readarray</a> (std::istream &str, IntT array[], size_t num)</td></tr>
 <tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a3acad0c1faffcd87292776d1cae26290">readarray</a> (std::istream &str, std::vector< IntT > &array)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a044796b4fc14a952abec27da27fc20be">readarray</a> (std::istream &str, std::vector< IntT > &array)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">writearray</a> (std::ostream &str, const IntT array[], size_t num)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">writearray</a> (std::ostream &str, std::vector< IntT > &array)</td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">ParseLine</a> (const std::string &line, std::string &key, std::string &val)</td></tr>
 </table>
 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
@@ -109,9 +128,7 @@ Static Public Member Functions</h2></td></tr>
   }
   <span class="keywordflow">return</span> 0;
 }
-</pre></div> 
-<p>Definition at line <a class="el" href="Utility_8hpp_source.html#l00030">30</a> of file <a class="el" href="Utility_8hpp_source.html">Utility.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
 <a class="anchor" id="a877a58000a56bc84c354cf42b4b1cd99"></a><!-- doxytag: member="GeographicLib::Utility::day" ref="a877a58000a56bc84c354cf42b4b1cd99" args="(int y, int m=1, int d=1)" -->
 <div class="memitem">
 <div class="memproto">
@@ -388,7 +405,7 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="a6daedff1fb56da7ee149066c1cce106a"></a><!-- doxytag: member="GeographicLib::Utility::fractionalyear" ref="a6daedff1fb56da7ee149066c1cce106a" args="(const std::string &s)" -->
+<a class="anchor" id="a074607cb34326b7109532c8fdd07e38c"></a><!-- doxytag: member="GeographicLib::Utility::fractionalyear" ref="a074607cb34326b7109532c8fdd07e38c" args="(const std::string &s)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -424,7 +441,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="a53fbf616c74bab1cbbc9e8d4c7b6739f"></a><!-- doxytag: member="GeographicLib::Utility::str" ref="a53fbf616c74bab1cbbc9e8d4c7b6739f" args="(T x, int p=-1)" -->
+<a class="anchor" id="ae87a7ae2bee75f724907af9f753f03b7"></a><!-- doxytag: member="GeographicLib::Utility::str" ref="ae87a7ae2bee75f724907af9f753f03b7" args="(T x, int p=-1)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -473,7 +490,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="a8a490ea58d4de4c5a7ce86ab2cda25bd"></a><!-- doxytag: member="GeographicLib::Utility::num" ref="a8a490ea58d4de4c5a7ce86ab2cda25bd" args="(const std::string &s)" -->
+<a class="anchor" id="aa35f1f83c0543558a79b3cf42ddf50c8"></a><!-- doxytag: member="GeographicLib::Utility::num" ref="aa35f1f83c0543558a79b3cf42ddf50c8" args="(const std::string &s)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -508,7 +525,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="a6e8268e5d125846dee7b087dec889825"></a><!-- doxytag: member="GeographicLib::Utility::nummatch" ref="a6e8268e5d125846dee7b087dec889825" args="(const std::string &s)" -->
+<a class="anchor" id="ad0d89bfe63814bab5312306fe3ac2b43"></a><!-- doxytag: member="GeographicLib::Utility::nummatch" ref="ad0d89bfe63814bab5312306fe3ac2b43" args="(const std::string &s)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -543,7 +560,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="ad6fbe8736a470a0acecf191e29f72ceb"></a><!-- doxytag: member="GeographicLib::Utility::fract" ref="ad6fbe8736a470a0acecf191e29f72ceb" args="(const std::string &s)" -->
+<a class="anchor" id="a46b13d9ce2893f7e0fe6e7da093f528f"></a><!-- doxytag: member="GeographicLib::Utility::fract" ref="a46b13d9ce2893f7e0fe6e7da093f528f" args="(const std::string &s)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -617,7 +634,7 @@ template<typename T > </div>
 
 </div>
 </div>
-<a class="anchor" id="ae9208f2d9c37de596ead9af2136e8468"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="ae9208f2d9c37de596ead9af2136e8468" args="(std::istream &str, IntT array[], size_t num)" -->
+<a class="anchor" id="a23e88040ceb60bd3fe28efc04f9119f8"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="a23e88040ceb60bd3fe28efc04f9119f8" args="(std::istream &str, IntT array[], size_t num)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -673,7 +690,7 @@ template<typename ExtT , typename IntT , bool bigendp> </div>
 
 </div>
 </div>
-<a class="anchor" id="a3acad0c1faffcd87292776d1cae26290"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="a3acad0c1faffcd87292776d1cae26290" args="(std::istream &str, std::vector< IntT > &array)" -->
+<a class="anchor" id="a044796b4fc14a952abec27da27fc20be"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="a044796b4fc14a952abec27da27fc20be" args="(std::istream &str, std::vector< IntT > &array)" -->
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
@@ -720,6 +737,109 @@ template<typename ExtT , typename IntT , bool bigendp> </div>
 
 </div>
 </div>
+<a class="anchor" id="a276eb20ace49c5260e1878c7d8aefd31"></a><!-- doxytag: member="GeographicLib::Utility::writearray" ref="a276eb20ace49c5260e1878c7d8aefd31" args="(std::ostream &str, const IntT array[], size_t num)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExtT , typename IntT , bool bigendp> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">static void GeographicLib::Utility::writearray </td>
+          <td>(</td>
+          <td class="paramtype">std::ostream & </td>
+          <td class="paramname"><em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const IntT </td>
+          <td class="paramname"><em>array</em>[], </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>num</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [inline, static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Write data in an array of type IntT as type ExtT to a binary stream. The data in the file is in (bigendp ? big : little)-endian format.</p>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+  <table class="">
+    <tr><td class="paramname">ExtT</td><td>the type of the objects in the binary stream (external). </td></tr>
+    <tr><td class="paramname">IntT</td><td>the type of the objects in the array (internal). </td></tr>
+    <tr><td class="paramname">bigendp</td><td>true if the external storage format is big-endian. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">str</td><td>the output stream for the data of type ExtT (external). </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">array</td><td>the input array of type IntT (internal). </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">num</td><td>the size of the array. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="Utility_8hpp_source.html#l00435">435</a> of file <a class="el" href="Utility_8hpp_source.html">Utility.hpp</a>.</p>
+
+<p>References <a class="el" href="Math_8hpp_source.html#l00099">GeographicLib::Math::bigendian</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0621066e4aa146a2c100802375e70389"></a><!-- doxytag: member="GeographicLib::Utility::writearray" ref="a0621066e4aa146a2c100802375e70389" args="(std::ostream &str, std::vector< IntT > &array)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExtT , typename IntT , bool bigendp> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">static void GeographicLib::Utility::writearray </td>
+          <td>(</td>
+          <td class="paramtype">std::ostream & </td>
+          <td class="paramname"><em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::vector< IntT > & </td>
+          <td class="paramname"><em>array</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [inline, static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Write data in an array of type IntT as type ExtT to a binary stream. The data in the file is in (bigendp ? big : little)-endian format.</p>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+  <table class="">
+    <tr><td class="paramname">ExtT</td><td>the type of the objects in the binary stream (external). </td></tr>
+    <tr><td class="paramname">IntT</td><td>the type of the objects in the array (internal). </td></tr>
+    <tr><td class="paramname">bigendp</td><td>true if the external storage format is big-endian. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[out]</td><td class="paramname">str</td><td>the output stream for the data of type ExtT (external). </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">array</td><td>the input vector of type IntT (internal). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="Utility_8hpp_source.html#l00476">476</a> of file <a class="el" href="Utility_8hpp_source.html">Utility.hpp</a>.</p>
+
+</div>
+</div>
 <a class="anchor" id="a96252f445a912b77517bff04d4d6ea74"></a><!-- doxytag: member="GeographicLib::Utility::ParseLine" ref="a96252f445a912b77517bff04d4d6ea74" args="(const std::string &line, std::string &key, std::string &val)" -->
 <div class="memitem">
 <div class="memproto">
@@ -771,8 +891,13 @@ template<typename ExtT , typename IntT , bool bigendp> </div>
 <li><a class="el" href="Utility_8cpp_source.html">Utility.cpp</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/classes.html b/doc/html/classes.html
index bba578d..d70c8b9 100644
--- a/doc/html/classes.html
+++ b/doc/html/classes.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Index</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -43,24 +58,45 @@
 </div>
 <div class="contents">
 <div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> |& [...]
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  A  </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1DMS.html">DMS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">Gnomonic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1MGRS.html">MGRS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a cla [...]
-</td><td><a class="el" href="classGeographicLib_1_1GravityCircle.html">GravityCircle</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  N  </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">SphericalHarmonic1</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td></tr><tr><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">AlbersEqualArea</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html">EllipticFunction</a> (<a class="el" href="nam [...]
-</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table>
-</td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table>
-</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  T  </div></td></tr></table>
-</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">Geocentric</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">LambertConformalConic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1OSGB.html">OSGB</a> (<a class="el" href="namespaceGeographicLib.html">GeographicL [...]
-</td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">TransverseMercatorExact</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td></tr><tr><td><a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">Geodesic</a> (<a class="el" href="namespaceGe [...]
-</td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">PolarStereographic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  U  </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">SphericalEngine::coeff</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeodesicLine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html">MagneticCircle</a> (<a class="el" href="nam [...]
-</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">UTMUPS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  D  </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1Geoid.html">Geoid</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1Math.html">Math</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">SphericalEngine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)  &#1 [...]
+<table style="margin: 10px;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  A  </div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  E  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1GravityModel.html">GravityModel</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  T  </div></td></tr></table>
+</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table>
+</td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1EllipticFunction.html">EllipticFunction</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1OSGB.html">OSGB</a> (<a class="el" href="namespaceG [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">AlbersEqualArea</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  G  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">LambertConformalConic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  P  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">TransverseMercatorExact</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">AzimuthalEquidistant</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1LocalCartesian.html">LocalCartesian</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpad [...]
+</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1Geocentric.html">Geocentric</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  M  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1PolarStereographic.html">PolarStereographic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeoCoords</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1PolygonArea.html">PolygonArea</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1Utility.html">Utility</a> (<a class="el" href="namespaceGeographi [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">CassiniSoldner</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1Geodesic.html">Geodesic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1MagneticCircle.html">MagneticCircle</a> (<a class="el" href=" [...]
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1UTMUPS.html">UTMUPS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeodesicLine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1MagneticModel.html">MagneticModel</a> (<a class="el"  [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">SphericalEngine::coeff</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1GeographicErr.html">GeographicErr</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1Math.html">Math</a> (<a class="el [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1Constants.html">Constants</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1Geoid.html">Geoid</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1MGRS.html">MGRS</a> (<a class="el" href="namespaceGeographicLib.html">Geograp [...]
+<tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  D  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1Gnomonic.html">Gnomonic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  N  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">SphericalHarmonic1</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1GravityCircle.html">GravityCircle</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td valign="top"><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html">SphericalHarmonic2</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1DMS.html">DMS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td></td><td valign="top"><a class="el" href="classGeographicLib_1_1NormalGravity.html">NormalGravity</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)   </td><td></td><td></td></tr>
+<tr><td></td><td></td><td></td><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> |& [...]
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html b/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html
index 03741a6..c7cc9fc 100644
--- a/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html
+++ b/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: src/ Directory Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,149 +60,98 @@
 <tr><td colspan="2"><h2><a name="files"></a>
 Files</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8cpp.html">AlbersEqualArea.cpp</a> <a href="AlbersEqualArea_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8cpp.html">AzimuthalEquidistant.cpp</a> <a href="AzimuthalEquidistant_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8cpp.html">CassiniSoldner.cpp</a> <a href="CassiniSoldner_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8cpp.html">CircularEngine.cpp</a> <a href="CircularEngine_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8cpp.html">DMS.cpp</a> <a href="DMS_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8cpp.html">EllipticFunction.cpp</a> <a href="EllipticFunction_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8cpp.html">Geocentric.cpp</a> <a href="Geocentric_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8cpp.html">GeoCoords.cpp</a> <a href="GeoCoords_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8cpp.html">Geodesic.cpp</a> <a href="Geodesic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8cpp.html">GeodesicLine.cpp</a> <a href="GeodesicLine_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html">Geoid.cpp</a> <a href="Geoid_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8cpp.html">Gnomonic.cpp</a> <a href="Gnomonic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8cpp.html">GravityCircle.cpp</a> <a href="GravityCircle_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html">GravityModel.cpp</a> <a href="GravityModel_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8cpp.html">LambertConformalConic.cpp</a> <a href="LambertConformalConic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8cpp.html">LocalCartesian.cpp</a> <a href="LocalCartesian_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8cpp.html">MagneticCircle.cpp</a> <a href="MagneticCircle_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html">MagneticModel.cpp</a> <a href="MagneticModel_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8cpp.html">MGRS.cpp</a> <a href="MGRS_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8cpp.html">NormalGravity.cpp</a> <a href="NormalGravity_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8cpp.html">OSGB.cpp</a> <a href="OSGB_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8cpp.html">PolarStereographic.cpp</a> <a href="PolarStereographic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8cpp.html">PolygonArea.cpp</a> <a href="PolygonArea_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8cpp.html">SphericalEngine.cpp</a> <a href="SphericalEngine_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8cpp.html">TransverseMercator.cpp</a> <a href="TransverseMercator_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8cpp.html">TransverseMercatorExact.cpp</a> <a href="TransverseMercatorExact_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8cpp.html">Utility.cpp</a> <a href="Utility_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8cpp.html">UTMUPS.cpp</a> <a href="UTMUPS_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
 <br/></td></tr>
-</p>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/dir_27ad12676aedce3065ab152db424ea04.html b/doc/html/dir_27ad12676aedce3065ab152db424ea04.html
index cc978b4..d493d15 100644
--- a/doc/html/dir_27ad12676aedce3065ab152db424ea04.html
+++ b/doc/html/dir_27ad12676aedce3065ab152db424ea04.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: tools/ Directory Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,59 +60,44 @@
 <tr><td colspan="2"><h2><a name="files"></a>
 Files</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="CartConvert_8cpp.html">CartConvert.cpp</a> <a href="CartConvert_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodetic to cartesian coordinate conversions. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodetic to cartesian coordinate conversions. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="ConicProj_8cpp.html">ConicProj.cpp</a> <a href="ConicProj_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for conical projections. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for conical projections. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoConvert_8cpp.html">GeoConvert.cpp</a> <a href="GeoConvert_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geographic coordinate conversions. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geographic coordinate conversions. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html">Geod.cpp</a> <a href="Geod_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic calculations. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic calculations. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicProj_8cpp.html">GeodesicProj.cpp</a> <a href="GeodesicProj_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic projections. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic projections. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoidEval_8cpp.html">GeoidEval.cpp</a> <a href="GeoidEval_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating geoid heights. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating geoid heights. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Gravity_8cpp.html">Gravity.cpp</a> <a href="Gravity_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating gravity fields. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating gravity fields. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticField_8cpp.html">MagneticField.cpp</a> <a href="MagneticField_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating magnetic fields. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating magnetic fields. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Planimeter_8cpp.html">Planimeter.cpp</a> <a href="Planimeter_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for measuring the area of geodesic polygons. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for measuring the area of geodesic polygons. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorProj_8cpp.html">TransverseMercatorProj.cpp</a> <a href="TransverseMercatorProj_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for transverse Mercator projections. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for transverse Mercator projections. </p>
 <br/></td></tr>
-</p>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html b/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html
index 76d0eb4..cbbe5f9 100644
--- a/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html
+++ b/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: include/ Directory Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -47,8 +62,13 @@ Directories</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b4d36717c8020107727c093197410e9d.html">GeographicLib</a></td></tr>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/dir_b4d36717c8020107727c093197410e9d.html b/doc/html/dir_b4d36717c8020107727c093197410e9d.html
index 535c2ba..de20d16 100644
--- a/doc/html/dir_b4d36717c8020107727c093197410e9d.html
+++ b/doc/html/dir_b4d36717c8020107727c093197410e9d.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: include/GeographicLib/ Directory Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -46,179 +61,116 @@
 <tr><td colspan="2"><h2><a name="files"></a>
 Files</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Accumulator_8hpp.html">Accumulator.hpp</a> <a href="Accumulator_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">GeographicLib::Accumulator</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">GeographicLib::Accumulator</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8hpp.html">AlbersEqualArea.hpp</a> <a href="AlbersEqualArea_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8hpp.html">AzimuthalEquidistant.hpp</a> <a href="AzimuthalEquidistant_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8hpp.html">CassiniSoldner.hpp</a> <a href="CassiniSoldner_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8hpp.html">CircularEngine.hpp</a> <a href="CircularEngine_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html">Constants.hpp</a> <a href="Constants_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">GeographicLib::Constants</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">GeographicLib::Constants</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8hpp.html">DMS.hpp</a> <a href="DMS_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8hpp.html">EllipticFunction.hpp</a> <a href="EllipticFunction_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8hpp.html">Geocentric.hpp</a> <a href="Geocentric_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8hpp.html">GeoCoords.hpp</a> <a href="GeoCoords_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html">Geodesic.hpp</a> <a href="Geodesic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8hpp.html">GeodesicLine.hpp</a> <a href="GeodesicLine_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html">Geoid.hpp</a> <a href="Geoid_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8hpp.html">Gnomonic.hpp</a> <a href="Gnomonic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8hpp.html">GravityCircle.hpp</a> <a href="GravityCircle_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8hpp.html">GravityModel.hpp</a> <a href="GravityModel_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8hpp.html">LambertConformalConic.hpp</a> <a href="LambertConformalConic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8hpp.html">LocalCartesian.hpp</a> <a href="LocalCartesian_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8hpp.html">MagneticCircle.hpp</a> <a href="MagneticCircle_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8hpp.html">MagneticModel.hpp</a> <a href="MagneticModel_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html">Math.hpp</a> <a href="Math_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8hpp.html">MGRS.hpp</a> <a href="MGRS_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8hpp.html">NormalGravity.hpp</a> <a href="NormalGravity_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8hpp.html">OSGB.hpp</a> <a href="OSGB_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8hpp.html">PolarStereographic.hpp</a> <a href="PolarStereographic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8hpp.html">PolygonArea.hpp</a> <a href="PolygonArea_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8hpp.html">SphericalEngine.hpp</a> <a href="SphericalEngine_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic_8hpp.html">SphericalHarmonic.hpp</a> <a href="SphericalHarmonic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">GeographicLib::SphericalHarmonic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">GeographicLib::SphericalHarmonic</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic1_8hpp.html">SphericalHarmonic1.hpp</a> <a href="SphericalHarmonic1_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">GeographicLib::SphericalHarmonic1</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">GeographicLib::SphericalHarmonic1</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic2_8hpp.html">SphericalHarmonic2.hpp</a> <a href="SphericalHarmonic2_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">GeographicLib::SphericalHarmonic2</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">GeographicLib::SphericalHarmonic2</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html">TransverseMercator.hpp</a> <a href="TransverseMercator_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8hpp.html">TransverseMercatorExact.hpp</a> <a href="TransverseMercatorExact_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8hpp.html">Utility.hpp</a> <a href="Utility_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
 <br/></td></tr>
-</p>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8hpp.html">UTMUPS.hpp</a> <a href="UTMUPS_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
 <br/></td></tr>
-</p>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/dirs.html b/doc/html/dirs.html
index a444a6e..7114f05 100644
--- a/doc/html/dirs.html
+++ b/doc/html/dirs.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Directories</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,8 +60,13 @@
 <li><a class="el" href="dir_27ad12676aedce3065ab152db424ea04.html">tools</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
index 74445fe..22c7b5c 100644
--- a/doc/html/doxygen.css
+++ b/doc/html/doxygen.css
@@ -72,8 +72,6 @@ div.qindex, div.navtab{
 	background-color: #EBEFF6;
 	border: 1px solid #A3B4D7;
 	text-align: center;
-	margin: 2px;
-	padding: 2px;
 }
 
 div.qindex, div.navpath {
@@ -183,15 +181,15 @@ div.groupText {
 }
 
 body {
-	background: white;
+	background-color: white;
 	color: black;
         margin: 0;
 }
 
 div.contents {
 	margin-top: 10px;
-	margin-left: 10px;
-	margin-right: 5px;
+	margin-left: 8px;
+	margin-right: 8px;
 }
 
 td.indexkey {
@@ -414,7 +412,7 @@ table.memberdecls {
         margin-left: 6px;
 }
 
-.memproto {
+.memproto, dl.reflist dt {
         border-top: 1px solid #A8B8D9;
         border-left: 1px solid #A8B8D9;
         border-right: 1px solid #A8B8D9;
@@ -440,7 +438,7 @@ table.memberdecls {
 
 }
 
-.memdoc {
+.memdoc, dl.reflist dd {
         border-bottom: 1px solid #A8B8D9;      
         border-left: 1px solid #A8B8D9;      
         border-right: 1px solid #A8B8D9; 
@@ -463,6 +461,15 @@ table.memberdecls {
         background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
 }
 
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
 .paramkey {
 	text-align: right;
 }
@@ -622,6 +629,58 @@ table.doxtable th {
 	text-align:left;
 }
 
+table.fieldtable {
+        width: 100%;
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        width: 100%;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
 .tabsearch {
 	top: 0px;
 	left: 10px;
@@ -701,6 +760,7 @@ div.summary a
 
 div.ingroups
 {
+	margin-left: 5px;
 	font-size: 8pt;
 	padding-left: 5px;
 	width: 50%;
@@ -723,7 +783,7 @@ div.header
 
 div.headertitle
 {
-	padding: 5px 5px 5px 10px;
+	padding: 5px 5px 5px 7px;
 }
 
 dl
@@ -833,3 +893,54 @@ dl.bug
 	font-weight: bold;
 }
 
+div.zoom
+{
+	border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+ at media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+  pre.fragment
+  {
+    overflow: visible;
+    text-wrap: unrestricted;
+    white-space: -moz-pre-wrap; /* Moz */
+    white-space: -pre-wrap; /* Opera 4-6 */
+    white-space: -o-pre-wrap; /* Opera 7 */
+    white-space: pre-wrap; /* CSS3  */
+    word-wrap: break-word; /* IE 5.5+ */
+  }
+}
+
diff --git a/doc/html/files.html b/doc/html/files.html
index 97b3271..653820e 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: File List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -117,8 +132,13 @@
   <tr><td class="indexkey"><a class="el" href="UTMUPS_8hpp.html">UTMUPS.hpp</a> <a href="UTMUPS_8hpp_source.html">[code]</a></td><td class="indexvalue">Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class </td></tr>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions.html b/doc/html/functions.html
index edd8285..0ba75ec 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,7 +95,7 @@
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>Accumulator()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">GeographicLib::Accumulator</a>
 </li>
 <li>acre()
 : <a class="el" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">GeographicLib::Constants</a>
@@ -138,10 +153,10 @@
 , <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">GeographicLib::Geodesic</a>
 </li>
 <li>asinh()
-: <a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">GeographicLib::Math</a>
 </li>
 <li>atanh()
-: <a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">GeographicLib::Math</a>
 </li>
 <li>AZIMUTH
 : <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca654b16d956cdd16a70605a6b54a1228e">GeographicLib::GeodesicLine</a>
@@ -162,8 +177,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html
index 7f2118b..e8b6664 100644
--- a/doc/html/functions_0x62.html
+++ b/doc/html/functions_0x62.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,8 +99,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html
index 50528fa..67160a9 100644
--- a/doc/html/functions_0x63.html
+++ b/doc/html/functions_0x63.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -111,7 +126,7 @@
 : <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">GeographicLib::CassiniSoldner</a>
 </li>
 <li>cbrt()
-: <a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">GeographicLib::Math</a>
 </li>
 <li>CentralScale()
 : <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">GeographicLib::AlbersEqualArea</a>
@@ -127,7 +142,7 @@
 <li>Circle()
 : <a class="el" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">GeographicLib::GravityModel</a>
 , <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">GeographicLib::MagneticModel</a>
-, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">GeographicLib::SphericalEngine</a>
+, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">GeographicLib::SphericalEngine</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2b2b2ad35bba090a4956693ba5ef0f32">GeographicLib::SphericalHarmonic</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a32dd4989c40181939d667298681625f6">GeographicLib::SphericalHarmonic1</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a3aa683a43a8e9232a16390b09c6be920">GeographicLib::SphericalHarmonic2</a>
@@ -183,8 +198,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html
index 70ba6ce..9e8a192 100644
--- a/doc/html/functions_0x64.html
+++ b/doc/html/functions_0x64.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -99,9 +114,6 @@
 <li>DecodeAzimuth()
 : <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS</a>
 </li>
-<li>DecodeFraction()
-: <a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">GeographicLib::DMS</a>
-</li>
 <li>DecodeLatLon()
 : <a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">GeographicLib::DMS</a>
 </li>
@@ -126,20 +138,20 @@
 <li>DefaultMagneticPath()
 : <a class="el" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">GeographicLib::MagneticModel</a>
 </li>
-<li>DEGREE
-: <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a8ee59944227e74901b71f27410d70781">GeographicLib::DMS</a>
-</li>
 <li>degree()
 : <a class="el" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">GeographicLib::Constants</a>
-, <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">GeographicLib::Math</a>
+, <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">GeographicLib::Math</a>
+</li>
+<li>DEGREE
+: <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a8ee59944227e74901b71f27410d70781">GeographicLib::DMS</a>
 </li>
 <li>Description()
-: <a class="el" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">GeographicLib::GravityModel</a>
-, <a class="el" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">GeographicLib::Geoid</a>
+: <a class="el" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">GeographicLib::Geoid</a>
+, <a class="el" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">GeographicLib::GravityModel</a>
 , <a class="el" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">GeographicLib::MagneticModel</a>
 </li>
 <li>Direct()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">GeographicLib::Geodesic</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#a65cf95dc7f5c0bfd427e963281e044f0">GeographicLib::Geodesic</a>
 </li>
 <li>DISTANCE
 : <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">GeographicLib::Geodesic</a>
@@ -160,7 +172,7 @@
 : <a class="el" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">GeographicLib::GravityModel</a>
 </li>
 <li>DMSRepresentation()
-: <a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">GeographicLib::GeoCoords</a>
+: <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">GeographicLib::GeoCoords</a>
 </li>
 <li>dow()
 : <a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">GeographicLib::Utility</a>
@@ -170,8 +182,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html
index 67eed4d..e5bedf1 100644
--- a/doc/html/functions_0x65.html
+++ b/doc/html/functions_0x65.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -98,7 +113,7 @@
 : <a class="el" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">GeographicLib::EllipticFunction</a>
 </li>
 <li>Encode()
-: <a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">GeographicLib::DMS</a>
+: <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS</a>
 </li>
 <li>EncodeZone()
 : <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3410e1e221158962f34147255653818f">GeographicLib::UTMUPS</a>
@@ -113,15 +128,20 @@
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">GeographicLib::NormalGravity</a>
 </li>
 <li>expm1()
-: <a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">GeographicLib::Math</a>
 </li>
 <li>extended
 : <a class="el" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html
index 2443cba..647febc 100644
--- a/doc/html/functions_0x66.html
+++ b/doc/html/functions_0x66.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -149,10 +164,10 @@
 , <a class="el" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">GeographicLib::Gnomonic</a>
 </li>
 <li>fract()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">GeographicLib::Utility</a>
 </li>
 <li>fractionalyear()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">GeographicLib::Utility</a>
 </li>
 <li>FULL
 : <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">GeographicLib::SphericalHarmonic</a>
@@ -165,8 +180,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html
index 4d056ef..0a3d0a1 100644
--- a/doc/html/functions_0x67.html
+++ b/doc/html/functions_0x67.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -137,15 +152,13 @@
 <li>Gnomonic()
 : <a class="el" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">GeographicLib::Gnomonic</a>
 </li>
-<li>Gravity()
-: <a class="el" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">GeographicLib::NormalGravity</a>
-</li>
 <li>GRAVITY
 : <a class="el" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">GeographicLib::GravityModel</a>
 </li>
 <li>Gravity()
 : <a class="el" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">GeographicLib::GravityCircle</a>
 , <a class="el" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">GeographicLib::GravityModel</a>
+, <a class="el" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">GeographicLib::NormalGravity</a>
 </li>
 <li>GravityCircle
 : <a class="el" href="classGeographicLib_1_1CircularEngine.html#a243c90a7f9bf3f7aa96877a4b0667a89">GeographicLib::CircularEngine</a>
@@ -178,21 +191,26 @@
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">GeographicLib::NormalGravity</a>
 </li>
 <li>GRS80_a()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GeographicLib::Constants</a>
 </li>
 <li>GRS80_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GeographicLib::Constants</a>
 </li>
 <li>GRS80_J2()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GeographicLib::Constants</a>
 </li>
 <li>GRS80_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GeographicLib::Constants</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html
index 2a6dd0a..7b6e06b 100644
--- a/doc/html/functions_0x68.html
+++ b/doc/html/functions_0x68.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -93,12 +108,17 @@
 : <a class="el" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">GeographicLib::GeoCoords</a>
 </li>
 <li>hypot()
-: <a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html
index 25df6c5..b354b7d 100644
--- a/doc/html/functions_0x69.html
+++ b/doc/html/functions_0x69.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,7 +98,7 @@
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a356d705a99ee15089d1faabd0c01084c">GeographicLib::SphericalEngine::coeff</a>
 </li>
 <li>infinity()
-: <a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">GeographicLib::Math</a>
 </li>
 <li>Init()
 : <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">GeographicLib::CassiniSoldner</a>
@@ -100,37 +115,23 @@
 : <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">GeographicLib::UTMUPS</a>
 </li>
 <li>Inverse()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">GeographicLib::Geodesic</a>
-</li>
-<li>InverseFlattening()
-: <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">GeographicLib::AzimuthalEquidistant</a>
-, <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">GeographicLib::AlbersEqualArea</a>
-, <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">GeographicLib::UTMUPS</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">GeographicLib::TransverseMercatorExact</a>
-, <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">GeographicLib::PolarStereographic</a>
-, <a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">GeographicLib::GeoCoords</a>
-, <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">GeographicLib::GeodesicLine</a>
-, <a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">GeographicLib::MGRS</a>
-, <a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">GeographicLib::Geoid</a>
-, <a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">GeographicLib::Geocentric</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">GeographicLib::TransverseMercator</a>
-, <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">GeographicLib::LambertConformalConic</a>
-, <a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">GeographicLib::Gnomonic</a>
-, <a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">GeographicLib::OSGB</a>
-, <a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">GeographicLib::Geodesic</a>
-, <a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">GeographicLib::LocalCartesian</a>
-, <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">GeographicLib::CassiniSoldner</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">GeographicLib::Geodesic</a>
 </li>
 <li>isfinite()
-: <a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">GeographicLib::Math</a>
 </li>
 <li>isnan()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x6b.html b/doc/html/functions_0x6b.html
index 1d45e21..16960c7 100644
--- a/doc/html/functions_0x6b.html
+++ b/doc/html/functions_0x6b.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -90,8 +105,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html
index 9675c83..3fd68f1 100644
--- a/doc/html/functions_0x6c.html
+++ b/doc/html/functions_0x6c.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -113,20 +128,18 @@
 , <a class="el" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">GeographicLib::Geocentric</a>
 </li>
 <li>log1p()
-: <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">GeographicLib::Math</a>
-</li>
-<li>Longitude()
-: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">GeographicLib::GeoCoords</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">GeographicLib::Math</a>
 </li>
 <li>LONGITUDE
-: <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">GeographicLib::DMS</a>
-, <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">GeographicLib::Geodesic</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">GeographicLib::Geodesic</a>
 </li>
 <li>Longitude()
-: <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">GeographicLib::GeodesicLine</a>
+: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">GeographicLib::GeoCoords</a>
+, <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">GeographicLib::GeodesicLine</a>
 </li>
 <li>LONGITUDE
 : <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">GeographicLib::GeodesicLine</a>
+, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">GeographicLib::DMS</a>
 </li>
 <li>LongitudeOrigin()
 : <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">GeographicLib::CassiniSoldner</a>
@@ -137,8 +150,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html
index 6ce5537..8ba9000 100644
--- a/doc/html/functions_0x6d.html
+++ b/doc/html/functions_0x6d.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -194,8 +209,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html
index 0af0dc0..6032c50 100644
--- a/doc/html/functions_0x6e.html
+++ b/doc/html/functions_0x6e.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,7 +98,7 @@
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a38ab91101bb639963e094327a22fed59">GeographicLib::SphericalEngine::coeff</a>
 </li>
 <li>NaN()
-: <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">GeographicLib::Math</a>
 </li>
 <li>nauticalmile()
 : <a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">GeographicLib::Constants</a>
@@ -115,18 +130,23 @@
 : <a class="el" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">GeographicLib::GeoCoords</a>
 </li>
 <li>num()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">GeographicLib::Utility</a>
 </li>
 <li>NUMBER
 : <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">GeographicLib::DMS</a>
 </li>
 <li>nummatch()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">GeographicLib::Utility</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html
index b2a529b..24ffa93 100644
--- a/doc/html/functions_0x6f.html
+++ b/doc/html/functions_0x6f.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,10 +98,10 @@
 : <a class="el" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">GeographicLib::Geoid</a>
 </li>
 <li>operator!=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">GeographicLib::Accumulator</a>
 </li>
 <li>operator()()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">GeographicLib::Accumulator</a>
 , <a class="el" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">GeographicLib::CircularEngine</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">GeographicLib::SphericalHarmonic</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">GeographicLib::SphericalHarmonic1</a>
@@ -97,7 +112,7 @@
 , <a class="el" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">GeographicLib::Geoid</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">GeographicLib::SphericalHarmonic2</a>
 , <a class="el" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">GeographicLib::MagneticCircle</a>
-, <a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">GeographicLib::Accumulator< T ></a>
+, <a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">GeographicLib::Accumulator</a>
 , <a class="el" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">GeographicLib::CircularEngine</a>
 , <a class="el" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">GeographicLib::MagneticCircle</a>
 , <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">GeographicLib::MagneticModel</a>
@@ -106,31 +121,31 @@
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">GeographicLib::SphericalHarmonic</a>
 </li>
 <li>operator*=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">GeographicLib::Accumulator</a>
 </li>
 <li>operator+=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">GeographicLib::Accumulator</a>
 </li>
 <li>operator-=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">GeographicLib::Accumulator</a>
 </li>
 <li>operator<()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">GeographicLib::Accumulator</a>
 </li>
 <li>operator<=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">GeographicLib::Accumulator</a>
 </li>
 <li>operator=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">GeographicLib::Accumulator</a>
 </li>
 <li>operator==()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">GeographicLib::Accumulator</a>
 </li>
 <li>operator>()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">GeographicLib::Accumulator</a>
 </li>
 <li>operator>=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">GeographicLib::Accumulator</a>
 </li>
 <li>OriginLatitude()
 : <a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">GeographicLib::OSGB</a>
@@ -142,8 +157,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html
index bf7e5b6..8761d5b 100644
--- a/doc/html/functions_0x70.html
+++ b/doc/html/functions_0x70.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -87,7 +102,7 @@
 , <a class="el" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">GeographicLib::NormalGravity</a>
 </li>
 <li>pi()
-: <a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">GeographicLib::Math</a>
 </li>
 <li>PolarGravity()
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">GeographicLib::NormalGravity</a>
@@ -103,8 +118,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html
index 76112c0..1565453 100644
--- a/doc/html/functions_0x72.html
+++ b/doc/html/functions_0x72.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,7 +95,7 @@
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>readarray()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">GeographicLib::Utility</a>
 </li>
 <li>readcoeffs()
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a2d545f589894683e7de297c42b7c995a">GeographicLib::SphericalEngine::coeff</a>
@@ -134,8 +149,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html
index a8fc9cb..f32a045 100644
--- a/doc/html/functions_0x73.html
+++ b/doc/html/functions_0x73.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -127,7 +142,7 @@
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">GeographicLib::SphericalHarmonic2</a>
 </li>
 <li>sq()
-: <a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">GeographicLib::Math</a>
 </li>
 <li>square_kilometer()
 : <a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">GeographicLib::Constants</a>
@@ -151,7 +166,7 @@
 : <a class="el" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">GeographicLib::UTMUPS</a>
 </li>
 <li>str()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">GeographicLib::Utility</a>
 </li>
 <li>SurfaceGravity()
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">GeographicLib::NormalGravity</a>
@@ -166,12 +181,17 @@
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">GeographicLib::SphericalEngine::coeff</a>
 </li>
 <li>swab()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x74.html b/doc/html/functions_0x74.html
index 19b7320..00beebf 100644
--- a/doc/html/functions_0x74.html
+++ b/doc/html/functions_0x74.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -100,8 +115,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html
index 33848a3..3f5f3a1 100644
--- a/doc/html/functions_0x75.html
+++ b/doc/html/functions_0x75.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -88,7 +103,7 @@
 , <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">GeographicLib::PolarStereographic</a>
 </li>
 <li>UPS_k0()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">GeographicLib::Constants</a>
 </li>
 <li>UTM
 : <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">GeographicLib::TransverseMercatorExact</a>
@@ -109,8 +124,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html
index 0833e07..89857b1 100644
--- a/doc/html/functions_0x76.html
+++ b/doc/html/functions_0x76.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -87,12 +102,17 @@
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">GeographicLib::NormalGravity</a>
 </li>
 <li>Value()
-: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">GeographicLib::SphericalEngine</a>
+: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">GeographicLib::SphericalEngine</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html
index 59e1934..bfe32e1 100644
--- a/doc/html/functions_0x77.html
+++ b/doc/html/functions_0x77.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -89,24 +104,32 @@
 , <a class="el" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">GeographicLib::Geocentric</a>
 </li>
 <li>WGS84_a()
-: <a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">GeographicLib::Constants</a>
 </li>
 <li>WGS84_f()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">GeographicLib::Constants</a>
 </li>
 <li>WGS84_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">GeographicLib::Constants</a>
 </li>
 <li>WGS84_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">GeographicLib::Constants</a>
 </li>
 <li>WGS84_r()
 : <a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">GeographicLib::Constants</a>
 </li>
+<li>writearray()
+: <a class="el" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">GeographicLib::Utility</a>
+</li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x79.html b/doc/html/functions_0x79.html
index 40d57b3..1db1e62 100644
--- a/doc/html/functions_0x79.html
+++ b/doc/html/functions_0x79.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,8 +99,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_0x7a.html b/doc/html/functions_0x7a.html
index 4016441..752a56a 100644
--- a/doc/html/functions_0x7a.html
+++ b/doc/html/functions_0x7a.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -87,8 +102,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html
index 7e8afd8..36f6588 100644
--- a/doc/html/functions_enum.html
+++ b/doc/html/functions_enum.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Enumerations</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -75,8 +90,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html
index a8271e8..fbd1d7f 100644
--- a/doc/html/functions_eval.html
+++ b/doc/html/functions_eval.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Enumerator</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -239,8 +254,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
index e183e63..48ae828 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -79,7 +94,7 @@
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>Accumulator()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">GeographicLib::Accumulator</a>
 </li>
 <li>acre()
 : <a class="el" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">GeographicLib::Constants</a>
@@ -128,10 +143,10 @@
 : <a class="el" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">GeographicLib::Constants</a>
 </li>
 <li>asinh()
-: <a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">GeographicLib::Math</a>
 </li>
 <li>atanh()
-: <a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">GeographicLib::Math</a>
 </li>
 <li>Azimuth()
 : <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a40707b9e989c95418b2559b271cc2699">GeographicLib::GeodesicLine</a>
@@ -141,8 +156,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html
index b78177a..4c4ea58 100644
--- a/doc/html/functions_func_0x63.html
+++ b/doc/html/functions_func_0x63.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -110,7 +125,7 @@
 : <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">GeographicLib::CassiniSoldner</a>
 </li>
 <li>cbrt()
-: <a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">GeographicLib::Math</a>
 </li>
 <li>CentralScale()
 : <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">GeographicLib::AlbersEqualArea</a>
@@ -127,7 +142,7 @@
 : <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a32dd4989c40181939d667298681625f6">GeographicLib::SphericalHarmonic1</a>
 , <a class="el" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">GeographicLib::GravityModel</a>
 , <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">GeographicLib::MagneticModel</a>
-, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">GeographicLib::SphericalEngine</a>
+, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">GeographicLib::SphericalEngine</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2b2b2ad35bba090a4956693ba5ef0f32">GeographicLib::SphericalHarmonic</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a3aa683a43a8e9232a16390b09c6be920">GeographicLib::SphericalHarmonic2</a>
 </li>
@@ -172,8 +187,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html
index 1c41427..6f06d3f 100644
--- a/doc/html/functions_func_0x64.html
+++ b/doc/html/functions_func_0x64.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -98,9 +113,6 @@
 <li>DecodeAzimuth()
 : <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS</a>
 </li>
-<li>DecodeFraction()
-: <a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">GeographicLib::DMS</a>
-</li>
 <li>DecodeLatLon()
 : <a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">GeographicLib::DMS</a>
 </li>
@@ -126,9 +138,8 @@
 : <a class="el" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">GeographicLib::MagneticModel</a>
 </li>
 <li>degree()
-: <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">GeographicLib::Math</a>
-, <a class="el" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">GeographicLib::Constants</a>
-, <a class="el" href="classGeographicLib_1_1Math.html#a5bb8bea024e11eb402ecbcf9bae28bb5">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">GeographicLib::Constants</a>
+, <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">GeographicLib::Math</a>
 </li>
 <li>Description()
 : <a class="el" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">GeographicLib::Geoid</a>
@@ -136,25 +147,30 @@
 , <a class="el" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">GeographicLib::MagneticModel</a>
 </li>
 <li>Direct()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#ac8f0b5f4db73c5d8d11797698f937402">GeographicLib::Geodesic</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">GeographicLib::Geodesic</a>
 </li>
 <li>Disturbance()
-: <a class="el" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GeographicLib::GravityCircle</a>
-, <a class="el" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GeographicLib::GravityModel</a>
+: <a class="el" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GeographicLib::GravityModel</a>
+, <a class="el" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GeographicLib::GravityCircle</a>
 </li>
 <li>DMSRepresentation()
-: <a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">GeographicLib::GeoCoords</a>
+: <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">GeographicLib::GeoCoords</a>
 </li>
 <li>dow()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a4687c34e55dc7ccc135e31a72402f008">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">GeographicLib::Utility</a>
 </li>
 <li>DynamicalFormFactor()
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#aa52b03157eb0b199d331d6fca28a259a">GeographicLib::NormalGravity</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html
index fdc67d2..b6b35b2 100644
--- a/doc/html/functions_func_0x65.html
+++ b/doc/html/functions_func_0x65.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -94,7 +109,7 @@
 : <a class="el" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">GeographicLib::EllipticFunction</a>
 </li>
 <li>Encode()
-: <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">GeographicLib::DMS</a>
+: <a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">GeographicLib::DMS</a>
 </li>
 <li>EncodeZone()
 : <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3410e1e221158962f34147255653818f">GeographicLib::UTMUPS</a>
@@ -109,12 +124,17 @@
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">GeographicLib::NormalGravity</a>
 </li>
 <li>expm1()
-: <a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html
index 129b253..f423e51 100644
--- a/doc/html/functions_func_0x66.html
+++ b/doc/html/functions_func_0x66.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -145,18 +160,23 @@
 , <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">GeographicLib::AlbersEqualArea</a>
 </li>
 <li>fract()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">GeographicLib::Utility</a>
 </li>
 <li>fractionalyear()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">GeographicLib::Utility</a>
 </li>
 <li>furlong()
 : <a class="el" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">GeographicLib::Constants</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html
index ff6a40f..798b52e 100644
--- a/doc/html/functions_func_0x67.html
+++ b/doc/html/functions_func_0x67.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -151,21 +166,26 @@
 : <a class="el" href="classGeographicLib_1_1OSGB.html#a3693cfef49442747750e8393c81014aa">GeographicLib::OSGB</a>
 </li>
 <li>GRS80_a()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GeographicLib::Constants</a>
 </li>
 <li>GRS80_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GeographicLib::Constants</a>
 </li>
 <li>GRS80_J2()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GeographicLib::Constants</a>
 </li>
 <li>GRS80_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GeographicLib::Constants</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x68.html b/doc/html/functions_func_0x68.html
index 0ce9072..77cd80f 100644
--- a/doc/html/functions_func_0x68.html
+++ b/doc/html/functions_func_0x68.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -92,12 +107,17 @@
 : <a class="el" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">GeographicLib::GeoCoords</a>
 </li>
 <li>hypot()
-: <a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x69.html b/doc/html/functions_func_0x69.html
index 2ac2fd0..aa5f1fa 100644
--- a/doc/html/functions_func_0x69.html
+++ b/doc/html/functions_func_0x69.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,7 +97,7 @@
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a356d705a99ee15089d1faabd0c01084c">GeographicLib::SphericalEngine::coeff</a>
 </li>
 <li>infinity()
-: <a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">GeographicLib::Math</a>
 </li>
 <li>Init()
 : <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">GeographicLib::CassiniSoldner</a>
@@ -96,37 +111,23 @@
 : <a class="el" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">GeographicLib::Geoid</a>
 </li>
 <li>Inverse()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">GeographicLib::Geodesic</a>
-</li>
-<li>InverseFlattening()
-: <a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">GeographicLib::Geoid</a>
-, <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">GeographicLib::AzimuthalEquidistant</a>
-, <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">GeographicLib::AlbersEqualArea</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">GeographicLib::TransverseMercatorExact</a>
-, <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">GeographicLib::LambertConformalConic</a>
-, <a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">GeographicLib::Geodesic</a>
-, <a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">GeographicLib::OSGB</a>
-, <a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">GeographicLib::MGRS</a>
-, <a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">GeographicLib::LocalCartesian</a>
-, <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">GeographicLib::PolarStereographic</a>
-, <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">GeographicLib::CassiniSoldner</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">GeographicLib::TransverseMercator</a>
-, <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">GeographicLib::UTMUPS</a>
-, <a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">GeographicLib::GeoCoords</a>
-, <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">GeographicLib::GeodesicLine</a>
-, <a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">GeographicLib::Gnomonic</a>
-, <a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">GeographicLib::Geocentric</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">GeographicLib::Geodesic</a>
 </li>
 <li>isfinite()
-: <a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">GeographicLib::Math</a>
 </li>
 <li>isnan()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x6b.html b/doc/html/functions_func_0x6b.html
index 3b6a6c4..5109fd9 100644
--- a/doc/html/functions_func_0x6b.html
+++ b/doc/html/functions_func_0x6b.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -89,8 +104,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html
index b283fc1..e079718 100644
--- a/doc/html/functions_func_0x6c.html
+++ b/doc/html/functions_func_0x6c.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -98,7 +113,7 @@
 : <a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">GeographicLib::LocalCartesian</a>
 </li>
 <li>log1p()
-: <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">GeographicLib::Math</a>
 </li>
 <li>Longitude()
 : <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">GeographicLib::GeodesicLine</a>
@@ -113,8 +128,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x6d.html b/doc/html/functions_func_0x6d.html
index c834cc9..6b09fcd 100644
--- a/doc/html/functions_func_0x6d.html
+++ b/doc/html/functions_func_0x6d.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -157,8 +172,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x6e.html b/doc/html/functions_func_0x6e.html
index 3a7af53..336fe02 100644
--- a/doc/html/functions_func_0x6e.html
+++ b/doc/html/functions_func_0x6e.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,7 +97,7 @@
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a38ab91101bb639963e094327a22fed59">GeographicLib::SphericalEngine::coeff</a>
 </li>
 <li>NaN()
-: <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">GeographicLib::Math</a>
 </li>
 <li>nauticalmile()
 : <a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">GeographicLib::Constants</a>
@@ -100,15 +115,20 @@
 : <a class="el" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">GeographicLib::GeoCoords</a>
 </li>
 <li>num()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">GeographicLib::Utility</a>
 </li>
 <li>nummatch()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">GeographicLib::Utility</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html
index 8194c12..fe2586a 100644
--- a/doc/html/functions_func_0x6f.html
+++ b/doc/html/functions_func_0x6f.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,10 +97,10 @@
 : <a class="el" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">GeographicLib::Geoid</a>
 </li>
 <li>operator!=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">GeographicLib::Accumulator</a>
 </li>
 <li>operator()()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">GeographicLib::Accumulator</a>
 , <a class="el" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">GeographicLib::CircularEngine</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">GeographicLib::SphericalHarmonic</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">GeographicLib::SphericalHarmonic1</a>
@@ -96,7 +111,7 @@
 , <a class="el" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">GeographicLib::Geoid</a>
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">GeographicLib::SphericalHarmonic2</a>
 , <a class="el" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">GeographicLib::MagneticCircle</a>
-, <a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">GeographicLib::Accumulator< T ></a>
+, <a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">GeographicLib::Accumulator</a>
 , <a class="el" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">GeographicLib::CircularEngine</a>
 , <a class="el" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">GeographicLib::MagneticCircle</a>
 , <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">GeographicLib::MagneticModel</a>
@@ -105,31 +120,31 @@
 , <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">GeographicLib::SphericalHarmonic</a>
 </li>
 <li>operator*=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">GeographicLib::Accumulator</a>
 </li>
 <li>operator+=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">GeographicLib::Accumulator</a>
 </li>
 <li>operator-=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">GeographicLib::Accumulator</a>
 </li>
 <li>operator<()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">GeographicLib::Accumulator</a>
 </li>
 <li>operator<=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">GeographicLib::Accumulator</a>
 </li>
 <li>operator=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">GeographicLib::Accumulator</a>
 </li>
 <li>operator==()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">GeographicLib::Accumulator</a>
 </li>
 <li>operator>()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">GeographicLib::Accumulator</a>
 </li>
 <li>operator>=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">GeographicLib::Accumulator</a>
 </li>
 <li>OriginLatitude()
 : <a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">GeographicLib::OSGB</a>
@@ -141,8 +156,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html
index 77cf5f5..4f08c58 100644
--- a/doc/html/functions_func_0x70.html
+++ b/doc/html/functions_func_0x70.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,7 +101,7 @@
 , <a class="el" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">GeographicLib::NormalGravity</a>
 </li>
 <li>pi()
-: <a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">GeographicLib::Math</a>
 </li>
 <li>PolarGravity()
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">GeographicLib::NormalGravity</a>
@@ -102,8 +117,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html
index a1dbadc..d21bdd1 100644
--- a/doc/html/functions_func_0x72.html
+++ b/doc/html/functions_func_0x72.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -79,7 +94,7 @@
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>readarray()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">GeographicLib::Utility</a>
 </li>
 <li>readcoeffs()
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a2d545f589894683e7de297c42b7c995a">GeographicLib::SphericalEngine::coeff</a>
@@ -128,8 +143,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html
index 24255bc..20a984f 100644
--- a/doc/html/functions_func_0x73.html
+++ b/doc/html/functions_func_0x73.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -107,13 +122,13 @@
 : <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">GeographicLib::SphericalHarmonic2</a>
 </li>
 <li>sq()
-: <a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">GeographicLib::Math</a>
 </li>
 <li>square_kilometer()
 : <a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">GeographicLib::Constants</a>
 </li>
 <li>square_meter()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">GeographicLib::Constants</a>
 </li>
 <li>square_mile()
 : <a class="el" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">GeographicLib::Constants</a>
@@ -128,7 +143,7 @@
 : <a class="el" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">GeographicLib::UTMUPS</a>
 </li>
 <li>str()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">GeographicLib::Utility</a>
 </li>
 <li>SurfaceGravity()
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">GeographicLib::NormalGravity</a>
@@ -143,12 +158,17 @@
 : <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">GeographicLib::SphericalEngine::coeff</a>
 </li>
 <li>swab()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">GeographicLib::Math</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x74.html b/doc/html/functions_func_0x74.html
index a5de380..4f5ecf8 100644
--- a/doc/html/functions_func_0x74.html
+++ b/doc/html/functions_func_0x74.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -99,8 +114,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html
index 40f4c0a..eed4e5c 100644
--- a/doc/html/functions_func_0x75.html
+++ b/doc/html/functions_func_0x75.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,7 +101,7 @@
 : <a class="el" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">GeographicLib::Constants</a>
 </li>
 <li>UTM_k0()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">GeographicLib::Constants</a>
 </li>
 <li>UTMShift()
 : <a class="el" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">GeographicLib::UTMUPS</a>
@@ -96,8 +111,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x76.html b/doc/html/functions_func_0x76.html
index 78096be..9af0378 100644
--- a/doc/html/functions_func_0x76.html
+++ b/doc/html/functions_func_0x76.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,12 +101,17 @@
 : <a class="el" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">GeographicLib::NormalGravity</a>
 </li>
 <li>Value()
-: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">GeographicLib::SphericalEngine</a>
+: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">GeographicLib::SphericalEngine</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x77.html b/doc/html/functions_func_0x77.html
index 86a977f..77a1d44 100644
--- a/doc/html/functions_func_0x77.html
+++ b/doc/html/functions_func_0x77.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,21 +101,29 @@
 : <a class="el" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">GeographicLib::Constants</a>
 </li>
 <li>WGS84_f()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">GeographicLib::Constants</a>
 </li>
 <li>WGS84_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">GeographicLib::Constants</a>
 </li>
 <li>WGS84_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">GeographicLib::Constants</a>
 </li>
 <li>WGS84_r()
 : <a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">GeographicLib::Constants</a>
 </li>
+<li>writearray()
+: <a class="el" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">GeographicLib::Utility</a>
+</li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x79.html b/doc/html/functions_func_0x79.html
index 76cc845..c68f9ff 100644
--- a/doc/html/functions_func_0x79.html
+++ b/doc/html/functions_func_0x79.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,8 +98,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_func_0x7a.html b/doc/html/functions_func_0x7a.html
index 0914a15..6cae718 100644
--- a/doc/html/functions_func_0x7a.html
+++ b/doc/html/functions_func_0x7a.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,8 +98,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html
index 70954ea..4466960 100644
--- a/doc/html/functions_rela.html
+++ b/doc/html/functions_rela.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Related Functions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -100,8 +115,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html
index 04366b8..8196146 100644
--- a/doc/html/functions_type.html
+++ b/doc/html/functions_type.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Typedefs</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -58,8 +73,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
index b6986d0..eb72a85 100644
--- a/doc/html/functions_vars.html
+++ b/doc/html/functions_vars.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Class Members - Variables</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,8 +97,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/geocentric.html b/doc/html/geocentric.html
index d969ae4..91ede09 100644
--- a/doc/html/geocentric.html
+++ b/doc/html/geocentric.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geocentric coordinates</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
 <div class="title">Geocentric coordinates </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Forward to <a class="el" href="old.html">Old Versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>The implementation of <a class="el" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">GeographicLib::Geocentric::Reverse</a> is adapted from</p>
+<div class="textblock"><center> Back to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Forward to <a class="el" href="old.html">Old versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>The implementation of <a class="el" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">GeographicLib::Geocentric::Reverse</a> is adapted from</p>
 <ul>
 <li>H. Vermeille, <a href="http://dx.doi.org/10.1007/s00190-002-0273-6">Direct transformation from geocentric coordinates to geodetic coordinates</a>, J. Geodesy 76, 451–454 (2002).</li>
 </ul>
@@ -63,9 +78,14 @@
 <p>We then find <em>err</em><sub>h</sub> < 8 nm, <em>err</em><sub>out</sub> < 4 nm, and <em>err</em><sub>in</sub> < 7 nm. (1 nm = 1 nanometer.)</p>
 <p>The testing has been confined to the WGS84 ellipsoid. The method will work for all ellipsoids used in terrestrial geodesy. However, the central region, which leads to multiple real roots for the cubic equation in Reverse, pokes outside the ellipsoid (at the poles) for ellipsoids with <em>e</em> > 1/sqrt(2). Reverse has not been analyzed for this case. Similarly ellipsoids which are very nearly spherical near yield inaccurate results due to underflow; in the other hand, the case of  [...]
 <p>Other comparable methods are K. M. Borkowski, <a href="http://dx.doi.org/10.1007/BF00643807">Transformation of geocentric to geodetic coordinates without approximations</a>, Astrophys. Space Sci. 139, 1–4 (1987) (<a href="http://dx.doi.org/10.1007/BF00656995">erratum</a>) and T. Fukushima, <a href="http://dx.doi.org/10.1007/s001900050271">Fast transform from geocentric to geodetic coordinates</a>, J. Geodesy 73, 603–610 (2003). However the choice of independent variables i [...]
-<center> Back to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Forward to <a class="el" href="old.html">Old Versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>.</center><center></center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Forward to <a class="el" href="old.html">Old versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>.</center><center></center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/geodesic.html b/doc/html/geodesic.html
index e4f91b2..2b44c04 100644
--- a/doc/html/geodesic.html
+++ b/doc/html/geodesic.html
@@ -2,24 +2,39 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Geodesics on the Ellipsoid</title>
+<title>GeographicLib: Geodesics on the ellipsoid</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,10 +48,10 @@
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">Geodesics on the Ellipsoid </div>  </div>
+<div class="title">Geodesics on the ellipsoid </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLin [...]
+<div class="textblock"><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLin [...]
 <p>References</p>
 <ul>
 <li>F. W. Bessel, <a href="http://dx.doi.org/10.1002/asna.201011352">The calculation of longitude and latitude from geodesic measurements (1825)</a>, Astron. Nachr. 331(8), 852-861 (2010); translated by C. F. F. Karney and R. E. Deakin. Preprint: <a href="http://arxiv.org/abs/0908.1824">arXiv:0908.1824</a>.</li>
@@ -365,9 +380,14 @@ C4[7] = + (1/26254800 - 1/31177575 * ep2 + 2/72747675 * ep2^2) * k2^7
 C4[8] = + (1/141338340 - 1/164894730 * ep2) * k2^8
         - 1/34714680 * k2^9;
 C4[9] = + 1/737176440 * k2^9;
-</pre></div><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</pre></div><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/geoid.html b/doc/html/geoid.html
index 0894578..f452d01 100644
--- a/doc/html/geoid.html
+++ b/doc/html/geoid.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geoid height</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,10 +101,11 @@ Installing the geoid datasets</h2>
    geographiclib-get-geoids best # to install egm84-15, egm96-5, egm2008-1
    geographiclib-get-geoids -h   # for help
 </pre></div><p> This script should be run as a user with write access to the installation directory, which is typically /usr/local/share/GeographicLib (this can be overridden with the -p flag), and the data will then be placed in the "geoids" subdirectory.</p>
-<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being </p>
+<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being one of </p>
 <div class="fragment"><pre class="fragment">
    C:/Documents and Settings/All Users/Application Data/GeographicLib
-</pre></div><p> (which you probably should not change) and the data is installed in the "geoids" sub-directory.</p>
+   C:/ProgramData/GeographicLib
+</pre></div><p> (which you probably should not change) and the data is installed in the "geoids" sub-directory. (The second directory name is an alternate name that Windows 7 for the "Application Data" directory.)</p>
 <p>Otherwise download <em>either</em> the tar.bz2 file <em>or</em> the zip file (they have the same contents). If possible use the tar.bz2 files, since these are compressed about 2 times better than the zip file. To unpack these, run, for example </p>
 <div class="fragment"><pre class="fragment">
    mkdir -p /usr/local/share/GeographicLib
@@ -177,6 +193,7 @@ gdal_translate -co COMPRESS=LZW -co PREDICTOR=2 \
 <h2><a class="anchor" id="geoidinterp"></a>
 Interpolating the geoid data</h2>
 <p><a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> evaluates the geoid height using bilinear or cubic interpolation. The gradient of the geoid height is obtained by differentiating the interpolated height and referencing the result to distance on the WGS84 ellipsoid.</p>
+<p><b>WARNING</b>: Although <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> computes the gradient of the geoid height, this is subject to large quantization errors as a result of the way that the geoid data is stored. This is particularly acute for fine grids, at high latitudes, and for the easterly gradient. If you need to compute the direction of the acceleration due to gravity accurately, you should use <a clas [...]
 <p>The bilinear interpolation is based on the values at the 4 corners of the enclosing cell. The interpolated height is a continuous function of position; however the gradient has discontinuities are cell boundaries. The quantization of the data files exacerbates the errors in the gradients.</p>
 <p>The cubic interpolation is a least-squares fit to the values on a 12-point stencil with weights as follows: </p>
 <div class="fragment"><pre class="fragment">
@@ -188,7 +205,7 @@ Interpolating the geoid data</h2>
 <p>The algorithm for the least squares fit is taken from, F. H. Lesh, Multi-dimensional least-squares polynomial curve fitting, CACM 2, 29-30 (1959). This algorithm is not part of <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a>; instead it is implemented as <a href="http://en.wikipedia.org/wiki/Maxima_(software)">Maxima</a> code which is used to precompute the matrices to convert the function values on the stencil [...]
 <p>The interpolation methods are quick and give good accuracy. Here is a summary of the combined quantization and interpolation errors for the heights. </p>
 <center><table class="doxtable">
-<caption align="bottom">Interpolation errors for geoid heights</caption>
+<caption align="bottom">Interpolation and quantization errors for geoid heights</caption>
 <tr>
 <th rowspan="2">name </th><th rowspan="2">geoid </th><th rowspan="2">grid </th><th colspan="2"><center>bilinear error</center> </th><th colspan="2"><center>cubic error</center> </th></tr>
 <tr>
@@ -196,26 +213,40 @@ Interpolating the geoid data</h2>
 <tr>
 <td>egm84-30 </td><td>EGM84 </td><td><center>30' </center> </td><td><center>1.546 m</center></td><td><center>70 mm</center> </td><td><center>0.274 m</center></td><td><center>14 mm</center> </td></tr>
 <tr>
-<td>egm84-15 </td><td>EGM84 </td><td><center>15' </center> </td><td><center>0.413 m</center></td><td><center>18 mm</center> </td><td><center>0.020 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm84-15 </td><td>EGM84 </td><td><center>15' </center> </td><td><center>0.413 m</center></td><td><center>18 mm</center> </td><td><center>0.021 m</center></td><td><center>1.2 mm</center> </td></tr>
 <tr>
-<td>egm96-15 </td><td>EGM96 </td><td><center>15' </center> </td><td><center>1.152 m</center></td><td><center>40 mm</center> </td><td><center>0.169 m</center></td><td><center> 7 mm</center> </td></tr>
+<td>egm96-15 </td><td>EGM96 </td><td><center>15' </center> </td><td><center>1.152 m</center></td><td><center>40 mm</center> </td><td><center>0.169 m</center></td><td><center>7.0 mm</center> </td></tr>
 <tr>
-<td>egm96-5 </td><td>EGM96 </td><td><center> 5' </center> </td><td><center>0.140 m</center></td><td><center> 5 mm</center> </td><td><center>0.003 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm96-5 </td><td>EGM96 </td><td><center> 5' </center> </td><td><center>0.140 m</center></td><td><center>4.6 mm</center> </td><td><center>0.0032 m</center></td><td><center>0.7 mm</center> </td></tr>
 <tr>
-<td>egm2008-5 </td><td>EGM2008</td><td><center> 5' </center> </td><td><center>0.478 m</center></td><td><center>12 mm</center> </td><td><center>0.294 m</center></td><td><center> 5 mm</center> </td></tr>
+<td>egm2008-5 </td><td>EGM2008</td><td><center> 5' </center> </td><td><center>0.478 m</center></td><td><center>12 mm</center> </td><td><center>0.294 m</center></td><td><center>4.5 mm</center> </td></tr>
 <tr>
-<td>egm2008-2_5</td><td>EGM2008</td><td><center> 2.5'</center> </td><td><center>0.135 m</center></td><td><center> 3 mm</center> </td><td><center>0.031 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm2008-2_5</td><td>EGM2008</td><td><center> 2.5'</center> </td><td><center>0.135 m</center></td><td><center>3.2 mm</center> </td><td><center>0.031 m</center></td><td><center>0.8 mm</center> </td></tr>
 <tr>
-<td>egm2008-1 </td><td>EGM2008</td><td><center> 1' </center> </td><td><center>0.025 m</center></td><td><center> 1 mm</center> </td><td><center>0.003 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm2008-1 </td><td>EGM2008</td><td><center> 1' </center> </td><td><center>0.025 m</center></td><td><center>0.8 mm</center> </td><td><center>0.0022 m</center></td><td><center>0.7 mm</center> </td></tr>
 </table>
-</center><p> The errors are with respect to the specific NGA earth gravity model (not to any "real" geoid). The RMS values are obtained using 5 million uniformly distributed random points. The maximum values are obtained by evaluating the errors using a different grid with points at or near the centers of the original grid. (The RMS difference between EGM96 and EGM2008 is about 0.5 m. The RMS difference between EGM84 and EGM96 is about 1.5 m.)</p>
-<h2><a class="anchor" id="geoidcache"></a>
+</center><p> The errors are with respect to the specific NGA earth gravity model (not to any "real" geoid). The RMS values are obtained using 5 million uniformly distributed random points. The maximum values are obtained by evaluating the errors using a different grid with points at the centers of the original grid. (The RMS difference between EGM96 and EGM2008 is about 0.5 m. The RMS difference between EGM84 and EGM96 is about 1.5 m.)</p>
+<p>The errors in the table above include the quantization errors that arise because the height data that <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> uses are quantized to 3 mm. If, instead, <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> were to use data files without such quantization artifacts, the overall error would be reduced <em>b [...]
+<center><table class="doxtable">
+<caption align="bottom">Interpolation (only!) errors for geoid heights</caption>
+<tr>
+<th rowspan="2">name </th><th rowspan="2">geoid </th><th rowspan="2">grid </th><th colspan="2"><center>bilinear error</center> </th><th colspan="2"><center>cubic error</center> </th></tr>
+<tr>
+<th><center>max</center></th><th><center>rms</center> </th><th><center>max</center></th><th><center>rms</center> </th></tr>
+<tr>
+<td>egm96-5 </td><td>EGM96 </td><td><center> 5' </center> </td><td><center>0.140 m</center></td><td><center>4.6 mm</center> </td><td><center><b>0.0026 m</b></center></td><td><center><b>0.1 mm</b></center> </td></tr>
+<tr>
+<td>egm2008-2_5</td><td>EGM2008</td><td><center> 2.5'</center> </td><td><center>0.135 m</center></td><td><center>3.2 mm</center> </td><td><center>0.031 m</center></td><td><center><b>0.4 mm</b></center> </td></tr>
+<tr>
+<td>egm2008-1 </td><td>EGM2008</td><td><center> 1' </center> </td><td><center>0.025 m</center></td><td><center><b>0.6 mm</b></center> </td><td><center><b>0.0010 m</b></center></td><td><center><b>0.011 mm</b></center> </td></tr>
+</table>
+</center><h2><a class="anchor" id="geoidcache"></a>
 Caching the geoid data</h2>
 <p>A simple way of calling Geoid is as follows </p>
 <div class="fragment"><pre class="fragment"><span class="preprocessor">   #include <<a class="code" href="Geoid_8hpp.html" title="Header for GeographicLib::Geoid class.">GeographicLib/Geoid.hpp</a>></span>
 <span class="preprocessor">   #include <iostream></span>
    ...
-   <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> g(<span class="stringliteral">"egm96-5"</span>);
+   GeographicLib::Geoid g(<span class="stringliteral">"egm96-5"</span>);
    <span class="keywordtype">double</span> lat, lon;
    <span class="keywordflow">while</span> (std::cin >> lat >> lon)
       std::cout << g(lat, lon) << <span class="stringliteral">"\n"</span>;
@@ -231,7 +262,7 @@ Caching the geoid data</h2>
 Test data for geoids</h2>
 <p>A test set for the geoid models is available at</p>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/testdata/GeoidHeights.dat.gz/download">GeoidHeight.dat.gz</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/testdata/GeoidHeights.dat.gz/download">GeoidHeights.dat.gz</a></li>
 </ul>
 <p>This is about 11 MB (compressed). This test set consists of a set of 500000 geographic coordinates together with the corresponding geoid heights according to various earth gravity models.</p>
 <p>Each line of the test set gives 6 space delimited numbers</p>
@@ -244,8 +275,13 @@ Test data for geoids</h2>
 </ul>
 <p>The latitude and longitude are all multiples of 10<sup>-6</sup> deg and should be regarded as exact. The geoid heights are computed using the harmonic NGA synthesis programs, where the programs were compiled (with gfortran) and run under Linux. In the case of the EGM2008 program, a <code>SAVE</code> statement needed to be added to subroutine <code>latf</code>, in order for the program to compile correctly with a stack-based compiler. Similarly the EGM96 code requires a <code>SAVE</cod [...]
 <center> Back to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Forward to <a class="el" href="gravity.html">Gravity models</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/globals.html b/doc/html/globals.html
index 068ef9f..af72cc0 100644
--- a/doc/html/globals.html
+++ b/doc/html/globals.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: File Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,6 +66,7 @@
       <li><a href="#index_g"><span>g</span></a></li>
       <li><a href="#index_l"><span>l</span></a></li>
       <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
       <li><a href="#index_r"><span>r</span></a></li>
       <li><a href="#index_s"><span>s</span></a></li>
       <li><a href="#index_t"><span>t</span></a></li>
@@ -63,7 +79,7 @@
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>AzimuthString()
-: <a class="el" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">Geod.cpp</a>
 </li>
 </ul>
 
@@ -112,8 +128,8 @@
 <li>GEOGRAPHICLIB_CONSTANTS_HPP
 : <a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">Constants.hpp</a>
 </li>
-<li>GEOGRAPHICLIB_CPLUSPLUS0X_MATH
-: <a class="el" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">Math.hpp</a>
+<li>GEOGRAPHICLIB_CPLUSPLUS11_MATH
+: <a class="el" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">Math.hpp</a>
 </li>
 <li>GEOGRAPHICLIB_DATA
 : <a class="el" href="MagneticModel_8cpp.html#a45687ef771d809c1c369daea074cc109">MagneticModel.cpp</a>
@@ -293,7 +309,7 @@
 
 <h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
 <li>LatLonString()
-: <a class="el" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">Geod.cpp</a>
 </li>
 </ul>
 
@@ -320,6 +336,13 @@
 </ul>
 
 
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>PGM_PIXEL_WIDTH
+: <a class="el" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">Geoid.hpp</a>
+</li>
+</ul>
+
+
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>RCSID_DECL
 : <a class="el" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">Constants.hpp</a>
@@ -353,8 +376,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html
index 0bae984..1c19969 100644
--- a/doc/html/globals_defs.html
+++ b/doc/html/globals_defs.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: File Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -48,6 +63,7 @@
     <ul class="tablist">
       <li><a href="#index_g"><span>g</span></a></li>
       <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
       <li><a href="#index_r"><span>r</span></a></li>
       <li><a href="#index_s"><span>s</span></a></li>
       <li><a href="#index_t"><span>t</span></a></li>
@@ -95,8 +111,8 @@
 <li>GEOGRAPHICLIB_CONSTANTS_HPP
 : <a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">Constants.hpp</a>
 </li>
-<li>GEOGRAPHICLIB_CPLUSPLUS0X_MATH
-: <a class="el" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">Math.hpp</a>
+<li>GEOGRAPHICLIB_CPLUSPLUS11_MATH
+: <a class="el" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">Math.hpp</a>
 </li>
 <li>GEOGRAPHICLIB_DATA
 : <a class="el" href="MagneticModel_8cpp.html#a45687ef771d809c1c369daea074cc109">MagneticModel.cpp</a>
@@ -284,6 +300,13 @@
 </ul>
 
 
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>PGM_PIXEL_WIDTH
+: <a class="el" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">Geoid.hpp</a>
+</li>
+</ul>
+
+
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>RCSID_DECL
 : <a class="el" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">Constants.hpp</a>
@@ -311,8 +334,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
index 3bdf002..e88f5cc 100644
--- a/doc/html/globals_func.html
+++ b/doc/html/globals_func.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: File Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -48,13 +63,13 @@
 <div class="contents">
  <ul>
 <li>AzimuthString()
-: <a class="el" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">Geod.cpp</a>
 </li>
 <li>DistanceStrings()
 : <a class="el" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">Geod.cpp</a>
 </li>
 <li>LatLonString()
-: <a class="el" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">Geod.cpp</a>
 </li>
 <li>main()
 : <a class="el" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">CartConvert.cpp</a>
@@ -73,8 +88,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html
index 40c6f9f..3127035 100644
--- a/doc/html/globals_type.html
+++ b/doc/html/globals_type.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: File Members</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,8 +67,13 @@
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/gravity.html b/doc/html/gravity.html
index cedb1a7..7ff3f99 100644
--- a/doc/html/gravity.html
+++ b/doc/html/gravity.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Gravity models</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,10 +101,11 @@ Installing the gravity models</h2>
    geographiclib-get-gravity all  # to install egm84, egm96, egm2008, wgs84
    geographiclib-get-gravity -h   # for help
 </pre></div><p> This script should be run as a user with write access to the installation directory, which is typically /usr/local/share/GeographicLib (this can be overridden with the -p flag), and the data will then be placed in the "gravity" subdirectory.</p>
-<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being </p>
+<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being one of </p>
 <div class="fragment"><pre class="fragment">
    C:/Documents and Settings/All Users/Application Data/GeographicLib
-</pre></div><p> (which you probably should not change) and the data is installed in the "gravity" sub-directory.</p>
+   C:/ProgramData/GeographicLib
+</pre></div><p> (which you probably should not change) and the data is installed in the "gravity" sub-directory. (The second directory name is an alternate name that Windows 7 for the "Application Data" directory.)</p>
 <p>Otherwise download <em>either</em> the tar.bz2 file <em>or</em> the zip file (they have the same contents). To unpack these, run, for example </p>
 <div class="fragment"><pre class="fragment">
    mkdir -p /usr/local/share/GeographicLib
@@ -222,11 +238,27 @@ Geoid heights on a multi-processor system</h2>
 <li>Use a <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> to compute the geoid height at several points on a circle of latitude. This reduces the cost per point to about 92 us (a reduction by a factor of over 800).</li>
 <li>Compute the values on several circles of latitude in parallel. One of the simplest ways of doing this is with <a href="http://openmp.org">OpenMP</a>; on an 8-processor system, this can speed up the computation by another factor of 8.</li>
 </ul>
-<p>Both of these techniques are illustrated by the following code, GeoidHeightTable.cpp, which computes a table of egm2008 geoid heights on a 1 minute grid. On an 8-processor Intel 2.66 GHz machine using OpenMP (-DHAVE_OPENMP=1), this takes about 40 minutes of elapsed time. (Without these optimizations, the computation would have taken about 200 days!) </p>
-<div class="fragment"><pre class="fragment"><span class="comment">// Compute a table of egm2008 geoid heights on a 1' grid.</span>
+<p>Both of these techniques are illustrated by the following code, which computes a table of geoid heights on a regular grid and writes on the result in a <a href="http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary">.gtx</a> file. On an 8-processor Intel 2.66 GHz machine using OpenMP (-DHAVE_OPENMP=1), it takes about 40 minutes of elapsed time to compute the geoid height for EGM2008 on a 1' gride. (Without these optimizations, the computation would have taken about 200 days!) </p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Write out a gtx file of geoid heights.  For egm2008 at 1' resolution this</span>
+<span class="comment">// takes about 40 mins on a 8-processor Intel 2.66 GHz machine using OpenMP</span>
+<span class="comment">// (-DHAVE_OPENMP=1).</span>
+<span class="comment">//</span>
+<span class="comment">// For the format of gtx files, see</span>
+<span class="comment">// http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary</span>
+<span class="comment">//</span>
+<span class="comment">// data is binary big-endian:</span>
+<span class="comment">//   south latitude edge (degrees double)</span>
+<span class="comment">//   west longitude edge (degrees double)</span>
+<span class="comment">//   delta latitude (degrees double)</span>
+<span class="comment">//   delta longitude (degrees double)</span>
+<span class="comment">//   nlat = number of latitude rows (integer)</span>
+<span class="comment">//   nlong = number of longitude columns (integer)</span>
+<span class="comment">//   nlat * nlong geoid heights (meters float)</span>
 
 <span class="preprocessor">#include <vector></span>
+<span class="preprocessor">#include <iostream></span>
 <span class="preprocessor">#include <fstream></span>
+<span class="preprocessor">#include <string></span>
 <span class="preprocessor">#include <algorithm></span>
 
 <span class="preprocessor">#if HAVE_OPENMP</span>
@@ -235,69 +267,90 @@ Geoid heights on a multi-processor system</h2>
 <span class="preprocessor"></span>
 <span class="preprocessor">#include <<a class="code" href="GravityModel_8hpp.html" title="Header for GeographicLib::GravityModel class.">GeographicLib/GravityModel.hpp</a>></span>
 <span class="preprocessor">#include <<a class="code" href="GravityCircle_8hpp.html" title="Header for GeographicLib::GravityCircle class.">GeographicLib/GravityCircle.hpp</a>></span>
+<span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
 
 <span class="keyword">using namespace </span>std;
 <span class="keyword">using namespace </span>GeographicLib;
 
-<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
-  <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(<span class="stringliteral">"egm2008"</span>);
-  <span class="keywordtype">int</span>
-    ndeg = 60,                  <span class="comment">// Number of intervals per degree</span>
-    nlat = 180 * ndeg + 1,
-    nlon = 360 * ndeg;
-  <span class="keywordtype">double</span> delta = 1 / double(ndeg); <span class="comment">// Grid spacing</span>
+<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
+  <span class="comment">// Hardwired for 3 args:</span>
+  <span class="comment">// 1 = the gravity model (e.g., egm2008)</span>
+  <span class="comment">// 2 = intervals per degree</span>
+  <span class="comment">// 3 = output GTX file</span>
+  <span class="keywordflow">if</span> (argc != 4) {
+    cerr << <span class="stringliteral">"Usage: "</span> << argv[0]
+         << <span class="stringliteral">" gravity-model intervals-per-degree output.gtx\n"</span>;
+    <span class="keywordflow">return</span> 1;
+  }
+  <span class="keywordflow">try</span> {
+    <span class="keywordtype">string</span> model(argv[1]);
+    <span class="comment">// Number of intervals per degree</span>
+    <span class="keywordtype">int</span> ndeg = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(string(argv[2]));
+    <span class="keywordtype">string</span> filename(argv[3]);
+    <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(model);
+    <span class="keywordtype">int</span>
+      nlat = 180 * ndeg + 1,
+      nlon = 360 * ndeg;
+    <span class="keywordtype">double</span>
+      delta = 1 / double(ndeg), <span class="comment">// Grid spacing</span>
+      latorg = -90,
+      lonorg = -180;
+    <span class="comment">// Write results as floats in binary mode</span>
+    ofstream file(filename.c_str(), ios::binary);
 
-  <span class="comment">// Write results as floats in binary mode</span>
-  ofstream file(<span class="stringliteral">"egm2008-geoid.dat"</span>, ios::binary);
+    <span class="comment">// Write header</span>
+    {
+      <span class="keywordtype">double</span> transform[] = {latorg, lonorg, delta, delta};
+      <span class="keywordtype">unsigned</span> sizes[] = {nlat, nlon};
+      <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::writearray<double, double, true>(file, transform, 4);
+      <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::writearray<unsigned, unsigned, true>(file, sizes, 2);
+    }
 
-  <span class="comment">// Compute and store results for nbatch latitudes at a time</span>
-  <span class="keyword">const</span> <span class="keywordtype">int</span> nbatch = 64;
-  vector< vector<float> > N(nbatch, vector<float>(nlon));
+    <span class="comment">// Compute and store results for nbatch latitudes at a time</span>
+    <span class="keyword">const</span> <span class="keywordtype">int</span> nbatch = 64;
+    vector< vector<float> > N(nbatch, vector<float>(nlon));
 
-  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { <span class="comment">// Loop over batches</span>
-    <span class="keywordtype">int</span> nlat0 = min(nlat, ilat0 + nbatch);
+    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { <span class="comment">// Loop over batches</span>
+      <span class="keywordtype">int</span> nlat0 = min(nlat, ilat0 + nbatch);
 
 <span class="preprocessor">#if HAVE_OPENMP</span>
 <span class="preprocessor"></span><span class="preprocessor">#pragma omp parallel for</span>
 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<span class="preprocessor"></span>    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat) { <span class="comment">// Loop over latitudes</span>
-      <span class="keywordtype">double</span> lat = 90 - ilat * delta, h = 0;
-      <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
-      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilon = 0; ilon < nlon; ++ilon) { <span class="comment">// Loop over longitudes</span>
-        <span class="keywordtype">double</span> lon = ilon * delta;
-        N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
-      } <span class="comment">// longitude loop</span>
-    }   <span class="comment">// latitude loop</span>
-    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat)
-      file.write(reinterpret_cast<char *>(N[ilat - ilat0].data()),
-                 nlon * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));
+<span class="preprocessor"></span>      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat) { <span class="comment">// Loop over latitudes</span>
+        <span class="keywordtype">double</span>
+          lat = latorg + (ilat / ndeg) + delta * (ilat - ndeg * (ilat / ndeg)),
+          h = 0;
+        <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
+        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilon = 0; ilon < nlon; ++ilon) { <span class="comment">// Loop over longitudes</span>
+          <span class="keywordtype">double</span> lon = lonorg
+            + (ilon / ndeg) + delta * (ilon - ndeg * (ilon / ndeg));
+          N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
+        } <span class="comment">// longitude loop</span>
+      }   <span class="comment">// latitude loop -- end of parallel section</span>
 
-  } <span class="comment">// batch loop</span>
+      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat) <span class="comment">// write out data</span>
+        Utility::writearray<float, float, true>(file, N[ilat - ilat0]);
+    } <span class="comment">// batch loop</span>
+  }
+  <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
+    cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+    <span class="keywordflow">return</span> 1;
+  }
+  <span class="keywordflow">catch</span> (...) {
+    cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+    <span class="keywordflow">return</span> 1;
+  }
+  <span class="keywordflow">return</span> 0;
 }
-</pre></div><p>OpenMP is supported by g++ and Visual Studio but these compilers need to be instructed to honor the OpenMP directives. CMake can do the necessary work with this CMakeLists.txt: </p>
-<div class="fragment"><pre class="fragment">
-cmake_minimum_required (VERSION 2.6)
-project (GeoidHeightTable)
-# GravityModel was introduced in GeographicLib 1.16.
-find_package (GeographicLib 1.16 REQUIRED)
-find_package (OpenMP)
+</pre></div><p>This example is built if cmake is invoked with <code>-D GEOGRAPHICLIB_EXAMPLES=ON</code>. cmake will add in support for OpenMP, if it is available.</p>
+<center> Back to <a class="el" href="geoid.html">Geoid height</a>. Forward to <a class="el" href="magnetic.html">Magnetic models</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
 
-include_directories (${GeographicLib_INCLUDE_DIRS})
-add_executable (GeoidHeightTable GeoidHeightTable.cpp)
-target_link_libraries (GeoidHeightTable ${GeographicLib_LIBRARIES})
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
 
-if (OPENMP_FOUND OR OpenMP_FOUND)
-  set_target_properties (GeoidHeightTable PROPERTIES
-    COMPILE_FLAGS ${OpenMP_CXX_FLAGS}
-    COMPILE_DEFINITIONS HAVE_OPENMP=1)
-  if (NOT WIN32)
-    set_target_properties (GeoidHeightTable PROPERTIES
-      LINK_FLAGS ${OpenMP_CXX_FLAGS})
-  endif (NOT WIN32)
-endif (OPENMP_FOUND OR OpenMP_FOUND)
-</pre></div><center> Back to <a class="el" href="geoid.html">Geoid height</a>. Forward to <a class="el" href="magnetic.html">Magnetic models</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
 </html>
diff --git a/doc/html/index.html b/doc/html/index.html
index a22639f..50b43c4 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Geographic library</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li class="current"><a href="index.html"><span>Main Page</span></a></li>
@@ -37,11 +52,11 @@
 </div>
 <div class="contents">
 <div class="textblock"><dl class="author"><dt><b>Author:</b></dt><dd>Charles Karney <<a href="mailto:charles at karney.com">charles at karney.com</a>> </dd></dl>
-<dl class="version"><dt><b>Version:</b></dt><dd>1.18 </dd></dl>
-<dl class="date"><dt><b>Date:</b></dt><dd>2012-02-18</dd></dl>
+<dl class="version"><dt><b>Version:</b></dt><dd>1.21 </dd></dl>
+<dl class="date"><dt><b>Date:</b></dt><dd>2012-04-25</dd></dl>
 <h2><a class="anchor" id="abstract"></a>
 Abstract</h2>
-<p>GeographicLib is a small set of <a href="annotated.html">C++ classes</a> for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems. The emphasis is on returning accurate results with errors close to round-off (about 5–15 nanometers). New accurate algorithms for <a class="el" href="geodesic.html">Geodesic [...]
+<p>GeographicLib is a small set of <a href="annotated.html">C++ classes</a> for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems. The emphasis is on returning accurate results with errors close to round-off (about 5–15 nanometers). New accurate algorithms for <a class="el" href="geodesic.html">Geodesic [...]
 <p>This library is <em>not</em> a general purpose projection library; use <a href="http://trac.osgeo.org/proj/">proj.4</a> for that. On the other hand, it does provide the core functionality offered by <a href="http://earth-info.nima.mil/GandG/geotrans/">geotrans</a> and it cures several of the defects of that package.</p>
 <h2><a class="anchor" id="download"></a>
 Download</h2>
@@ -51,16 +66,17 @@ Download</h2>
 </ul>
 <p>The code is available for download at</p>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">GeographicLib-1.18.tar.gz</a></li>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.zip/download">GeographicLib-1.18.zip</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.tar.gz/download">GeographicLib-1.21.tar.gz</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.zip/download">GeographicLib-1.21.zip</a></li>
 </ul>
 <p>as either a compressed tar file (tar.gz) or a zip file. (The two archives have identical contents.) Alternatively you can get the latest stable release using git </p>
 <div class="fragment"><pre class="fragment">
   git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib
   cd geographiclib; git checkout stable
-</pre></div><p> There is also a binary installer for Windows available at</p>
+</pre></div><p> There are also a binary installers for Windows available at</p>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">GeographicLib-1.18-win32.exe</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">GeographicLib-1.21-win32.exe</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">GeographicLib-1.21-win64.exe</a></li>
 </ul>
 <p>It is licensed under the <a href="http://www.opensource.org/licenses/MIT">MIT/X11 License</a>; see <a href="LICENSE.txt">LICENSE.txt</a> for the terms. For more information, see <a href="http://geographiclib.sourceforge.net/.">http://geographiclib.sourceforge.net/.</a></p>
 <h2><a class="anchor" id="contents"></a>
@@ -69,20 +85,25 @@ Contents</h2>
 <li><a class="el" href="intro.html">Introduction</a></li>
 <li><a class="el" href="install.html">Installing GeographicLib</a></li>
 <li><a class="el" href="start.html">Getting started</a></li>
-<li><a class="el" href="utilities.html">Utility Programs</a></li>
+<li><a class="el" href="utilities.html">Utility programs</a></li>
 <li><a class="el" href="organization.html">Code organization</a></li>
 <li><a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a></li>
 <li><a class="el" href="geoid.html">Geoid height</a></li>
 <li><a class="el" href="gravity.html">Gravity models</a></li>
 <li><a class="el" href="magnetic.html">Magnetic models</a></li>
-<li><a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a></li>
-<li><a class="el" href="transversemercator.html">Transverse Mercator Projection</a></li>
+<li><a class="el" href="geodesic.html">Geodesics on the ellipsoid</a></li>
+<li><a class="el" href="transversemercator.html">Transverse Mercator projection</a></li>
 <li><a class="el" href="geocentric.html">Geocentric coordinates</a></li>
-<li><a class="el" href="old.html">Old Versions</a></li>
+<li><a class="el" href="old.html">Old versions</a></li>
 </ul>
 <center> Forward to <a class="el" href="intro.html">Introduction</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/install.html b/doc/html/install.html
index 5232977..2e726c7 100644
--- a/doc/html/install.html
+++ b/doc/html/install.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Installing %GeographicLib</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,17 +51,26 @@
 <div class="title">Installing GeographicLib </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib has been developed under Linux with the g++ compiler (versions 4.0 and later) and under Windows with Visual Studio 2005, 2008, and 2010. Earlier versions were tested also under Darwin and Solaris. It should compile on a wide range of other systems. Fi [...]
+<div class="textblock"><center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib has been developed under Linux with the g++ compiler (versions 4.0 and later) and under Windows with Visual Studio 2005, 2008, and 2010. Earlier versions were tested also under Darwin and Solaris. It should compile on a wide range of other systems. Fi [...]
 <ul>
 <li><a class="el" href="install.html#cmake">Installation with cmake</a>. This is the preferred installation method as it will work on the widest range of platforms. However it requires that you have <a href="http://www.cmake.org">cmake</a> installed.</li>
 <li><a class="el" href="install.html#autoconf">Installation using the autoconfigure tools</a>. This method works for most Unix-like systems, including Linux and Mac OS X.</li>
 <li><a class="el" href="install.html#gnu">Installation with GNU compiler and Make</a>. This is a simple installation method that works with g++ and GNU make on Linux and many Unix platforms.</li>
 <li><a class="el" href="install.html#windows">Installation on Windows</a>. This is a simple installation method that works with Visual Studio 2005, 2008, and 2010 under Windows.</li>
-<li><a class="el" href="install.html#windowsbin">Using a binary installer for Windows.</a>. Use this installation method if you only need to use the utility programs supplied with GeographicLib. (This method also installs the header files and the static library for use by Visual Studio 2010.)</li>
+<li><a class="el" href="install.html#windowsbin">Using a binary installer for Windows</a>. Use this installation method if you only need to use the <a class="el" href="utilities.html">Utility programs</a> supplied with GeographicLib. (This method also installs the header files and the static library for use by Visual Studio 2010.)</li>
 <li><a class="el" href="install.html#qt">Building the library for use with Qt</a>. How to compile GeographicLib so that it can be used by Qt programs.</li>
 <li><a class="el" href="install.html#maintainer">Maintainer tasks</a>. This describes addition tasks of interest only to the maintainers of this code.</li>
 </ul>
-<p>This section documents only how to install the software. If you wish to use GeographicLib to evaluate geoid heights or the earth's gravitational or magnetic fields, then you must also install the relevant data files. See <a class="el" href="geoid.html#geoidinst">Installing the geoid datasets</a>, <a class="el" href="gravity.html#gravityinst">Installing the gravity models</a>, and <a class="el" href="magnetic.html#magneticinst">Installing the magnetic field models</a> for instructions.</p>
+<p>This section documents only how to install the <em>software</em>. If you wish to use GeographicLib to evaluate geoid heights or the earth's gravitational or magnetic fields, then you must also install the relevant data files. See <a class="el" href="geoid.html#geoidinst">Installing the geoid datasets</a>, <a class="el" href="gravity.html#gravityinst">Installing the gravity models</a>, and <a class="el" href="magnetic.html#magneticinst">Installing the magnetic field models</a> for inst [...]
+<p>The first two installation methods use two important techniques which make software maintanence simpler</p>
+<ul>
+<li><b>Out-of-source builds:</b> This means that you create a separate directory for compiling the code. In the description here the directories are called BUILD and are located in the top-level of the source tree. You might want to use a suffix to denote the type of build, e.g., BUILD-vc9 for Visual Studio 9, or BUILD-shared for a build which creates a shared library. The advantages of out-of-source builds are:<ul>
+<li>You don't mess up the source tree, so it's easy to "clean up". Indeed the source tree might be on a read-only file system.</li>
+<li>Builds for multiple platforms or compilers don't interfere with each other.</li>
+</ul>
+</li>
+<li><b>The library is installed:</b> After compilation, there is a separate <em>install</em> step which copies the headers, libraries, tools, and documentation to a "central" location. You may at this point delete the source and build directories. If you have administrative privileges, you can install GeographicLib for the use of all users (e.g., in /usr/local). Otherwise, you can install it for your personal use (e.g., in $HOME/packages).</li>
+</ul>
 <h2><a class="anchor" id="cmake"></a>
 Installation with cmake</h2>
 <p>This is the recommended method of installation; however it requires that <a href="http://www.cmake.org">cmake</a> be installed on your system. This permits GeographicLib to be built either as a shared or a static library on a wide variety of systems. cmake can also determine the capabilities of your system and adjust the compilation of the libraries and examples appropriately.</p>
@@ -56,19 +80,19 @@ Installation with cmake</h2>
 <p>Here are the steps to compile and install GeographicLib:</p>
 <ul>
 <li>Unpack the source, running one of <div class="fragment"><pre class="fragment">
-  tar xfpz GeographicLib-1.18.tar.gz
-  unzip -q GeographicLib-1.18.zip
-  git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib </pre></div> then enter the directory created with one of <div class="fragment"><pre class="fragment">
-  cd GeographicLib-1.18
-  cd geographiclib; git checkout stable </pre></div></li>
+  tar xfpz GeographicLib-1.21.tar.gz
+  unzip -q GeographicLib-1.21.zip </pre></div> then enter the directory created with one of <div class="fragment"><pre class="fragment">
+  cd GeographicLib-1.21 </pre></div></li>
 <li>Create a separate build directory and enter it, for example, <div class="fragment"><pre class="fragment">
   mkdir BUILD
   cd BUILD</pre></div></li>
-<li>Run cmake, pointing it to the parent directory (..). On Linux, Unix, and MaxOSX systems, the command is <div class="fragment"><pre class="fragment">
+<li>Run cmake, pointing it to the source directory (..). On Linux, Unix, and MacOSX systems, the command is <div class="fragment"><pre class="fragment">
   cmake .. </pre></div> For Windows, the command is typically one of <div class="fragment"><pre class="fragment">
   cmake -G "Visual Studio 10" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc10/GeographicLib ..
   cmake -G "Visual Studio 9 2008" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc9/GeographicLib ..
   cmake -G "Visual Studio 8 2005" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc8/GeographicLib ..
+</pre></div> Instead of setting CMAKE_INSTALL_PREFIX, you can (on Windows) set CMAKE_PREFIX_PATH to point to its parent directory, e.g., <div class="fragment"><pre class="fragment">
+  cmake -G "Visual Studio 10" -D CMAKE_PREFIX_PATH=C:/pkg-vc10 ..
 </pre></div> The definitions of CMAKE_INSTALL_PREFIX are optional (see below). The settings given above are recommended to ensure that packages that use GeographicLib use the version compiled with the right compiler. If you need to rerun cmake, use <div class="fragment"><pre class="fragment">
   cmake . </pre></div> possibly including some options via <code>-D</code> (see the next step).</li>
 <li>cmake allows you to configure how GeographicLib is built and installed by supplying options, for example <div class="fragment"><pre class="fragment">
@@ -82,8 +106,9 @@ Installation with cmake</h2>
   RelWithDebInfo
   MinSizeRel
 </pre></div> (With IDE compile environments, you get to select the build type in the IDE.)</li>
-<li><code>ENABLE_MATLAB</code> (default: OFF). Set this to ON to get cmake to try to compile and install the Matlab/Octave interface. At present this is compiled for Matlab under Windows and for Octave under Linux. See <a class="el" href="other.html#matlab">Matlab and Octave interfaces</a> for more information.</li>
+<li><code>MATLAB_COMPILER</code> (default: OFF). Set this to either "mex" (for Matlab) or "mkoctfile" (for Octave) to specify the compiler to use for the Matlab/Octave interface. See <a class="el" href="other.html#matlab">Matlab and Octave interfaces</a> for more information.</li>
 <li><code>MAINTAINER</code> (default: ON for non-Windows environments provided doxygen, pod2man, and pod2html are found). This affects whether the targets for creating source packages are activated. See <a class="el" href="install.html#maintainer">Maintainer tasks</a> for details.</li>
+<li><code>GEOGRAPHICLIB_EXAMPLES</code> (default: ON for the maintainer and OFF otherwise). If set to ON, then the short example programs in the <code>examples</code> directory are built.</li>
 </ul>
 </li>
 <li>Build and install the software. In non-IDE environments, run <div class="fragment"><pre class="fragment">
@@ -99,12 +124,15 @@ Installation using the autoconfigure tools</h2>
 <p>The method works on most Unix-like systems including Linux and Mac OS X. Here are the steps to compile and install GeographicLib:</p>
 <ul>
 <li>Unpack the source, running <div class="fragment"><pre class="fragment">
-  tar xfpz GeographicLib-1.18.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
-  cd GeographicLib-1.18 </pre></div></li>
-<li>Configure the software with <div class="fragment"><pre class="fragment">
-  ./configure </pre></div></li>
+  tar xfpz GeographicLib-1.21.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
+  cd GeographicLib-1.21 </pre></div></li>
+<li>Create a separate build directory and enter it, for example, <div class="fragment"><pre class="fragment">
+  mkdir BUILD
+  cd BUILD</pre></div></li>
+<li>Configure the software, specifing the path of the source directory, with <div class="fragment"><pre class="fragment">
+  ../configure </pre></div></li>
 <li>By default GeographicLib will be installed under /usr/local. You can change this with, for example <div class="fragment"><pre class="fragment">
-  ./configure --prefix=/tmp/geographic </pre></div></li>
+  ../configure --prefix=/tmp/geographic </pre></div></li>
 <li>Compile and install the software with <div class="fragment"><pre class="fragment">
   make
   make install </pre></div></li>
@@ -116,8 +144,8 @@ Installation with GNU compiler and Make</h2>
 <p>Here are the steps to compile and install GeographicLib:</p>
 <ul>
 <li>Unpack the source, running <div class="fragment"><pre class="fragment">
-  tar xfpz GeographicLib-1.18.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
-  cd GeographicLib-1.18 </pre></div></li>
+  tar xfpz GeographicLib-1.21.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
+  cd GeographicLib-1.21 </pre></div></li>
 <li>Edit <div class="fragment"><pre class="fragment">
   include/GeographicLib/Config.h </pre></div> If your C++ compiler does not recognize the long double type (unlikely), insert <div class="fragment"><pre class="fragment"><span class="preprocessor">  #undef HAVE_LONG_DOUBLE </span>
 </pre></div> If you machine using big endian ordering, then insert <div class="fragment"><pre class="fragment"><span class="preprocessor">  #define WORDS_BIGENDIAN 1 </span>
@@ -133,24 +161,24 @@ Installation on Windows</h2>
 <p>This method requires Visual Studio 2005, 2008, or 2010. This builds a static library and the utilities. If you only have Visual Studio 2003, use cmake to create the necessary solution file, see <a class="el" href="install.html#cmake">Installation with cmake</a>. (cmake is needed to build the Matlab interface and to run the tests.)</p>
 <ul>
 <li>Unpack the source, running <div class="fragment"><pre class="fragment">
-  unzip -q GeographicLib-1.18.zip </pre></div></li>
-<li>Open GeographicLib-1.18/windows/GeographicLib-vc10.sln in Visual Studio 2010 (for Visual Studio 2005 and 2008, replace -vc10 by -vc8 or -vc9).</li>
+  unzip -q GeographicLib-1.21.zip </pre></div></li>
+<li>Open GeographicLib-1.21/windows/GeographicLib-vc10.sln in Visual Studio 2010 (for Visual Studio 2005 and 2008, replace -vc10 by -vc8 or -vc9).</li>
 <li>Pick the build type (e.g., Release), and select "Build Solution".</li>
 <li>The library and the compiled examples are in the windows/Release.</li>
 <li>Copy the library windows/Release/Geographic.lib and the headers in include/GeographicLib somewhere convenient. The headers should remain in a directory named GeographicLib. If you expect to use the Matlab/Octave interface, copy matlab/*.m and matlab/*.cpp to a directory in your matlab/octave path, see <a class="el" href="other.html#matlab">Matlab and Octave interfaces</a> for instructions on compiling the interface. For documentation, open <a href="index.html">doc/html/index.html</a> [...]
 </ul>
 <h2><a class="anchor" id="windowsbin"></a>
-Using a binary installer for Windows.</h2>
+Using a binary installer for Windows</h2>
 <p>Use this method if you only need to use the GeographicLib utilities. The header files and static library are provided, but can only be used by Visual Studio 2010 in release mode. However, if you plan to use the library, it is advisable to build it with the compiler you are using for your own code using either <a class="el" href="install.html#cmake">Installation with cmake</a> or <a class="el" href="install.html#windows">Installation on Windows</a>.</p>
-<p>Download and run <a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">GeographicLib-1.18-win32.exe</a>:</p>
+<p>Download and run <a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">GeographicLib-1.21-win32.exe</a> or <a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">GeographicLib-1.21-win64.exe</a>:</p>
 <ul>
 <li>read the MIT/X11 License agreement,</li>
 <li>select whether you want your PATH modified,</li>
-<li>select the installation folder, by default C:\pkg-vc10\GeographicLib-1.18.</li>
+<li>select the installation folder, by default C:\pkg-vc10\GeographicLib-1.21 or C:\pkg-vc10-x64\GeographicLib-1.21,</li>
 <li>select the start menu folder,</li>
 <li>and install.</li>
 </ul>
-<p>(Note that the default installation folder adheres the the convention given in <a class="el" href="install.html#cmake">Installation with cmake</a>.) The start menu will now include links to the documentation for the library and for the utilities (and a link for uninstalling the library). If you ask for your PATH to be modified, it will include C:/pkg-vc10/GeographicLib-1.18/bin where the utilities are installed. The headers and library are installed in the include/GeographicLib and li [...]
+<p>(Note that the default installation folder adheres the the convention given in <a class="el" href="install.html#cmake">Installation with cmake</a>.) The start menu will now include links to the documentation for the library and for the utilities (and a link for uninstalling the library). If you ask for your PATH to be modified, it will include C:/pkg-vc10/GeographicLib-1.21/bin where the utilities are installed. The headers and library are installed in the include/GeographicLib and li [...]
 <h2><a class="anchor" id="qt"></a>
 Building the library for use with Qt</h2>
 <p>If Qt is using a standard compiler, then build GeographicLib with that same compiler (and optimization flags) as Qt.</p>
@@ -178,17 +206,27 @@ Maintainer tasks</h2>
   git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib
 </pre></div><p> The autoconf configuration script, the html version of the documentation, and the formatted man pages not checked into git. In order to create the autoconf configuration script, run </p>
 <div class="fragment"><pre class="fragment">
-  sh autogen.sh </pre></div><p> in the top level directory. Provided you are running on a system with doxygen, pod2man, and pod2html installed, then you can create the documentation and the man pages by building the system using cmake (the <code>MAINTAINER</code> configuration variable set to ON, if the necessary tools are found) or configure. In the case of cmake, you must in addition run </p>
+  sh autogen.sh </pre></div><p> in the top level directory. Provided you are running on a system with doxygen, pod2man, and pod2html installed, then you can create the documentation and the man pages by building the system using cmake (the <code>MAINTAINER</code> configuration variable set to ON, if the necessary tools are found) or configure.</p>
+<p>In the case of cmake, you then run </p>
 <div class="fragment"><pre class="fragment">
   make dist </pre></div><p> which will copy the documentation and man pages from the build directory back into the source tree and package the resulting source tree for distribution as </p>
 <div class="fragment"><pre class="fragment">
-  GeographicLib-1.18.tar.gz
-  GeographicLib-1.18.zip </pre></div><p> Finally, </p>
+  GeographicLib-1.21.tar.gz
+  GeographicLib-1.21.zip </pre></div><p> Finally, </p>
 <div class="fragment"><pre class="fragment">
   make package </pre></div><p> or building PACKAGE in Visual Studio will create a binary installer for GeographicLib. For Windows, this requires in the installation of <a href="http://nsis.sourceforge.net">NSIS</a>.</p>
-<center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<p>With configure, run </p>
+<div class="fragment"><pre class="fragment">
+  make dist-gzip </pre></div><p> which will create the additional files and packages the results ready for distribution as </p>
+<div class="fragment"><pre class="fragment">
+  geographiclib-1.21.tar.gz </pre></div><center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/intro.html b/doc/html/intro.html
index c14b443..bacc17b 100644
--- a/doc/html/intro.html
+++ b/doc/html/intro.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Introduction</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -47,14 +62,19 @@
 <li>Well defined and stable conventions for the conversion between UTM/UPS to MGRS coordinates.</li>
 <li>Detailed internal documentation on the algorithms. For the most part GeographicLib uses published algorithms and references are given. If changes have been made (usually to improve the numerical accuracy), these are described in the code.</li>
 </ul>
-<p>Various <a class="el" href="utilities.html">Utility Programs</a> are provided with the library. These illustrate the use of the library and are useful in their own right. This library and the utilities have been tested with g++ 4.4 under Linux, with g++ 4.2 under Mac OS X, and with MS Visual Studio 2008 and 2010.</p>
+<p>Various <a class="el" href="utilities.html">Utility programs</a> are provided with the library. These illustrate the use of the library and are useful in their own right. This library and the utilities have been tested with g++ 4.4 under Linux, with g++ 4.2 under Mac OS X, and with MS Visual Studio 2008 and 2010.</p>
 <p>Matlab, Javascript, and Python interfaces are provided to portions of GeographicLib; see <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>.</p>
-<p>The section <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a> documents the method of solving the geodesic problem.</p>
-<p>The section <a class="el" href="transversemercator.html">Transverse Mercator Projection</a> documents various properties of this projection.</p>
+<p>The section <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a> documents the method of solving the geodesic problem.</p>
+<p>The section <a class="el" href="transversemercator.html">Transverse Mercator projection</a> documents various properties of this projection.</p>
 <p>Undoubtedly, bugs lurk in this code and in the documentation. Please report any you find to <<a href="mailto:charles at karney.com">charles at karney.com</a>>.</p>
 <center> Forward to <a class="el" href="install.html">Installing GeographicLib</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/magnetic.html b/doc/html/magnetic.html
index d64f5ba..597ff27 100644
--- a/doc/html/magnetic.html
+++ b/doc/html/magnetic.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Magnetic models</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
 <div class="title">Magnetic models </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib can compute the earth's magnetic field by a magnetic model using the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" hr [...]
+<div class="textblock"><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib can compute the earth's magnetic field by a magnetic model using the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" hr [...]
 Warning"</a> this is provided with igrf11. Although the advice is specific to igrf11, many of the comments apply to all magnetic field models.</p>
 <p>The supported models are</p>
 <ul>
@@ -75,10 +90,11 @@ Installing the magnetic field models</h2>
    geographiclib-get-magnetic all  # to install wmm2010, igrf11, emm2010
    geographiclib-get-magnetic -h   # for help
 </pre></div><p> This script should be run as a user with write access to the installation directory, which is typically /usr/local/share/GeographicLib (this can be overridden with the -p flag), and the data will then be placed in the "magnetic" subdirectory.</p>
-<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being </p>
+<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being one of </p>
 <div class="fragment"><pre class="fragment">
    C:/Documents and Settings/All Users/Application Data/GeographicLib
-</pre></div><p> (which you probably should not change) and the data is installed in the "magnetic" sub-directory.</p>
+   C:/ProgramData/GeographicLib
+</pre></div><p> (which you probably should not change) and the data is installed in the "magnetic" sub-directory. (The second directory name is an alternate name that Windows 7 for the "Application Data" directory.)</p>
 <p>Otherwise download <em>either</em> the tar.bz2 file <em>or</em> the zip file (they have the same contents). To unpack these, run, for example </p>
 <div class="fragment"><pre class="fragment">
    mkdir -p /usr/local/share/GeographicLib
@@ -161,9 +177,14 @@ MaxHeight       600000
 # the name of this file.  The coefficients were obtained from IGRF11.COF
 # in the geomag70 distribution.
 ID              IGRF11-A
-</pre></div><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</pre></div><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/namespaceGeographicLib.html b/doc/html/namespaceGeographicLib.html
index ab6218c..8cd0653 100644
--- a/doc/html/namespaceGeographicLib.html
+++ b/doc/html/namespaceGeographicLib.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: GeographicLib Namespace Reference</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -124,8 +139,13 @@ Classes</h2></td></tr>
 <div class="textblock"><p>Namespace for GeographicLib. </p>
 <p>All of GeographicLib is defined within the <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a> namespace. In addition all the header files are included via GeographicLib/filename. This minimizes the likelihood of conflicts with other packages. </p>
 </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html
index 40c74a1..2e60e1e 100644
--- a/doc/html/namespaces.html
+++ b/doc/html/namespaces.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Namespace List</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,8 +60,13 @@
   <tr><td class="indexkey"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td><td class="indexvalue">Namespace for GeographicLib </td></tr>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/old.html b/doc/html/old.html
index 4a395d0..fa830a7 100644
--- a/doc/html/old.html
+++ b/doc/html/old.html
@@ -2,24 +2,39 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Old Versions</title>
+<title>GeographicLib: Old versions</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,12 +48,53 @@
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">Old Versions </div>  </div>
+<div class="title">Old versions </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>List of versions in reverse chronological order together with a brief list of changes. (Note: Old versions of the library use a year-month style of numbering. Now, the library uses a major and minor version number.)</p>
+<div class="textblock"><center> Back to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>List of versions in reverse chronological order together with a brief list of changes. (Note: Old versions of the library use a year-month style of numbering. Now, the library uses a major and minor version number.) Recent versions of GeographicLib are available at <a href="http://sf.net/projects/geographiclib/fi [...]
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">1.18 (released 2012-02-18)</a><ul>
+<li>Version 1.21 (released 2012-04-25)<ul>
+<li>Support colon-separated DMS output:<ul>
+<li><a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS::Encode</a> and <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">GeographicLib::GeoCoords::DMSRepresentation</a> generalized;</li>
+<li><a href="GeoConvert.1.html">GeoConvert</a> and <a href="Geod.1.html">Geod</a> now accept a -: option.</li>
+</ul>
+</li>
+<li><a href="GeoidEval.1.html">GeoidEval</a> does not print the gradient of the geoid height by default (because it's subject to large errors); give the -g option to get the gradient printed.</li>
+<li>Work around optimization BUG in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> with tdm mingw g++ version 4.6.1.</li>
+<li>autoconf fixed to ensure that that out-of-sources builds work; document this as the preferred method of using autoconf.</li>
+<li>cmake tweaks:<ul>
+<li>simplify the configuration of doxygen;</li>
+<li>allow the Matlab compiler to be specified with the MATLAB_COMPILER option.</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Version 1.20 (released 2012-03-23)<ul>
+<li>cmake tweaks:<ul>
+<li>improve find_package's matching of compiler versions;</li>
+<li>CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;</li>
+<li>add "x64" to the package name for the 64-bit binary installer;</li>
+<li>fix cmake warning with Visual Studio Express.</li>
+</ul>
+</li>
+<li>Fix <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> to deal with aggessive iterator checking by Visual Studio.</li>
+<li>Fix transcription BUG is Geodesic.js.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Version 1.19 (released 2012-03-13)<ul>
+<li>Slight improvement in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> for very short lines.</li>
+<li>Fix argument checking tests in <a class="el" href="classGeographicLib_1_1MGRS.html#a91de10ebde478dbb85b3c7d057ff97b9">GeographicLib::MGRS::Forward</a>.</li>
+<li>Add --comment-delimiter and --line-separator options to the <a class="el" href="utilities.html">Utility programs</a>.</li>
+<li>Add installer for 64-bit Windows; the compiled Matlab interface is supplied with the Windows 64-bit installer only.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Version 1.18 (released 2012-02-18)<ul>
 <li>Improve documentation on configuration with cmake.</li>
 <li>cmake's find_package ensures that the compiler versions match on Windows.</li>
 <li>Improve documentation on compiling Matlab interface.</li>
@@ -47,7 +103,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.17.tar.gz/download">1.17 (released 2012-01-21)</a><ul>
+<li>Version 1.17 (released 2012-01-21)<ul>
 <li>Work around optimization BUG in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> with g++ version 4.4.0 (mingw).</li>
 <li>Fix BUG in argument checking with <a class="el" href="classGeographicLib_1_1OSGB.html#a0a79e8f2babae1eb0305a0e728fea8c8">GeographicLib::OSGB::GridReference</a>.</li>
 <li>Fix missing include file in <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">GeographicLib::SphericalHarmonic2</a>.</li>
@@ -57,12 +113,12 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.16.tar.gz/download">1.16 (released 2011-12-07)</a><ul>
+<li>Version 1.16 (released 2011-12-07)<ul>
 <li>Add calculation of the earth's gravitational field:<ul>
 <li>add <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> classes;</li>
 <li>add command line utility <a href="Gravity.1.html">Gravity</a>;</li>
 <li>add <a class="el" href="gravity.html">Gravity models</a>;</li>
-<li>add <a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">GeographicLib::Constants::WGS84_GM()</a>, <a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">GeographicLib::Constants::WGS84_omega()</a>, and similarly for GRS80.</li>
+<li>add <a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">GeographicLib::Constants::WGS84_GM()</a>, <a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">GeographicLib::Constants::WGS84_omega()</a>, and similarly for GRS80.</li>
 </ul>
 </li>
 <li>Build uses GEOGRAPHICLIB_DATA to specify a common parent directory for geoid, gravity, and magnetic data (instead of GEOGRAPHICLIB_GEOID_PATH, etc.); similarly, <a href="GeoidEval.1.html">GeoidEval</a>, <a href="Gravity.1.html">Gravity</a>, and <a href="MagneticField.1.html">MagneticField</a>, look at the environment variable GEOGRAPHICLIB_DATA to locate the data.</li>
@@ -85,7 +141,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.15.tar.gz/download">1.15 (released 2011-11-08)</a><ul>
+<li>Version 1.15 (released 2011-11-08)<ul>
 <li>Add calculation of the earth's magnetic field:<ul>
 <li>add <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> classes;</li>
 <li>add command line utility <a href="MagneticField.1.html">MagneticField</a>;</li>
@@ -103,7 +159,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.14.tar.gz/download">1.14 (released 2011-09-30)</a><ul>
+<li>Version 1.14 (released 2011-09-30)<ul>
 <li>Ensure that geographiclib-config.cmake is relocatable.</li>
 <li>Allow more unicode symbols to be used in <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a>.</li>
 <li>Modify <a href="GeoidEval.1.html">GeoidEval</a> so that it can be used to convert the height datum for LIDAR data.</li>
@@ -119,7 +175,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.13.tar.gz/download">1.13 (released 2011-08-13)</a><ul>
+<li>Version 1.13 (released 2011-08-13)<ul>
 <li>Changes to I/O:<ul>
 <li>allow : (colon) to be used as a DMS separator in <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode(const std::string&, flag&)</a>;</li>
 <li>also accept Unicode symbols for degrees, minutes, and seconds (coded as UTF-8);</li>
@@ -144,7 +200,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.12.tar.gz/download">1.12 (released 2011-07-21)</a><ul>
+<li>Version 1.12 (released 2011-07-21)<ul>
 <li>Change license to MIT/X11.</li>
 <li>Add <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class and equivalent Matlab function.</li>
 <li>Provide Javascript and Python implementations of geodesic routines.</li>
@@ -156,7 +212,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.11.tar.gz/download">1.11 (released 2011-06-27)</a><ul>
+<li>Version 1.11 (released 2011-06-27)<ul>
 <li>Changes to <a href="Planimeter.1.html">Planimeter</a>:<ul>
 <li>add -l flag to <a href="Planimeter.1.html">Planimeter</a> for polyline calculations;</li>
 <li>trim precision of area to 3 decimal places;</li>
@@ -168,8 +224,8 @@
 <li>FIX BUG: accommodate tellg() returning -1 at end of string.</li>
 <li>Change way flattening of the ellipsoid is specified:<ul>
 <li>constructors take <em>f</em> argument which is taken to be the flattening if <em>f</em> < 1 and the inverse flattening otherwise (this is a compatible change for spheres and oblate ellipsoids, but it is an INCOMPATIBLE change for prolate ellipsoids);</li>
-<li>the -e arguments to the <a class="el" href="utilities.html">Utility Programs</a> are handled similarly; in addition, simple fractions, e.g., 1/297, can be used for the flattening;</li>
-<li>introduce <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">GeographicLib::Constants::WGS84_f()</a> for the WGS84 flattening (and deprecate Constants::WGS84_r() for the inverse flattening);</li>
+<li>the -e arguments to the <a class="el" href="utilities.html">Utility programs</a> are handled similarly; in addition, simple fractions, e.g., 1/297, can be used for the flattening;</li>
+<li>introduce <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">GeographicLib::Constants::WGS84_f()</a> for the WGS84 flattening (and deprecate Constants::WGS84_r() for the inverse flattening);</li>
 <li>most classes have a Flattening() member function;</li>
 <li>InverseFlattening() has been deprecated (and now returns inf for a sphere, instead of 0).</li>
 </ul>
@@ -178,7 +234,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.10.tar.gz/download">1.10 (released 2011-06-11)</a><ul>
+<li>Version 1.10 (released 2011-06-11)<ul>
 <li>Improvements to Matlab/Octave interface:<ul>
 <li>add {geocentric,localcartesian}{forward,reverse};</li>
 <li>make geographiclibinterface more general;</li>
@@ -197,14 +253,14 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.9.tar.gz/download">1.9 (released 2011-05-28)</a><ul>
+<li>Version 1.9 (released 2011-05-28)<ul>
 <li>FIX BUG in area returned by <a href="Planimeter.1.html">Planimeter</a> for pole encircling polygons.</li>
 <li>FIX BUG in error message reported when DMS::Decode reads the string "5d.".</li>
 <li>FIX BUG in AlbersEqualArea::Reverse (lon0 not being used).</li>
-<li>Ensure that all exceptions thrown in the <a class="el" href="utilities.html">Utility Programs</a> are caught.</li>
+<li>Ensure that all exceptions thrown in the <a class="el" href="utilities.html">Utility programs</a> are caught.</li>
 <li>Avoid using catch within <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a>.</li>
 <li>Move <a class="el" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">GeographicLib::Accumulator</a> class from <a class="el" href="Planimeter_8cpp.html" title="Command line utility for measuring the area of geodesic polygons.">Planimeter.cpp</a> to <a class="el" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">Constants.hpp</a>.</li>
-<li>Add <a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">GeographicLib::Math::sq<T></a>.</li>
+<li>Add <a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">GeographicLib::Math::sq<T></a>.</li>
 <li>Simplify <a class="el" href="geoid.html#geoidinst">Installing the geoid datasets</a><ul>
 <li>add geographiclib-get-geoids for Unix-like systems;</li>
 <li>add installers for Windows.</li>
@@ -213,7 +269,7 @@
 <li>Provide cmake support:<ul>
 <li>build binary installer for Windows;</li>
 <li>include regression tests;</li>
-<li>add --input-string, --input-file, --output-file options to the <a class="el" href="utilities.html">Utility Programs</a> to support tests.</li>
+<li>add --input-string, --input-file, --output-file options to the <a class="el" href="utilities.html">Utility programs</a> to support tests.</li>
 </ul>
 </li>
 <li>Rename utility EquidistantTest as <a href="GeodesicProj.1.html">GeodesicProj</a> and TransverseMercatorTest as <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a>.</li>
@@ -224,9 +280,9 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.8.tar.gz/download">1.8 (released 2011-02-22)</a><ul>
+<li>Version 1.8 (released 2011-02-22)<ul>
 <li>Optionally return rotation matrix from <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a>.</li>
-<li>For the <a class="el" href="utilities.html">Utility Programs</a>, supply man pages, -h prints the synopsis, --help prints the man page, --version prints the version.</li>
+<li>For the <a class="el" href="utilities.html">Utility programs</a>, supply man pages, -h prints the synopsis, --help prints the man page, --version prints the version.</li>
 <li>Use accurate summation in <a href="Planimeter.1.html">Planimeter</a>.</li>
 <li>Add 64-bit targets for Visual Studio 2010.</li>
 <li>Use templates for defining math functions and some constants.</li>
@@ -241,25 +297,25 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.7.tar.gz/download">1.7 (released 2010-12-21)</a><ul>
+<li>Version 1.7 (released 2010-12-21)<ul>
 <li>FIX BUG in scale returned by <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">GeographicLib::LambertConformalConic::Reverse</a>.</li>
 <li>Add <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> projection.</li>
 <li>Library created by Visual Studio is Geographic.lib instead of GeographicLib.lib (compatible with makefiles).</li>
 <li>Make classes NaN aware.</li>
 <li>Use cell arrays for MGRS strings in Matlab.</li>
 <li>Add solution/project files for Visual Studio 2010 (32-bit only).</li>
-<li>Use C++0x static_assert and math functions, if available.</li>
+<li>Use C++11 static_assert and math functions, if available.</li>
 </ul>
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.6.tar.gz/download">1.6 (released 2010-11-23)</a><ul>
+<li>Version 1.6 (released 2010-11-23)<ul>
 <li>FIX BUG introduced in <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> in version 1.5 (found by Dave Edwards).</li>
 </ul>
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.5.tar.gz/download">1.5 (released 2010-11-19)</a><ul>
+<li>Version 1.5 (released 2010-11-19)<ul>
 <li>Improve area calculations for small polygons.</li>
 <li>Add -s and -r flags to <a href="Planimeter.1.html">Planimeter</a>.</li>
 <li>Improve the accuracy of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> using divided differences.</li>
@@ -281,7 +337,7 @@
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.4.tar.gz/download">1.4 (released 2010-09-12)</a><ul>
+<li>Version 1.4 (released 2010-09-12)<ul>
 <li>Changes to <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a>:<ul>
 <li>FIX BUG in Geodesic::Inverse with prolate ellipsoids;</li>
 <li>add area computations to Geodesic::Direct and Geodesic::Inverse;</li>
@@ -307,7 +363,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.3.tar.gz/download">1.3 (released 2010-07-21)</a><ul>
+<li>Version 1.3 (released 2010-07-21)<ul>
 <li>Add <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a>, the ellipsoid generalization of the gnomonic projection.</li>
 <li>Add -g and -e options to <a href="GeodesicProj.1.html">EquidistantTest</a>.</li>
 <li>Use fixed-point notation for output from <a href="CartConvert.1.html">CartConvert</a>, <a href="GeodesicProj.1.html">EquidistantTest</a>, <a href="TransverseMercatorProj.1.html">TransverseMercatorTest</a>.</li>
@@ -317,7 +373,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 <li>Complain if latitude out of range in SetScale.</li>
 </ul>
 </li>
-<li>Add <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">GeographicLib::Math::NaN()</a>.</li>
+<li>Add <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">GeographicLib::Math::NaN()</a>.</li>
 <li>Add long double version of hypot for Windows.</li>
 <li>Add EllipticFunction::E(real).</li>
 <li>Update references to Geotrans in MGRS documentation.</li>
@@ -326,7 +382,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.2.tar.gz/download">1.2 (released 2010-05-21)</a><ul>
+<li>Version 1.2 (released 2010-05-21)<ul>
 <li>FIX BUGS in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>,<ul>
 <li>wrong azimuth returned by Direct if point 2 is on a pole;</li>
 <li>Inverse sometimes fails with very close points.</li>
@@ -337,12 +393,12 @@ WARNING: These changes may break binary compatibility with previous versions of
 <li>break friend connection between CassiniSoldner and Geodesic.</li>
 </ul>
 </li>
-<li>Add <a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">GeographicLib::DMS::DecodeAngle</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS::DecodeAzimuth</a>. Extend <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">GeographicLib::DMS: [...]
+<li>Add <a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">GeographicLib::DMS::DecodeAngle</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS::DecodeAzimuth</a>. Extend <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS: [...]
 <li>Code and documentation changes in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> for consistency with the forthcoming paper on geodesics.</li>
 <li>Increase order of series using in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> to 6 (full accuracy maintained for ellipsoid flattening < 0.01).</li>
 <li>Macro __NO_LONG_DOUBLE_MATH to disable use of long double.</li>
-<li>Correct declaration of <a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">GeographicLib::Math::isfinite</a> to return a bool.</li>
-<li>Changes in the <a class="el" href="utilities.html">Utility Programs</a>,<ul>
+<li>Correct declaration of <a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">GeographicLib::Math::isfinite</a> to return a bool.</li>
+<li>Changes in the <a class="el" href="utilities.html">Utility programs</a>,<ul>
 <li>improve error reporting when parsing command line arguments;</li>
 <li>accept latitudes and longitudes in decimal degrees or degrees, minutes, and seconds, with optional hemisphere designators;</li>
 <li><a href="GeoConvert.1.html">GeoConvert</a> -z accepts zone or zone+hemisphere;</li>
@@ -354,7 +410,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.1.tar.gz/download">1.1 (released 2010-02-09)</a><ul>
+<li>Version 1.1 (released 2010-02-09)<ul>
 <li>FIX BUG (introduced in 2009-03) in EllipticFunction::E(sn,cn,dn).</li>
 <li>Increase accuracy of scale calculation in TransverseMercator and TransverseMercatorExact.</li>
 <li>Code and documentation changes for consistency with <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a></li>
@@ -362,7 +418,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.0.tar.gz/download">1.0 (released 2010-01-07)</a><ul>
+<li>Version 1.0 (released 2010-01-07)<ul>
 <li>Add autoconf configuration files.</li>
 <li>BUG FIX: Improve initial guess for Newton's method in PolarStereographic::Reverse. (Previously this failed to converge when the co-latitude exceeded about 130 deg.)</li>
 <li>Constructors for TransverseMercator, TransverseMercatorExact, PolarStereographic, Geocentric, and Geodesic now check for obvious problems with their arguments and throw an exception if necessary.</li>
@@ -381,10 +437,10 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-11.tgz/download">2009-11</a><ul>
+<li>Version 2009-11<ul>
 <li>Allow specification of "closest UTM zone" in <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> and <a href="GeoConvert.1.html">GeoConvert</a> (via -t option).</li>
 <li>Utilities now complain is there are too many tokens on input lines.</li>
-<li>Include real-to-real versions of <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">GeographicLib::DMS::Encode</a>.</li>
+<li>Include real-to-real versions of <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS::Encode</a>.</li>
 <li>More house-cleaning changes:<ul>
 <li>Ensure that functions which return results through reference arguments do not alter the arguments when an exception is thrown.</li>
 <li>Improve accuracy of <a class="el" href="classGeographicLib_1_1MGRS.html#a91de10ebde478dbb85b3c7d057ff97b9">GeographicLib::MGRS::Forward</a>.</li>
@@ -397,7 +453,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-10.tgz/download">2009-10</a><ul>
+<li>Version 2009-10<ul>
 <li>Change web site to <a href="http://geographiclib.sourceforge.net">http://geographiclib.sourceforge.net</a></li>
 <li>Several house-cleaning changes:<ul>
 <li>Change from the a flat directory structure to a more easily maintained one.</li>
@@ -415,13 +471,13 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-09.tgz/download">2009-09</a><ul>
+<li>Version 2009-09<ul>
 <li>Add <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> and <a href="GeoidEval.1.html">GeoidEval</a> utility.</li>
 </ul>
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-08.tgz/download">2009-08</a><ul>
+<li>Version 2009-08<ul>
 <li>Add <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class and <a href="GeodesicProj.1.html">EquidistantTest</a> utility.</li>
 <li>Fix bug in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> where NaNs were sometimes returned.</li>
 <li>INCOMPATIBLE CHANGE: AzimuthalEquidistant now returns the reciprocal of the azimuthal scale instead of the reduced length.</li>
@@ -430,21 +486,21 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-07.tgz/download">2009-07</a><ul>
+<li>Version 2009-07<ul>
 <li>Speed up the series inversion code in tmseries.mac and geod.mac.</li>
 <li>Reference Borkowski in section on <a class="el" href="geocentric.html">Geocentric coordinates</a>.</li>
 </ul>
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-06.tgz/download">2009-06</a><ul>
+<li>Version 2009-06<ul>
 <li>Add routines to decode and encode zone+hemisphere to <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a>.</li>
 <li>Clean up code in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>.</li>
 </ul>
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-05.tgz/download">2009-05</a><ul>
+<li>Version 2009-05<ul>
 <li>Improvements to <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>:<ul>
 <li>more economical series expansions,</li>
 <li>return reduced length (as does the <a href="Geod.1.html">Geod</a> utility),</li>
@@ -460,7 +516,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-04.tgz/download">2009-04</a><ul>
+<li>Version 2009-04<ul>
 <li>Use compile-time constants to select the order of series in <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a>.</li>
 <li>2x unroll of Clenshaw summation to avoid data shuffling.</li>
 <li>Simplification of <a class="el" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">GeographicLib::EllipticFunction::E</a>.</li>
@@ -479,7 +535,7 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-03.tgz/download">2009-03</a><ul>
+<li>Version 2009-03<ul>
 <li>Add <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and the <a href="Geod.1.html">Geod</a> utility.</li>
 <li>Declare when no exceptions are thrown by functions.</li>
 <li>Minor changes to <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class.</li>
@@ -491,16 +547,16 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-02.tgz/download">2009-02</a><ul>
+<li>Version 2009-02<ul>
 <li>Fix documentation of constructors (flattening -> inverse flattening).</li>
 <li>Use std versions of math functions.</li>
 <li>Add GeographicLib::ECEF and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> classes and the ECEFConvert utility.</li>
-<li>Gather the documentation on the utility programs onto one page.</li>
+<li>Gather the documentation on the <a class="el" href="utilities.html">Utility programs</a> onto one page.</li>
 </ul>
 </li>
 </ul>
 <ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-01.tgz/download">2009-01</a><ul>
+<li>Version 2009-01<ul>
 <li>First proper release of library.</li>
 <li>More robust <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a>:<ul>
 <li>Introduce <em>extendp</em> version of constructor,</li>
@@ -517,14 +573,19 @@ WARNING: These changes may break binary compatibility with previous versions of
 </li>
 </ul>
 <ul>
-<li>2008-09<ul>
+<li>Version 2008-09<ul>
 <li>Ad hoc posting of information on the transverse Mercator projection.</li>
 </ul>
 </li>
 </ul>
 <center> Back to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/organization.html b/doc/html/organization.html
index bc5a1f2..3e1999b 100644
--- a/doc/html/organization.html
+++ b/doc/html/organization.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Code organization</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
 <div class="title">Code organization </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="utilities.html">Utility Programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Here is a brief description of the relationship between the various components of GeographicLib. All of these are defined in the <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">Geog [...]
+<div class="textblock"><center> Back to <a class="el" href="utilities.html">Utility programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Here is a brief description of the relationship between the various components of GeographicLib. All of these are defined in the <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">Geog [...]
 <p><a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a>, <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a>, <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a>, and <a class="el" href="classGeographicLi [...]
 <p><a class="el" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">GeographicLib::TransverseMercator::UTM</a> and <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">GeographicLib::PolarStereographic::UPS</a> are const static instantiations specific for the WGS84 ellipsoid with the UTM and UPS scale factors. (These do <em>not</em> add the standard false eastings or false northings for UTM and UPS.) Simi [...]
 <p><a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> uses TransverseMercator::UTM and PolarStereographic::UPS to perform the UTM and UPS projections. The class offers a uniform interface to UTM and UPS by treating UPS as UTM zone 0. This class stores no internal state and the forward and reverse projections are provided via static member functions. The forward projection offers the ability to overr [...]
@@ -53,14 +68,19 @@
 <p>GeographicLib attempts to act sensibly with NaNs. NaNs in constructors typically throw errors (an exception is GeodesicLine). However, calling the class functions with NaNs as arguments is not an error; NaNs are returned as appropriate. "INV" is treated as an invalid zone designation by UTMUPS. "INVALID" is the corresponding invalid MGRS string. NaNs allow the projection of polylines which are separated by NaNs; in this format they can be easily plotted in Matlab.</p>
 <p>A note about portability. For the most part, the code uses standard C++ and should be able to be deployed on any system with a modern C++ compiler. System dependencies come into</p>
 <ul>
-<li><a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> -- <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a> needs to define functions such as atanh for systems that lack them. The system dependence will disappear with the adoption of C++0x because the needed functions are part of that standard.</li>
+<li><a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> -- <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a> needs to define functions such as atanh for systems that lack them. The system dependence will disappear with the adoption of C++11 because the needed functions are part of that standard.</li>
 <li>use of long double -- the type is used only for testing. On systems which lack this data type the cmake and autoconf configuration methods should detect its absence and omit the code that depends on it.</li>
 <li><a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a>, <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a>, and <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> -- these class uses system-dependent default paths for looking up the resp [...]
-<li><a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">GeographicLib::Utility::readarray</a> reads numerical data from binary files. This assumes that floating point numbers are in IEEE format. It attempts to handled the "endianness" of the target platform using the WORDS_BIGENDIAN macro (which sets the compile-time constant <a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">GeographicLib::Math::bigendian</a>).</li>
+<li><a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">GeographicLib::Utility::readarray</a> reads numerical data from binary files. This assumes that floating point numbers are in IEEE format. It attempts to handled the "endianness" of the target platform using the WORDS_BIGENDIAN macro (which sets the compile-time constant <a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">GeographicLib::Math::bigendian</a>).</li>
 </ul>
-<center> Back to <a class="el" href="utilities.html">Utility Programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="utilities.html">Utility programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/other.html b/doc/html/other.html
index 17ac16b..8c09539 100644
--- a/doc/html/other.html
+++ b/doc/html/other.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Other interfaces (Javascript, Python, Matlab, Octave)</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -117,20 +132,21 @@ Matlab and Octave interfaces</h2>
    [0] None
 
    Compiler: 2
-   etc. </pre></div> (This will require that mex.bat is in your PATH.) Then configure cmake with, for example <div class="fragment"><pre class="fragment">
-   cmake -G "Visual Studio 10" -D ENABLE_MATLAB=ON .. </pre></div> If you are running a 64-bit version of Matlab, be sure to select a 64-bit generator with cmake, e.g., "Visual Studio 10 Win64". Finally compile GeographicLib with Visual Studio. (The binary installer for Windows includes the compiled interface built with Visual Studio 10 and Matlab R2010b).<br/>
- On Linux systems, cmake is configured to use Octave instead of Matlab, because Matlab typically supports out-of-date versions of gcc. However the steps are similar (use <code>mex -setup</code> instead of <code>mex.bat -setup</code>).</li>
+   etc. </pre></div> (This will require that mex.bat is in your PATH. With Linux, use <code>mex -setup</code>.) Then configure cmake with, for example <div class="fragment"><pre class="fragment">
+   cmake -G "Visual Studio 10" -D MATLAB_COMPILER=mex .. </pre></div> If you are running a 64-bit version of Matlab, be sure to select a 64-bit generator with cmake, e.g., "Visual Studio 10 Win64". Finally compile GeographicLib with Visual Studio. (The binary installer for 64-bit Windows includes the compiled interface built with Visual Studio 10 and Matlab R2010b 64-bit).<br/>
+ On Linux systems, you can compile the interface for use with octave instead by using <div class="fragment"><pre class="fragment">
+   cmake -D MATLAB_COMPILER=mkoctfile .. </pre></div></li>
 <li><b>Invoking the compiler from Matlab or Octave:</b> Start Matlab or Octave and run, e.g., <div class="fragment"><pre class="fragment">   mex -setup
-   cd <span class="stringliteral">'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'</span>
+   cd <span class="stringliteral">'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'</span>
    help geographiclibinterface
-   geographiclibinterface(<span class="stringliteral">'C:/pkg-vc10/GeographicLib-1.18'</span>);
+   geographiclibinterface(<span class="stringliteral">'C:/pkg-vc10/GeographicLib-1.21'</span>);
    addpath(pwd);
 </pre></div> The first command allows you to select the compiler to use (which should be the same as that used to compile GeographicLib).</li>
 </ul>
 <p>To use the interface routines for GeographicLib, run one of (for example) </p>
 <div class="fragment"><pre class="fragment">
   addpath /usr/local/libexec/GeographicLib/matlab
-  addpath 'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'
+  addpath 'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'
 </pre></div><p> in Octave or Matlab. The available functions are:</p>
 <ul>
 <li>geodesicdirect: solve direct geodesic problem (see <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">GeographicLib::Geodesic::Direct</a>)</li>
@@ -154,8 +170,13 @@ Matlab and Octave interfaces</h2>
 </pre></div><p> Other useful functions, e.g., to convert from geographic coordinates to MGRS can easily be written with Matlab code.</p>
 <p>Note that geoidheight, when compiled with Visual Studio 2008 causes Matlab to crash. (The problem does not occur with Visual Studio 2005 or Visual Studio 2010.)</p>
 <center> Back to <a class="el" href="organization.html">Code organization</a>. Forward to <a class="el" href="geoid.html">Geoid height</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/pages.html b/doc/html/pages.html
index b3e5c35..023db83 100644
--- a/doc/html/pages.html
+++ b/doc/html/pages.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Related Pages</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -43,7 +58,7 @@
 </li>
 <li><a class="el" href="start.html">Getting started</a>
 </li>
-<li><a class="el" href="utilities.html">Utility Programs</a>
+<li><a class="el" href="utilities.html">Utility programs</a>
 </li>
 <li><a class="el" href="organization.html">Code organization</a>
 </li>
@@ -55,18 +70,23 @@
 </li>
 <li><a class="el" href="magnetic.html">Magnetic models</a>
 </li>
-<li><a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>
+<li><a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>
 </li>
-<li><a class="el" href="transversemercator.html">Transverse Mercator Projection</a>
+<li><a class="el" href="transversemercator.html">Transverse Mercator projection</a>
 </li>
 <li><a class="el" href="geocentric.html">Geocentric coordinates</a>
 </li>
-<li><a class="el" href="old.html">Old Versions</a>
+<li><a class="el" href="old.html">Old versions</a>
 </li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/start.html b/doc/html/start.html
index f219c7a..63c30e6 100644
--- a/doc/html/start.html
+++ b/doc/html/start.html
@@ -3,23 +3,38 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <title>GeographicLib: Getting started</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
 <div class="title">Getting started </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility Programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Much (but not all!) of the useful functionality of GeographicLib is available via simple command line utilities. Interfaces to some of them are available via the web. See <a class="el" href="utilities.html">Utility Programs</a> for documentation  [...]
+<div class="textblock"><center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Much (but not all!) of the useful functionality of GeographicLib is available via simple command line utilities. Interfaces to some of them are available via the web. See <a class="el" href="utilities.html">Utility programs</a> for documentation  [...]
 <p>In order to use GeographicLib from C++ code, you will need to</p>
 <ul>
 <li>Include the header files for the GeographicLib classes in your code. E.g., <div class="fragment"><pre class="fragment"><span class="preprocessor">  #include <<a class="code" href="LambertConformalConic_8hpp.html" title="Header for GeographicLib::LambertConformalConic class.">GeographicLib/LambertConformalConic.hpp</a>></span> 
@@ -67,7 +82,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
   target_link_libraries (program2 ${GeographicLib_LIBRARIES}) </pre></div> in your CMakeLists.txt files (as noted). find_package command should find the library and set the required cmake variables (including <code>GEOGRAPHICLIB_FOUND = TRUE</code>). For find_package to be able to locate GeographicLib, it may be necessary for GeographicLib to be built and installed with cmake (see <a class="el" href="install.html#cmake">Installation with cmake</a>) instead of using some other installatio [...]
   cmake -G "Visual Studio 10" -D CMAKE_PREFIX_PATH=C:/pkg-vc10 -D CMAKE_INSTALL_PREFIX=C:/pkg-vc10/XYZProject ..
 </pre></div> (If you used some other method of installing GeographicLib, you can try copying cmake/FindGeographicLib.cmake to somewhere in your <code>CMAKE_MODULE_PATH</code> in order for find_package to work. However, this method has not been thoroughly tested.)</li>
-<li>For Windows, ensure that you build the library with the same version of the compiler and you use for your code. In addition, you have to build a separate debug version of the library when you can compiling your code in debug mode. The configuration of cmake described above ensure that the right version of the compiler is used and, assuming you built and installed GeographicLib in debug mode, the debug version of the library Geographic_d.lib will be used.</li>
+<li>For Windows, ensure that you build the library with the same version of the compiler and you use for your code. In addition, you have to build a separate debug version of the library when you can compiling your code in debug mode. The configuration of cmake described above ensures that the right version of the compiler is used and, assuming you built and installed GeographicLib in debug mode, the debug version of the library Geographic_d.lib will be used.</li>
 </ul>
 <p>Here is a very simple test code, which uses the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class: </p>
 <div class="fragment"><pre class="fragment"><span class="comment">// Small example of using the GeographicLib::Geodesic class</span>
@@ -80,7 +95,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
 <span class="keyword">using namespace </span>GeographicLib;
 
 <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
-  <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& geod = Geodesic::WGS84;
+  <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& geod = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::WGS84;
   <span class="comment">// Distance from JFK to LHR</span>
   <span class="keywordtype">double</span>
     lat1 = 40.6, lon1 = -73.8, <span class="comment">// JFK Airport</span>
@@ -95,7 +110,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
   5551.76 km
 </pre></div><p>The next steps are:</p>
 <ul>
-<li>Learn about and run the <a class="el" href="utilities.html">Utility Programs</a>.</li>
+<li>Learn about and run the <a class="el" href="utilities.html">Utility programs</a>.</li>
 <li>Read the section, <a class="el" href="organization.html">Code organization</a>, for an overview of the library.</li>
 <li>Browse the <a href="annotated.html">Class List</a> for full documentation on the classes in the library.</li>
 <li>Look at the example code in the examples directory. Each file provides a very simple standalone example of using one GeographicLib class. These are included in the descriptions of the classes.</li>
@@ -111,9 +126,14 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
 <li><a href="http://en.wikipedia.org/wiki/World_Magnetic_Model">WMM</a>, World Magnetic Model.</li>
 <li><a href="http://en.wikipedia.org/wiki/IGRF">IGRF</a>, International Geomagnetic Reference Field.</li>
 </ul>
-<center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility Programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/transversemercator.html b/doc/html/transversemercator.html
index 3150ffc..fe4459a 100644
--- a/doc/html/transversemercator.html
+++ b/doc/html/transversemercator.html
@@ -2,24 +2,39 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Transverse Mercator Projection</title>
+<title>GeographicLib: Transverse Mercator projection</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,10 +48,10 @@
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">Transverse Mercator Projection </div>  </div>
+<div class="title">Transverse Mercator projection </div>  </div>
 </div>
 <div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact [...]
+<div class="textblock"><center> Back to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact [...]
 <p>References</p>
 <ul>
 <li>L. Krüger, <a href="http://dx.doi.org/10.2312/GFZ.b103-krueger28">Konforme Abbildung des Erdellipsoids in der Ebene</a> (Conformal mapping of the ellipsoidal earth to the plane), Royal Prussian Geodetic Institute, New Series 52, 172 pp. (1912).</li>
@@ -208,9 +223,14 @@ alpha[10]=   77911515623232821/12014330904576000 * n^10;
 <div class="fragment"><pre class="fragment">
   load("tmseries.mac")$
 </pre></div><p> Further instructions are included at the top of the file.</p>
-<center> Back to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/html/utilities.html b/doc/html/utilities.html
index fe7e1fc..e2c9ef0 100644
--- a/doc/html/utilities.html
+++ b/doc/html/utilities.html
@@ -2,24 +2,39 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Utility Programs</title>
+<title>GeographicLib: Utility programs</title>
+
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
 </head>
 <body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
 <div id="titlearea">
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
+  
+  
   <td style="padding-left: 0.5em;">
-   <div id="projectname">GeographicLib</div>
+   <div id="projectname">GeographicLib
+    <span id="projectnumber">1.21</span>
+   </div>
+   
   </td>
+  
+  
+  
  </tr>
  </tbody>
 </table>
 </div>
+
+<!-- Generated by Doxygen 1.7.5 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,7 +48,7 @@
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">Utility Programs </div>  </div>
+<div class="title">Utility programs </div>  </div>
 </div>
 <div class="contents">
 <div class="textblock"><center> Back to <a class="el" href="start.html">Getting started</a>. Forward to <a class="el" href="organization.html">Code organization</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Various utility programs are provided with GeographicLib. These should be installed in a directory included in your PATH (e.g., /usr/local/bin). These programs are wrapper programs that invoke the underlying functionality provided by the library.</p>
@@ -41,14 +56,14 @@
 <ul>
 <li><a href="GeoConvert.1.html"><b>GeoConvert</b></a>: convert geographic coordinates using <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a>.</li>
 <li><a href="Geod.1.html"><b>Geod</b></a>: perform geodesic calculations using <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a>.</li>
-<li><a href="Planimeter.1.html"><b>Planimeter</b></a>: compute the area of geodesic polygons using the area facilities provided by <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>.</li>
+<li><a href="Planimeter.1.html"><b>Planimeter</b></a>: compute the area of geodesic polygons using <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a>.</li>
 <li><a href="TransverseMercatorProj.1.html"><b>TransverseMercatorProj</b></a>: convert between geographic and transverse Mercator. This is for testing <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> and <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a>.</li>
 <li><a href="CartConvert.1.html"><b>CartConvert</b></a>: convert geodetic coordinates to geocentric or local cartesian using <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a>.</li>
 <li><a href="GeodesicProj.1.html"><b>GeodesicProj</b></a>: perform projections based on geodesics using <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::Cas [...]
 <li><a href="ConicProj.1.html"><b>ConicProj</b></a>: perform conic projections using <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> and <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a>.</li>
 <li><a href="GeoidEval.1.html"><b>GeoidEval</b></a>: look up geoid heights using <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a>.</li>
-<li><a href="Gravity.1.html"><b>Gravity</b></a>: compute the earth's gravitational field using <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a>.</li>
-<li><a href="MagneticField.1.html"><b>MagneticField</b></a>: compute the earth's magnetic field using <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a>.</li>
+<li><a href="Gravity.1.html"><b>Gravity</b></a>: compute the earth's gravitational field using <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a>.</li>
+<li><a href="MagneticField.1.html"><b>MagneticField</b></a>: compute the earth's magnetic field using <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a>.</li>
 </ul>
 <p>The documentation for these utilities is in the form of man pages. This documentation can be accessed by clicking on the utility name in the list above, running the man command on Unix-like systems, or by invoking the utility with the --help option. A brief summary of usage is given by invoking the utility with the -h option. The version of the utility is given by the --version option.</p>
 <p>The utilities all accept data on standard input, transform it in some way, and print the results on standard output. This makes the utilities easy to use within scripts to transform tabular data; however they can also be used interactively, often with the input supplied via a pipe, e.g.,</p>
@@ -63,8 +78,13 @@
 <li><a href="http://geographiclib.sf.net/cgi-bin/GeoidEval">GeoidEval</a></li>
 </ul>
 <center> Back to <a class="el" href="start.html">Getting started</a>. Forward to <a class="el" href="organization.html">Code organization</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by 
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
 </body>
 </html>
diff --git a/doc/scripts/GeographicLib/Geodesic.js b/doc/scripts/GeographicLib/Geodesic.js
index 3c5bb12..8ad5461 100644
--- a/doc/scripts/GeographicLib/Geodesic.js
+++ b/doc/scripts/GeographicLib/Geodesic.js
@@ -5,11 +5,11 @@
  * See the documentation for the C++ class.  The conversion is a literal
  * conversion from C++.
  *
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
- * $Id: 34794cf7585b4196c260f48765826b47a15c4d05 $
+ * $Id: d9a7879a3ff27db0b34f6c9fe3d8eaf8f90d1e29 $
  **********************************************************************/
 
 // Load AFTER Math.js
@@ -65,7 +65,7 @@ GeographicLib.GeodesicLine = {};
     //            sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :
     // using Clenshaw summation.  N.B. c[0] is unused for sin series
     // Approx operation count = (n + 5) mult and (2 * n + 2) add
-    var k  = n + (sinp ? 1 : 0); // Point to one beyond last element
+    var k = n + (sinp ? 1 : 0); // Point to one beyond last element
     var
     ar = 2 * (cosx - sinx) * (cosx + sinx), // 2 * cos(2 * x)
     y0 = n & 1 ? c[--k] : 0, y1 = 0;        // accumulators for sum
@@ -115,7 +115,7 @@ GeographicLib.GeodesicLine = {};
       r3 = r * r2,
       // The discrimant of the quadratic equation for T3.  This is
       // zero on the evolute curve p^(1/3)+q^(1/3) = 1
-      disc =  S * (S + 2 * r3);
+      disc = S * (S + 2 * r3);
       var u = r;
       if (disc >= 0) {
         var T3 = S + r3;
@@ -232,7 +232,8 @@ GeographicLib.GeodesicLine = {};
                  (this._e2 > 0 ? m.atanh(Math.sqrt(this._e2)) :
                   Math.atan(Math.sqrt(-this._e2))) /
                  Math.sqrt(Math.abs(this._e2))))/2;
-    this._etol2 = g.tol2_ / Math.max(0.1, Math.sqrt(Math.abs(this._e2)));
+    // The sig12 threshold for "really short"
+    this._etol2 = 10 * g.tol2_ / Math.max(0.1, Math.sqrt(Math.abs(this._e2)));
     if (!(isFinite(this._a) && this._a > 0))
       throw new Error("Major radius is not positive");
     if (!(isFinite(this._b) && this._b > 0))
@@ -302,7 +303,7 @@ GeographicLib.GeodesicLine = {};
 
   g.Geodesic.prototype.A3f = function(eps) {
     // Evaluation sum(_A3c[k] * eps^k, k, 0, nA3x_-1) by Horner's method
-    var  v = 0;
+    var v = 0;
     for (var i = g.nA3x_; i; )
       v = eps * v + this._A3x[--i];
     return v;
@@ -375,7 +376,7 @@ GeographicLib.GeodesicLine = {};
     vals.m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
       - this._f1 * csig1 * csig2 * J12;
     // Missing a factor of _b
-    vals.s12b =  (1 + A1m1) * sig12 + AB1;
+    vals.s12b = (1 + A1m1) * sig12 + AB1;
     if (scalep) {
       var csig12 = csig1 * csig2 + ssig1 * ssig2;
       J12 *= this._f1;
@@ -414,8 +415,8 @@ GeographicLib.GeodesicLine = {};
     var shortline = cbet12 >= 0 && sbet12 < 0.5 &&
       lam12 <= Math.PI / 6;
     var
-    omg12 = shortline ?
-      lam12 / Math.sqrt(1 - this._e2 * m.sq(cbet1)) : lam12,
+    omg12 = (!shortline ? lam12 :
+             lam12 / Math.sqrt(1 - this._e2 * m.sq((cbet1 + cbet2) / 2))),
     somg12 = Math.sin(omg12), comg12 = Math.cos(omg12);
 
     vals.salp1 = cbet2 * somg12;
@@ -477,13 +478,13 @@ GeographicLib.GeodesicLine = {};
         y = (lam12 - Math.PI) / lamscale;
       }
 
-      if (y > -g.tol1_ && x >  -1 - g.xthresh_) {
+      if (y > -g.tol1_ && x > -1 - g.xthresh_) {
         // strip near cut
         if (this._f >= 0) {
           vals.salp1 = Math.min(1, -x);
           vals.calp1 = - Math.sqrt(1 - m.sq(vals.salp1));
         } else {
-          vals.calp1 = Math.max(x > -g.tol1_ ? 0 : -1,  x);
+          vals.calp1 = Math.max(x > -g.tol1_ ? 0 : -1, x);
           vals.salp1 = Math.sqrt(1 - m.sq(vals.calp1));
         }
       } else {
@@ -671,7 +672,7 @@ GeographicLib.GeodesicLine = {};
     phi = lat2 * m.degree;
     // Ensure cbet2 = +epsilon at poles
     sbet2 = this._f1 * Math.sin(phi);
-    cbet2 = Math.abs(lat2) == 90 ? tiny_ : Math.cos(phi);
+    cbet2 = Math.abs(lat2) == 90 ? g.tiny_ : Math.cos(phi);
     // SinCosNorm(sbet2, cbet2);
     var t = m.hypot(sbet2, cbet2); sbet2 /= t; cbet2 /= t;
 
@@ -781,14 +782,13 @@ GeographicLib.GeodesicLine = {};
         salp2 = nvals.salp2;
         calp2 = nvals.calp2;
         // Short lines (InverseStart sets salp2, calp2)
-        var w1 = Math.sqrt(1 - this._e2 * m.sq(cbet1));
-        s12x = sig12 * this._a * w1;
-        m12x = m.sq(w1) * this._a / this._f1 *
-          Math.sin(sig12 * this._f1 / w1);
+        var wm = Math.sqrt(1 - this._e2 * m.sq((cbet1 + cbet2) / 2));
+        s12x = sig12 * this._a * wm;
+        m12x = m.sq(wm) * this._a / this._f1 * Math.sin(sig12 * this._f1 / wm);
         if (outmask & g.GEODESICSCALE)
-          vals.M12 = vals.M21 = Math.cos(sig12 * this._f1 / w1);
+          vals.M12 = vals.M21 = Math.cos(sig12 * this._f1 / wm);
         vals.a12 = sig12 / m.degree;
-        omg12 = lam12 / w1;
+        omg12 = lam12 / wm;
       } else {
 
         // Newton's method
diff --git a/doc/scripts/GeographicLib/GeodesicLine.js b/doc/scripts/GeographicLib/GeodesicLine.js
index b5d701e..0571999 100644
--- a/doc/scripts/GeographicLib/GeodesicLine.js
+++ b/doc/scripts/GeographicLib/GeodesicLine.js
@@ -9,7 +9,7 @@
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
- * $Id: ba5e5a11abba4f0119e395ebd1468974cdce8fbd $
+ * $Id: fd75e359445d86b9e2c8b27708e1ad35687a92d0 $
  **********************************************************************/
 
 // Load AFTER GeographicLib/Math.js and GeographicLib/Geodesic.js
@@ -37,7 +37,7 @@
     var alp1 = azi1 * m.degree;
     // Enforce sin(pi) == 0 and cos(pi/2) == 0.  Better to face the ensuing
     // problems directly than to skirt them.
-    this._salp1 =     azi1  == -180 ? 0 : Math.sin(alp1);
+    this._salp1 =          azi1  == -180 ? 0 : Math.sin(alp1);
     this._calp1 = Math.abs(azi1) ==   90 ? 0 : Math.cos(alp1);
     var cbet1, sbet1, phi;
     phi = lat1 * m.degree;
@@ -216,7 +216,7 @@
                                w1 * (this._ssig1 * csig2))
                               - this._csig1 * csig2 * J12);
       if (outmask & g.GEODESICSCALE) {
-        vals.M12 = csig12 + (this._k2 * (ssig2sq - ssig1sq) *  ssig2 / (w1 + w2)
+        vals.M12 = csig12 + (this._k2 * (ssig2sq - ssig1sq) * ssig2 / (w1 + w2)
                              - csig2 * J12) * this._ssig1 / w1;
         vals.M21 = csig12 - (this._k2 * (ssig2sq - ssig1sq) * this._ssig1 /
                              (w1 + w2)
diff --git a/doc/scripts/GeographicLib/Math.js b/doc/scripts/GeographicLib/Math.js
index 6ec0b01..3bbac35 100644
--- a/doc/scripts/GeographicLib/Math.js
+++ b/doc/scripts/GeographicLib/Math.js
@@ -7,7 +7,7 @@
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
- * $Id: ad34f614c4596f04cb5517daeff6fe9e46d9a0d8 $
+ * $Id: d8f72fdee7b661e6ba3f08bb7ecfe9f0673e8132 $
  **********************************************************************/
 
 var GeographicLib; if (!GeographicLib) GeographicLib = {};
@@ -74,7 +74,7 @@ GeographicLib.Accumulator = {};
   // of the first two arguments.
   a.sum = function(u, v) {
     var
-    s =  s = u + v,
+    s = u + v,
     up = s - v,
     vpp = s - up;
     up -= u;
@@ -122,7 +122,7 @@ GeographicLib.Accumulator = {};
     if (this._s == 0)           // This implies t == 0,
       this._s = u;              // so result is u
     else
-      this._t += u;             //  otherwise just accumulate u to t.
+      this._t += u;             // otherwise just accumulate u to t.
   }
 
   a.Accumulator.prototype.Sum = function(y) {
diff --git a/doc/scripts/GeographicLib/PolygonArea.js b/doc/scripts/GeographicLib/PolygonArea.js
index c47b00b..54fc94b 100644
--- a/doc/scripts/GeographicLib/PolygonArea.js
+++ b/doc/scripts/GeographicLib/PolygonArea.js
@@ -9,7 +9,7 @@
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
- * $Id: f6eebaf4c93ded5e1ddd5b1be38d3b9570b59fa8 $
+ * $Id: cefb3a6e48907fbda0f01e8ee7d549447f46e29a $
  **********************************************************************/
 
 // Load AFTER GeographicLib/Math.js and GeographicLib/Geodesic.js
@@ -39,7 +39,7 @@ GeographicLib.PolygonArea = {};
     this._earth = earth;
     this._area0 = 4 * Math.PI * earth._c2;
     this._polyline = !polyline ? false : polyline;
-    this._mask =  g.DISTANCE | (this._polyline ? 0 : g.AREA);
+    this._mask = g.DISTANCE | (this._polyline ? 0 : g.AREA);
     if (!this._polyline)
       this._areasum = new a.Accumulator(0);
     this._perimetersum = new a.Accumulator(0);
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 8b782a2..913f659 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: d5febf7abcb473b048d3bfa2db5c7de1f9a8fbc9 $
+# $Id: 54590373678f8a602e370bb7a54265163f5b9d73 $
 
 # Compile (but don't install) a bunch of tiny example programs.  These
 # are mainly for including as examples within the doxygen documentation;
@@ -11,7 +11,28 @@ foreach (EXAMPLE_SOURCE ${EXAMPLE_SOURCES})
   set (EXAMPLES ${EXAMPLES} ${EXAMPLE})
   add_executable (${EXAMPLE} ${EXAMPLE_SOURCE})
   target_link_libraries (${EXAMPLE} Geographic)
-endforeach (EXAMPLE_SOURCE)
+endforeach ()
+
+set (OTHER_EXAMPLES GeoidToGTX.cpp)
+
+foreach (EXAMPLE_SOURCE ${OTHER_EXAMPLES})
+  get_filename_component (EXAMPLE ${EXAMPLE_SOURCE} NAME_WE)
+  set (EXAMPLES ${EXAMPLES} ${EXAMPLE})
+  add_executable (${EXAMPLE} ${EXAMPLE_SOURCE})
+  target_link_libraries (${EXAMPLE} Geographic)
+endforeach ()
+
+find_package (OpenMP)
+
+if (OPENMP_FOUND OR OpenMP_FOUND)
+  set_target_properties (GeoidToGTX PROPERTIES
+    COMPILE_FLAGS ${OpenMP_CXX_FLAGS}
+    COMPILE_DEFINITIONS HAVE_OPENMP=1)
+  if (NOT WIN32)
+    set_target_properties (GeoidToGTX PROPERTIES
+      LINK_FLAGS ${OpenMP_CXX_FLAGS})
+  endif (NOT WIN32)
+endif (OPENMP_FOUND OR OpenMP_FOUND)
 
 add_custom_target (examples DEPENDS ${EXAMPLES})
 add_dependencies (examples Geographic)
diff --git a/examples/GeoidToGTX.cpp b/examples/GeoidToGTX.cpp
new file mode 100644
index 0000000..dd16d67
--- /dev/null
+++ b/examples/GeoidToGTX.cpp
@@ -0,0 +1,103 @@
+// Write out a gtx file of geoid heights.  For egm2008 at 1' resolution this
+// takes about 40 mins on a 8-processor Intel 2.66 GHz machine using OpenMP
+// (-DHAVE_OPENMP=1).
+//
+// For the format of gtx files, see
+// http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary
+//
+// data is binary big-endian:
+//   south latitude edge (degrees double)
+//   west longitude edge (degrees double)
+//   delta latitude (degrees double)
+//   delta longitude (degrees double)
+//   nlat = number of latitude rows (integer)
+//   nlong = number of longitude columns (integer)
+//   nlat * nlong geoid heights (meters float)
+
+#include <vector>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+
+#if HAVE_OPENMP
+#include <omp.h>
+#endif
+
+#include <GeographicLib/GravityModel.hpp>
+#include <GeographicLib/GravityCircle.hpp>
+#include <GeographicLib/Utility.hpp>
+
+using namespace std;
+using namespace GeographicLib;
+
+int main(int argc, char* argv[]) {
+  // Hardwired for 3 args:
+  // 1 = the gravity model (e.g., egm2008)
+  // 2 = intervals per degree
+  // 3 = output GTX file
+  if (argc != 4) {
+    cerr << "Usage: " << argv[0]
+         << " gravity-model intervals-per-degree output.gtx\n";
+    return 1;
+  }
+  try {
+    string model(argv[1]);
+    // Number of intervals per degree
+    int ndeg = Utility::num<int>(string(argv[2]));
+    string filename(argv[3]);
+    GravityModel g(model);
+    int
+      nlat = 180 * ndeg + 1,
+      nlon = 360 * ndeg;
+    double
+      delta = 1 / double(ndeg), // Grid spacing
+      latorg = -90,
+      lonorg = -180;
+    // Write results as floats in binary mode
+    ofstream file(filename.c_str(), ios::binary);
+
+    // Write header
+    {
+      double transform[] = {latorg, lonorg, delta, delta};
+      unsigned sizes[] = {nlat, nlon};
+      Utility::writearray<double, double, true>(file, transform, 4);
+      Utility::writearray<unsigned, unsigned, true>(file, sizes, 2);
+    }
+
+    // Compute and store results for nbatch latitudes at a time
+    const int nbatch = 64;
+    vector< vector<float> > N(nbatch, vector<float>(nlon));
+
+    for (int ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { // Loop over batches
+      int nlat0 = min(nlat, ilat0 + nbatch);
+
+#if HAVE_OPENMP
+#pragma omp parallel for
+#endif
+      for (int ilat = ilat0; ilat < nlat0; ++ilat) { // Loop over latitudes
+        double
+          lat = latorg + (ilat / ndeg) + delta * (ilat - ndeg * (ilat / ndeg)),
+          h = 0;
+        GravityCircle c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
+        for (int ilon = 0; ilon < nlon; ++ilon) { // Loop over longitudes
+          double lon = lonorg
+            + (ilon / ndeg) + delta * (ilon - ndeg * (ilon / ndeg));
+          N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
+        } // longitude loop
+      }   // latitude loop -- end of parallel section
+
+      for (int ilat = ilat0; ilat < nlat0; ++ilat) // write out data
+        Utility::writearray<float, float, true>(file, N[ilat - ilat0]);
+    } // batch loop
+  }
+  catch (const exception& e) {
+    cerr << "Caught exception: " << e.what() << "\n";
+    return 1;
+  }
+  catch (...) {
+    cerr << "Caught unknown exception\n";
+    return 1;
+  }
+  return 0;
+}
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 7bbfcfb..14d1cfe 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -2,7 +2,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 88d7788930d32d562c5e4d9f73b5c0b541eb2b2b $
+# $Id: 8f327ca307cc38126a2ecbca4df19f2c8eef2604 $
 
 EXAMPLE_FILES = \
 	example-Accumulator.cpp \
@@ -40,6 +40,7 @@ EXAMPLE_FILES = \
 	example-TransverseMercator.cpp \
 	example-TransverseMercatorExact.cpp \
 	example-UTMUPS.cpp \
-	example-Utility.cpp
+	example-Utility.cpp \
+	GeoidToGTX.cpp
 
 EXTRA_DIST = CMakeLists.txt $(EXAMPLE_FILES)
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 537ad94..591d88f 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 88d7788930d32d562c5e4d9f73b5c0b541eb2b2b $
+# $Id: 8f327ca307cc38126a2ecbca4df19f2c8eef2604 $
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -219,7 +219,8 @@ EXAMPLE_FILES = \
 	example-TransverseMercator.cpp \
 	example-TransverseMercatorExact.cpp \
 	example-UTMUPS.cpp \
-	example-Utility.cpp
+	example-Utility.cpp \
+	GeoidToGTX.cpp
 
 EXTRA_DIST = CMakeLists.txt $(EXAMPLE_FILES)
 all: all-am
diff --git a/examples/example-GeodesicLine.cpp b/examples/example-GeodesicLine.cpp
index ac72694..8c80f28 100644
--- a/examples/example-GeodesicLine.cpp
+++ b/examples/example-GeodesicLine.cpp
@@ -1,5 +1,5 @@
 // Example of using the GeographicLib::GeodesicLine class
-// $Id: 89118a11e5334de7be20d26aa9eaa7da48ae463c $
+// $Id: df5c5ffe6534d46e343544430de8c13fc8119bfb $
 
 #include <iostream>
 #include <exception>
@@ -16,17 +16,17 @@ int main() {
   try {
     // Print waypoints between JFK and SIN
     Geodesic geod(Constants::WGS84_a(), Constants::WGS84_f());
-    // Alternatively: const Geodesic& geodesic = Geodesic::WGS84;
+    // Alternatively: const Geodesic& geod = Geodesic::WGS84;
     double
       lat1 = 40.640, lon1 = -73.779, // JFK
-      lat2 =  1.359, lon2 = 177.486; // SIN
+      lat2 =  1.359, lon2 = 103.989; // SIN
     double s12, azi1, azi2,
       a12 = geod.Inverse(lat1, lon1, lat2, lon2, s12, azi1, azi2);
     const GeographicLib::GeodesicLine line(geod, lat1, lon1, azi1);
     // Alternatively
     // const GeographicLib::GeodesicLine line = geod.Line(lat1, lon1, azi1);
     double ds = 500e3;          // Nominal distance between points = 500 km
-    int num = ceil(s12 / ds);   // The number of intervals
+    int num = int(ceil(s12 / ds)); // The number of intervals
     cout << fixed << setprecision(3);
     {
       // Use intervals of equal length
diff --git a/examples/example-LambertConformalConic.cpp b/examples/example-LambertConformalConic.cpp
index 98936e9..5758405 100644
--- a/examples/example-LambertConformalConic.cpp
+++ b/examples/example-LambertConformalConic.cpp
@@ -1,5 +1,5 @@
 // Example of using the GeographicLib::LambertConformalConic class
-// $Id: fee4349167387dc01f6253ec8d9cbd0172a7392b $
+// $Id: 5cb2532e2709bcafee50974307836930069b0cff $
 
 #include <iostream>
 #include <exception>
@@ -11,35 +11,35 @@ using namespace GeographicLib;
 int main() {
   try {
     // Define the Pennsylvania South state coordinate system EPSG:3364
-   const double
-     a = Constants::WGS84_a<double>(),
-     f = 1/298.257222101,                      // GRS80
-     lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, // standard parallels
-     k1 = 1,                                   // scale
-     lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, // origin
-     fe = 600000, fn = 0;                      // false easting and northing
-   // Set up basic projection
-   const LambertConformalConic PASouth(a, f, lat1, lat2, k1);
-   double x0, y0;
-   // Transform origin point
-   PASouth.Forward(lon0, lat0, lon0, x0, y0);
-   x0 -= fe; y0 -= fn;
-   {
-     // Sample conversion from geodetic to PASouth grid
-     double lat = 39.95, lon = -75.17;    // Philadelphia
-     double x, y;
-     PASouth.Forward(lon0, lat, lon, x, y);
-     x -= x0; y -= y0;
-     std::cout << x << " " << y << "\n";
-   }
-   {
-     // Sample conversion from PASouth grid to geodetic
-     double x = 820e3, y = 72e3;
-     double lat, lon;
-     x += x0; y += y0;
-     PASouth.Reverse(lon0, x, y, lat, lon);
-     std::cout << lat << " " << lon << "\n";
-   }
+    const double
+      a = Constants::WGS84_a<double>(),
+      f = 1/298.257222101,                      // GRS80
+      lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, // standard parallels
+      k1 = 1,                                   // scale
+      lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, // origin
+      fe = 600000, fn = 0;                      // false easting and northing
+    // Set up basic projection
+    const LambertConformalConic PASouth(a, f, lat1, lat2, k1);
+    double x0, y0;
+    // Transform origin point
+    PASouth.Forward(lon0, lat0, lon0, x0, y0);
+    x0 -= fe; y0 -= fn;
+    {
+      // Sample conversion from geodetic to PASouth grid
+      double lat = 39.95, lon = -75.17;    // Philadelphia
+      double x, y;
+      PASouth.Forward(lon0, lat, lon, x, y);
+      x -= x0; y -= y0;
+      std::cout << x << " " << y << "\n";
+    }
+    {
+      // Sample conversion from PASouth grid to geodetic
+      double x = 820e3, y = 72e3;
+      double lat, lon;
+      x += x0; y += y0;
+      PASouth.Reverse(lon0, x, y, lat, lon);
+      std::cout << lat << " " << lon << "\n";
+    }
   }
   catch (const exception& e) {
     cerr << "Caught exception: " << e.what() << "\n";
diff --git a/include/GeographicLib/AlbersEqualArea.hpp b/include/GeographicLib/AlbersEqualArea.hpp
index 437c9ce..6f44b19 100644
--- a/include/GeographicLib/AlbersEqualArea.hpp
+++ b/include/GeographicLib/AlbersEqualArea.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_ALBERSEQUALAREA_HPP)
 #define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP \
-  "$Id: c9f194023273bee32876018a1f6a548e35303836 $"
+  "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"
 
 #include <algorithm>
 #include <GeographicLib/Constants.hpp>
@@ -54,6 +54,10 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-AlbersEqualArea.cpp
+   *
+   * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility
+   * providing access to the functionality of LambertConformalConic and
+   * AlbersEqualArea.
    **********************************************************************/
   class GEOGRAPHIC_EXPORT AlbersEqualArea {
   private:
@@ -257,11 +261,13 @@ namespace GeographicLib {
      **********************************************************************/
     Math::real Flattening() const throw() { return _f; }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw() { return 1/_f; }
+    /// \endcond
 
     /**
      * @return latitude of the origin for the projection (degrees).
diff --git a/include/GeographicLib/AzimuthalEquidistant.hpp b/include/GeographicLib/AzimuthalEquidistant.hpp
index dd9a1bc..d966fde 100644
--- a/include/GeographicLib/AzimuthalEquidistant.hpp
+++ b/include/GeographicLib/AzimuthalEquidistant.hpp
@@ -2,14 +2,14 @@
  * \file AzimuthalEquidistant.hpp
  * \brief Header for GeographicLib::AzimuthalEquidistant class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP)
 #define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP \
-  "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"
+  "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"
 
 #include <GeographicLib/Geodesic.hpp>
 #include <GeographicLib/Constants.hpp>
@@ -34,6 +34,10 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-AzimuthalEquidistant.cpp
+   *
+   * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility
+   * providing access to the functionality of AzimuthalEquidistant, Gnomonic,
+   * and CassiniSoldner.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT AzimuthalEquidistant {
@@ -129,14 +133,16 @@ namespace GeographicLib {
      *   inherited from the Geodesic object used in the constructor.
      **********************************************************************/
     Math::real Flattening() const throw() { return _earth.Flattening(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return _earth.InverseFlattening(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/CassiniSoldner.hpp b/include/GeographicLib/CassiniSoldner.hpp
index 8ed9bb1..163ea9d 100644
--- a/include/GeographicLib/CassiniSoldner.hpp
+++ b/include/GeographicLib/CassiniSoldner.hpp
@@ -2,14 +2,14 @@
  * \file CassiniSoldner.hpp
  * \brief Header for GeographicLib::CassiniSoldner class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_CASSINISOLDNER_HPP)
 #define GEOGRAPHICLIB_CASSINISOLDNER_HPP \
-  "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"
+  "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"
 
 #include <GeographicLib/Geodesic.hpp>
 #include <GeographicLib/GeodesicLine.hpp>
@@ -61,6 +61,10 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-CassiniSoldner.cpp
+   *
+   * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility
+   * providing access to the functionality of AzimuthalEquidistant, Gnomonic,
+   * and CassiniSoldner.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT CassiniSoldner {
@@ -71,7 +75,7 @@ namespace GeographicLib {
     real _sbet0, _cbet0;
     static const real eps1_;
     static const real tiny_;
-    static const unsigned maxit_ =  10;
+    static const unsigned maxit_ = 10;
 
     // The following private helper functions are copied from Geodesic.
     static inline real AngNormalize(real x) throw() {
@@ -222,14 +226,16 @@ namespace GeographicLib {
      *   inherited from the Geodesic object used in the constructor.
      **********************************************************************/
     Math::real Flattening() const throw() { return _earth.Flattening(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return _earth.InverseFlattening(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/Config.h b/include/GeographicLib/Config.h
index 10f02bf..fd0e664 100644
--- a/include/GeographicLib/Config.h
+++ b/include/GeographicLib/Config.h
@@ -1 +1 @@
-#define GEOGRAPHICLIB_VERSION_STRING "1.18"
+#define GEOGRAPHICLIB_VERSION_STRING "1.21"
diff --git a/include/GeographicLib/Constants.hpp b/include/GeographicLib/Constants.hpp
index aa34bef..40d27fa 100644
--- a/include/GeographicLib/Constants.hpp
+++ b/include/GeographicLib/Constants.hpp
@@ -2,19 +2,19 @@
  * \file Constants.hpp
  * \brief Header for GeographicLib::Constants class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_CONSTANTS_HPP)
 #define GEOGRAPHICLIB_CONSTANTS_HPP \
-  "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"
+  "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"
 
 #include <GeographicLib/Config.h>
 
 /**
- * A compile-time assert.  Use C++0X static_assert, if available.
+ * A compile-time assert.  Use C++11 static_assert, if available.
  **********************************************************************/
 #if !defined(STATIC_ASSERT)
 #  if defined(__GXX_EXPERIMENTAL_CXX0X__)
@@ -127,6 +127,7 @@ namespace GeographicLib {
      **********************************************************************/
     template<typename T> static inline T WGS84_omega() throw()
     { return T(7292115) / (T(1000000) * T(100000)); }
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return the reciprocal flattening of WGS84 ellipsoid.
@@ -137,6 +138,7 @@ namespace GeographicLib {
      * <b>DEPRECATED</b>
      * A synonym for WGS84_r<real>().
      **********************************************************************/
+    /// \endcond
     static inline Math::real WGS84_r() throw() { return WGS84_r<real>(); }
     /**
      * @tparam T the type of the returned value.
diff --git a/include/GeographicLib/DMS.hpp b/include/GeographicLib/DMS.hpp
index bc30bb9..918d025 100644
--- a/include/GeographicLib/DMS.hpp
+++ b/include/GeographicLib/DMS.hpp
@@ -2,13 +2,13 @@
  * \file DMS.hpp
  * \brief Header for GeographicLib::DMS class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_DMS_HPP)
-#define GEOGRAPHICLIB_DMS_HPP "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"
+#define GEOGRAPHICLIB_DMS_HPP "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"
 
 #include <sstream>
 #include <iomanip>
@@ -191,6 +191,7 @@ namespace GeographicLib {
     static Math::real Decode(real d, real m = 0, real s = 0) throw()
     { return d + (m + s/real(60))/real(60); }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b> (use Utility::num, instead).
      * Convert a string to a real number.
@@ -198,9 +199,8 @@ namespace GeographicLib {
      * @param[in] str string input.
      * @return decoded number.
      **********************************************************************/
-    static Math::real Decode(const std::string& str) {
-      return Utility::num<real>(str);
-    }
+    static Math::real Decode(const std::string& str)
+    { return Utility::num<real>(str); }
 
     /**
      * <b>DEPRECATED</b> (use Utility::fract, instead).
@@ -210,9 +210,9 @@ namespace GeographicLib {
      * @param[in] str string input.
      * @return decoded number.
      **********************************************************************/
-    static Math::real DecodeFraction(const std::string& str) {
-      return Utility::fract<real>(str);
-    }
+    static Math::real DecodeFraction(const std::string& str)
+    { return Utility::fract<real>(str); }
+    /// \endcond
 
     /**
      * Convert a pair of strings to latitude and longitude.
@@ -269,6 +269,8 @@ namespace GeographicLib {
      * @param[in] prec the number of digits after the decimal point for the
      *   trailing component.
      * @param[in] ind DMS::flag value indicated additional formatting.
+     * @param[in] dmssep if non-null, use as the DMS separator character
+     *   (instead of d, ', " delimiters).
      * @return formatted string
      *
      * The interpretation of \e ind is as follows:
@@ -285,6 +287,29 @@ namespace GeographicLib {
      * with 2 digits.
      **********************************************************************/
     static std::string Encode(real angle, component trailing, unsigned prec,
+                              flag ind, char dmssep);
+
+    /**
+     * Convert angle (in degrees) into a DMS string (using d, ', and ").
+     *
+     * @param[in] angle input angle (degrees)
+     * @param[in] trailing DMS::component value indicating the trailing units
+     *   on the string and this is given as a decimal number if necessary.
+     * @param[in] prec the number of digits after the decimal point for the
+     *   trailing component.
+     * @param[in] ind DMS::flag value indicated additional formatting.
+     * @return formatted string
+     *
+     * <b>COMPATIBILITY NOTE:</b> This function calls
+     * Encode(real, component, unsigned, flag, char) with a 5th
+     * argument of char(0).  At some point,
+     * Encode(real, component, unsigned, flag) and will be withdrawn
+     * and the interface to
+     * Encode(real, component, unsigned, flag, char) changed so that
+     * its 4th and 5th arguments have default values.  This will
+     * preserve source-level compatibility.
+     **********************************************************************/
+    static std::string Encode(real angle, component trailing, unsigned prec,
                               flag ind = NONE);
 
     /**
@@ -294,6 +319,8 @@ namespace GeographicLib {
      * @param[in] angle input angle (degrees)
      * @param[in] prec the precision relative to 1 degree.
      * @param[in] ind DMS::flag value indicated additional formatting.
+     * @param[in] dmssep if non-null, use as the DMS separator character
+     *   (instead of d, ', " delimiters).
      * @return formatted string
      *
      * \e prec indicates the precision relative to 1 degree, e.g., \e prec = 3
@@ -302,12 +329,13 @@ namespace GeographicLib {
      * facility that DMS::NUMBER represents \e angle as a number in fixed
      * format with precision \e prec.
      **********************************************************************/
-    static std::string Encode(real angle, unsigned prec, flag ind = NONE) {
+    static std::string Encode(real angle, unsigned prec, flag ind = NONE,
+			      char dmssep = char(0)) {
       return ind == NUMBER ? Utility::str<real>(angle, int(prec)) :
         Encode(angle,
                prec < 2 ? DEGREE : (prec < 4 ? MINUTE : SECOND),
                prec < 2 ? prec : (prec < 4 ? prec - 2 : prec - 4),
-               ind);
+               ind, dmssep);
     }
 
     /**
diff --git a/include/GeographicLib/EllipticFunction.hpp b/include/GeographicLib/EllipticFunction.hpp
index 06c4b2a..464b3d0 100644
--- a/include/GeographicLib/EllipticFunction.hpp
+++ b/include/GeographicLib/EllipticFunction.hpp
@@ -2,14 +2,14 @@
  * \file EllipticFunction.hpp
  * \brief Header for GeographicLib::EllipticFunction class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)
 #define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP \
-  "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"
+  "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"
 
 #include <GeographicLib/Constants.hpp>
 
diff --git a/include/GeographicLib/GeoCoords.hpp b/include/GeographicLib/GeoCoords.hpp
index c42c9d1..26a5e71 100644
--- a/include/GeographicLib/GeoCoords.hpp
+++ b/include/GeographicLib/GeoCoords.hpp
@@ -2,14 +2,14 @@
  * \file GeoCoords.hpp
  * \brief Header for GeographicLib::GeoCoords class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #ifndef GEOGRAPHICLIB_GEOCOORDS_HPP
 #define GEOGRAPHICLIB_GEOCOORDS_HPP \
-  "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"
+  "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"
 
 #include <GeographicLib/UTMUPS.hpp>
 #include <GeographicLib/Constants.hpp>
@@ -43,6 +43,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-GeoCoords.cpp
+   *
+   * <a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility
+   * providing access to the functionality of GeoCoords.
    **********************************************************************/
   class GEOGRAPHIC_EXPORT GeoCoords {
   private:
@@ -103,7 +106,8 @@ namespace GeographicLib {
      * - Latitude and Longitude
      *   -  33.44      43.27
      *   -  N33d26.4'  E43d16.2'
-     *   -  43d16'12"E 33d26'24"N
+     *   -  43d16'12"E 33d26'24"N
+     *   -  43:16:12E  33:26:24
      * - MGRS
      *   -  38SLC301
      *   -  38SLC391014
@@ -124,13 +128,17 @@ namespace GeographicLib {
      * - 75W 40N
      * - E-75 -40S
      * .
-     * are all the same position.  The coordinates may be given in decimal
-     * degrees, degrees and decimal minutes, degrees, minutes, seconds, etc.
-     * Use d, ', and " to make off the degrees, minutes and seconds.  Thus
-     * - 40d30'30"
+     * are all the same position.  The coordinates may be given in
+     * decimal degrees, degrees and decimal minutes, degrees, minutes,
+     * seconds, etc.  Use d, ', and " to mark off the degrees,
+     * minutes and seconds.  Alternatively, use : to separate these
+     * components.  Thus
+     * - 40d30'30"
      * - 40d30'30
      * - 40d30.5'
      * - 40d30.5
+     * - 40:30:30
+     * - 40:30.5
      * - 40.508333333
      * .
      * all specify the same angle.  The leading sign applies to all components
@@ -354,6 +362,8 @@ namespace GeographicLib {
      *
      * @param[in] prec precision (relative to about 1m)
      * @param[in] swaplatlong if true give longitude first (default = false)
+     * @param[in] dmssep if non-null, use as the DMS separator character
+     *   (instead of d, ', " delimiters).
      * @return DMS latitude/longitude string representation.
      *
      * Precision specifies accuracy of representation as follows:
@@ -361,10 +371,29 @@ namespace GeographicLib {
      * - prec = -4, 0.1d
      * - prec = -3, 1'
      * - prec = -2, 0.1'
-     * - prec = -1, 1"
-     * - prec = 0, 0.1" (about 3m)
-     * - prec = 1, 0.01"
-     * - prec = 10 (max), 10<sup>-11</sup>"
+     * - prec = -1, 1"
+     * - prec = 0, 0.1" (about 3m)
+     * - prec = 1, 0.01"
+     * - prec = 10 (max), 10<sup>-11</sup>"
+     **********************************************************************/
+    std::string DMSRepresentation(int prec, bool swaplatlong, char dmssep)
+      const;
+
+    /**
+     * String representation with latitude and longitude as degrees, minutes,
+     * seconds, and hemisphere.
+     *
+     * @param[in] prec precision (relative to about 1m)
+     * @param[in] swaplatlong if true give longitude first (default = false)
+     * @return DMS latitude/longitude string representation.
+     *
+     * <b>COMPATIBILITY NOTE:</b> This function calls
+     * DMSRepresentation(int, bool, char) const with a 3rd argument of
+     * char(0).  At some point, DMSRepresentation(int, bool) const and
+     * will be withdrawn and the interface to
+     * DMSRepresentation(int, bool, char) const changed so that its
+     * arguments have default values.  This will preserve source-level
+     * compatibility.
      **********************************************************************/
     std::string DMSRepresentation(int prec = 0, bool swaplatlong = false) const;
 
@@ -436,14 +465,16 @@ namespace GeographicLib {
      * based on this ellipsoid.)
      **********************************************************************/
     Math::real Flattening() const throw() { return UTMUPS::Flattening(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
-     * @return \e r the inverse flattening of the WGS84 ellipsoid.
+     * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return UTMUPS::InverseFlattening(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/Geocentric.hpp b/include/GeographicLib/Geocentric.hpp
index 1deb4be..26bea45 100644
--- a/include/GeographicLib/Geocentric.hpp
+++ b/include/GeographicLib/Geocentric.hpp
@@ -2,14 +2,14 @@
  * \file Geocentric.hpp
  * \brief Header for GeographicLib::Geocentric class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_GEOCENTRIC_HPP)
 #define GEOGRAPHICLIB_GEOCENTRIC_HPP \
-  "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"
+  "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"
 
 #include <vector>
 #include <algorithm>
@@ -55,6 +55,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-Geocentric.cpp
+   *
+   * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility
+   * providing access to the functionality of Geocentric and LocalCartesian.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT Geocentric {
@@ -251,14 +254,16 @@ namespace GeographicLib {
      **********************************************************************/
     Math::real Flattening() const throw()
     { return Init() ? _f : Math::NaN<real>(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return Init() ? 1/_f : Math::NaN<real>(); }
-    ///@}
+    /// \endcond
 
     /**
      * A global instantiation of Geocentric with the parameters for the WGS84
diff --git a/include/GeographicLib/Geodesic.hpp b/include/GeographicLib/Geodesic.hpp
index 7a53dcc..8e7d48f 100644
--- a/include/GeographicLib/Geodesic.hpp
+++ b/include/GeographicLib/Geodesic.hpp
@@ -2,14 +2,14 @@
  * \file Geodesic.hpp
  * \brief Header for GeographicLib::Geodesic class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_GEODESIC_HPP)
 #define GEOGRAPHICLIB_GEODESIC_HPP \
-  "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"
+  "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"
 
 #include <GeographicLib/Constants.hpp>
 
@@ -121,6 +121,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-Geodesic.cpp
+   *
+   * <a href="Geod.1.html">Geod</a> is a command-line utility providing access
+   * to the functionality of Geodesic and GeodesicLine.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT Geodesic {
@@ -813,11 +816,13 @@ namespace GeographicLib {
      **********************************************************************/
     Math::real Flattening() const throw() { return _f; }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw() { return 1/_f; }
+    /// \endcond
 
     /**
      * @return total area of ellipsoid in meters<sup>2</sup>.  The area of a
diff --git a/include/GeographicLib/GeodesicLine.hpp b/include/GeographicLib/GeodesicLine.hpp
index e241ce0..5b6ca33 100644
--- a/include/GeographicLib/GeodesicLine.hpp
+++ b/include/GeographicLib/GeodesicLine.hpp
@@ -2,14 +2,14 @@
  * \file GeodesicLine.hpp
  * \brief Header for GeographicLib::GeodesicLine class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_GEODESICLINE_HPP)
 #define GEOGRAPHICLIB_GEODESICLINE_HPP \
-  "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"
+  "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"
 
 #include <GeographicLib/Constants.hpp>
 #include <GeographicLib/Geodesic.hpp>
@@ -51,6 +51,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-GeodesicLine.cpp
+   *
+   * <a href="Geod.1.html">Geod</a> is a command-line utility providing access
+   * to the functionality of Geodesic and GeodesicLine.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT GeodesicLine {
@@ -561,12 +564,14 @@ namespace GeographicLib {
     Math::real Flattening() const throw()
     { return Init() ? _f : Math::NaN<real>(); }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return Init() ? 1/_f : Math::NaN<real>(); }
+    /// \endcond
 
     /**
      * @return \e caps the computational capabilities that this object was
diff --git a/include/GeographicLib/Geoid.hpp b/include/GeographicLib/Geoid.hpp
index abf9d76..0801434 100644
--- a/include/GeographicLib/Geoid.hpp
+++ b/include/GeographicLib/Geoid.hpp
@@ -2,14 +2,14 @@
  * \file Geoid.hpp
  * \brief Header for GeographicLib::Geoid class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_GEOID_HPP)
 #define GEOGRAPHICLIB_GEOID_HPP \
-  "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"
+  "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"
 
 #include <string>
 #include <vector>
@@ -22,6 +22,17 @@
 #pragma warning (disable: 4251)
 #endif
 
+#if !defined(PGM_PIXEL_WIDTH)
+/**
+ * The size of the pixel data in the pgm data files for the geoids.  2
+ * is the standard size corresponding to a maxval 2^16-1.  Setting it
+ * to 4 uses a maxval of 2^32-1 and changes the extension for the data
+ * files from .pgm to .pgm4.  Note that the format of these pgm4 files
+ * is a non-standard extension of the pgm format.
+ **********************************************************************/
+#define PGM_PIXEL_WIDTH 2
+#endif
+
 namespace GeographicLib {
 
   /**
@@ -66,11 +77,23 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-Geoid.cpp
+   *
+   * <a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility
+   * providing access to the functionality of Geoid.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT Geoid {
   private:
     typedef Math::real real;
+#if PGM_PIXEL_WIDTH != 4
+    typedef unsigned short pixel_t;
+    static const unsigned pixel_size_ = 2;
+    static const unsigned pixel_max_ = 0xffffu;
+#else
+    typedef unsigned pixel_t;
+    static const unsigned pixel_size_ = 4;
+    static const unsigned pixel_max_ = 0xffffffffu;
+#endif
     static const unsigned stencilsize_ = 12;
     static const unsigned nterms_ = ((3 + 1) * (3 + 2))/2; // for a cubic fit
     static const real c0_;
@@ -91,7 +114,7 @@ namespace GeographicLib {
     unsigned long long _datastart, _swidth;
     bool _threadsafe;
     // Area cache
-    mutable std::vector< std::vector<unsigned short> > _data;
+    mutable std::vector< std::vector<pixel_t> > _data;
     mutable bool _cache;
     // NE corner and extent of cache
     mutable int _xoffset, _yoffset, _xsize, _ysize;
@@ -105,7 +128,8 @@ namespace GeographicLib {
                   // g++ 3.x doesn't know about the cast to streamoff.
                   std::ios::streamoff
 #endif
-                  (_datastart + 2ULL * (unsigned(iy)*_swidth + unsigned(ix))));
+                  (_datastart +
+                   pixel_size_ * (unsigned(iy)*_swidth + unsigned(ix))));
     }
     real rawval(int ix, int iy) const {
       if (ix < 0)
@@ -127,7 +151,13 @@ namespace GeographicLib {
           char a, b;
           _file.get(a);
           _file.get(b);
-          return real((unsigned char)(a) * 256u + (unsigned char)(b));
+          unsigned r = ((unsigned char)(a) << 8) | (unsigned char)(b);
+          if (pixel_size_ == 4) {
+            _file.get(a);
+            _file.get(b);
+            r = (r << 16) | ((unsigned char)(a) << 8) | (unsigned char)(b);
+          }
+          return real(r);
         }
         catch (const std::exception& e) {
           // throw GeographicErr("Error reading " + _filename + ": "
@@ -268,7 +298,12 @@ namespace GeographicLib {
      * The latitude should be in [-90, 90] and longitude should be in [-180,
      * 360].  This may throw an error because of an error reading data from
      * disk.  However, it will not throw if (\e lat, \e lon) is within a
-     * successfully cached area.
+     * successfully cached area.  As a result of the way that the geoid data is
+     * stored, the calculation of gradients can result in large quantization
+     * errors.  This is particularly acute for fine grids, at high latitudes,
+     * and for the easterly gradient.  If you need to compute the direction of
+     * the acceleration due to gravity accurately, you should use
+     * GravityModel::Gravity.
      **********************************************************************/
     Math::real operator()(real lat, real lon, real& gradn, real& grade) const {
       return height(lat, lon, true, gradn, grade);
@@ -425,14 +460,16 @@ namespace GeographicLib {
      * based on this ellipsoid.)
      **********************************************************************/
     Math::real Flattening() const throw() { return Constants::WGS84_f<real>(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the WGS84 ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return 1/Constants::WGS84_f<real>(); }
-    ///@}
+    /// \endcond
 
     /**
      * @return the default path for geoid data files.
diff --git a/include/GeographicLib/Gnomonic.hpp b/include/GeographicLib/Gnomonic.hpp
index 3c0a463..8991dc3 100644
--- a/include/GeographicLib/Gnomonic.hpp
+++ b/include/GeographicLib/Gnomonic.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_GNOMONIC_HPP)
 #define GEOGRAPHICLIB_GNOMONIC_HPP \
-  "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"
+  "$Id: f2e7e429e56165c314a518fada607c225132b945 $"
 
 #include <GeographicLib/Geodesic.hpp>
 #include <GeographicLib/GeodesicLine.hpp>
@@ -98,6 +98,10 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-Gnomonic.cpp
+   *
+   * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility
+   * providing access to the functionality of AzimuthalEquidistant, Gnomonic,
+   * and CassiniSoldner.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT Gnomonic {
@@ -206,14 +210,16 @@ namespace GeographicLib {
      *   inherited from the Geodesic object used in the constructor.
      **********************************************************************/
     Math::real Flattening() const throw() { return _earth.Flattening(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return _earth.InverseFlattening(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/GravityCircle.hpp b/include/GeographicLib/GravityCircle.hpp
index 43b2dca..c35cdd5 100644
--- a/include/GeographicLib/GravityCircle.hpp
+++ b/include/GeographicLib/GravityCircle.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_GRAVITYCIRCLE_HPP)
 #define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP \
-  "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"
+  "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"
 
 #include <string>
 #include <vector>
@@ -35,6 +35,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-GravityCircle.cpp
+   *
+   * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing
+   * access to the functionality of GravityModel and GravityCircle.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT GravityCircle {
diff --git a/include/GeographicLib/GravityModel.hpp b/include/GeographicLib/GravityModel.hpp
index 4d0cf79..937525e 100644
--- a/include/GeographicLib/GravityModel.hpp
+++ b/include/GeographicLib/GravityModel.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_GRAVITYMODEL_HPP)
 #define GEOGRAPHICLIB_GRAVITYMODEL_HPP \
-  "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"
+  "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"
 
 #include <string>
 #include <sstream>
@@ -79,6 +79,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-GravityModel.cpp
+   *
+   * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing
+   * access to the functionality of GravityModel and GravityCircle.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT GravityModel {
diff --git a/include/GeographicLib/LambertConformalConic.hpp b/include/GeographicLib/LambertConformalConic.hpp
index 42c87bc..1e2256e 100644
--- a/include/GeographicLib/LambertConformalConic.hpp
+++ b/include/GeographicLib/LambertConformalConic.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP)
 #define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP \
-  "$Id: fcf9176f0a356995138754581297173aa3491693 $"
+  "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"
 
 #include <algorithm>
 #include <GeographicLib/Constants.hpp>
@@ -51,6 +51,10 @@ namespace GeographicLib {
    * system (<a href="http://www.spatialreference.org/ref/epsg/3364/">
    * EPSG:3364</a>) is obtained by:
    * \include example-LambertConformalConic.cpp
+   *
+   * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility
+   * providing access to the functionality of LambertConformalConic and
+   * AlbersEqualArea.
    **********************************************************************/
   class GEOGRAPHIC_EXPORT LambertConformalConic {
   private:
@@ -112,9 +116,9 @@ namespace GeographicLib {
     static inline real Dsinh(real x, real y, real sx, real sy, real cx, real cy)
       // sx = sinh(x), cx = cosh(x)
       throw() {
-      // real t = (x  - y)/2, c = sqrt((1 + cx) * (1 + cy));
+      // real t = (x - y)/2, c = sqrt((1 + cx) * (1 + cy));
       // return (t != 0 ? sinh(t)/t : real(1)) * (c + sx * sy / c) /2;
-      real t = (x  - y)/2;
+      real t = (x - y)/2;
       return (t != 0 ? sinh(t)/t : real(1)) * sqrt((sx * sy + cx * cy + 1) /2);
     }
     // Dasinh(x,y) = asinh((x-y)*(x+y)/(x*sqrt(1+y^2)+y*sqrt(1+x^2)))/(x-y)
@@ -281,16 +285,18 @@ namespace GeographicLib {
     Math::real MajorRadius() const throw() { return _a; }
 
     /**
-     * @return \e f the  flattening of the ellipsoid.  This is the
+     * @return \e f the flattening of the ellipsoid.  This is the
      *   value used in the constructor.
      **********************************************************************/
     Math::real Flattening() const throw() { return _f; }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw() { return 1/_f; }
+    /// \endcond
 
     /**
      * @return latitude of the origin for the projection (degrees).
diff --git a/include/GeographicLib/LocalCartesian.hpp b/include/GeographicLib/LocalCartesian.hpp
index 6e4f6f0..450b172 100644
--- a/include/GeographicLib/LocalCartesian.hpp
+++ b/include/GeographicLib/LocalCartesian.hpp
@@ -2,14 +2,14 @@
  * \file LocalCartesian.hpp
  * \brief Header for GeographicLib::LocalCartesian class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_LOCALCARTESIAN_HPP)
 #define GEOGRAPHICLIB_LOCALCARTESIAN_HPP \
-  "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"
+  "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"
 
 #include <GeographicLib/Geocentric.hpp>
 #include <GeographicLib/Constants.hpp>
@@ -31,6 +31,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-LocalCartesian.cpp
+   *
+   * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility
+   * providing access to the functionality of Geocentric and LocalCartesian.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT LocalCartesian {
@@ -221,14 +224,16 @@ namespace GeographicLib {
      *   inherited from the Geocentric object used in the constructor.
      **********************************************************************/
     Math::real Flattening() const throw() { return _earth.Flattening(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw()
     { return _earth.InverseFlattening(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/MGRS.hpp b/include/GeographicLib/MGRS.hpp
index a381535..d02956d 100644
--- a/include/GeographicLib/MGRS.hpp
+++ b/include/GeographicLib/MGRS.hpp
@@ -2,13 +2,13 @@
  * \file MGRS.hpp
  * \brief Header for GeographicLib::MGRS class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_MGRS_HPP)
-#define GEOGRAPHICLIB_MGRS_HPP "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"
+#define GEOGRAPHICLIB_MGRS_HPP "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"
 
 #include <sstream>
 #include <GeographicLib/Constants.hpp>
@@ -271,14 +271,16 @@ namespace GeographicLib {
      * based on this ellipsoid.)
      **********************************************************************/
     static Math::real Flattening() throw() { return UTMUPS::Flattening(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the WGS84 ellipsoid.
      **********************************************************************/
     static Math::real InverseFlattening() throw()
     { return UTMUPS::InverseFlattening(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/MagneticCircle.hpp b/include/GeographicLib/MagneticCircle.hpp
index c680f04..f450fd4 100644
--- a/include/GeographicLib/MagneticCircle.hpp
+++ b/include/GeographicLib/MagneticCircle.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_MAGNETICCIRCLE_HPP)
 #define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP \
-  "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"
+  "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"
 
 #include <string>
 #include <vector>
@@ -31,6 +31,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-MagneticCircle.cpp
+   *
+   * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility
+   * providing access to the functionality of MagneticModel and MagneticCircle.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT MagneticCircle {
diff --git a/include/GeographicLib/MagneticModel.hpp b/include/GeographicLib/MagneticModel.hpp
index 3d2d3d7..e8384c8 100644
--- a/include/GeographicLib/MagneticModel.hpp
+++ b/include/GeographicLib/MagneticModel.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_MAGNETICMODEL_HPP)
 #define GEOGRAPHICLIB_MAGNETICMODEL_HPP \
-  "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"
+  "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"
 
 #include <string>
 #include <sstream>
@@ -56,6 +56,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-MagneticModel.cpp
+   *
+   * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility
+   * providing access to the functionality of MagneticModel and MagneticCircle.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT MagneticModel {
diff --git a/include/GeographicLib/Math.hpp b/include/GeographicLib/Math.hpp
index 3aa45a2..66dc1a1 100644
--- a/include/GeographicLib/Math.hpp
+++ b/include/GeographicLib/Math.hpp
@@ -2,8 +2,8 @@
  * \file Math.hpp
  * \brief Header for GeographicLib::Math class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -12,16 +12,16 @@
 #include <GeographicLib/Constants.hpp>
 
 #if !defined(GEOGRAPHICLIB_MATH_HPP)
-#define GEOGRAPHICLIB_MATH_HPP "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"
+#define GEOGRAPHICLIB_MATH_HPP "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"
 
 /**
- * Are C++0X math functions available?
+ * Are C++11 math functions available?
  **********************************************************************/
-#if !defined(GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if !defined(GEOGRAPHICLIB_CPLUSPLUS11_MATH)
 #  if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#    define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 1
+#    define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1
 #  else
-#    define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 0
+#    define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0
 #  endif
 #endif
 
@@ -146,13 +146,13 @@ namespace GeographicLib {
         b = (std::min)(x, y) / (a ? a : 1);
       return a * std::sqrt(1 + b * b);
     }
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
     template<typename T> static inline T hypot(T x, T y) throw()
     { return std::hypot(x, y); }
 #elif defined(_MSC_VER)
     static inline double hypot(double x, double y) throw()
     { return _hypot(x, y); }
-#if (_MSC_VER < 1400)
+#if _MSC_VER < 1400
     // Visual C++ 7.1/VS .NET 2003 does not have _hypotf()
     static inline float hypot(float x, float y) throw()
     { return float(_hypot(x, y)); }
@@ -176,7 +176,7 @@ namespace GeographicLib {
 #endif
 #endif
 
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
     /**
      * exp(\e x) - 1 accurate near \e x = 0.  This is taken from
      * N. J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd
@@ -194,9 +194,9 @@ namespace GeographicLib {
       // mathematically reduces to exp(x) - 1, and the factor z/log(y) = (y -
       // 1)/log(y) is a slowly varying quantity near y = 1 and is accurately
       // computed.
-      return std::abs(x) > 1 ? z : (z == 0 ?  x : x * z / std::log(y));
+      return std::abs(x) > 1 ? z : (z == 0 ? x : x * z / std::log(y));
     }
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
     template<typename T> static inline T expm1(T x) throw()
     { return std::expm1(x); }
 #else
@@ -208,7 +208,7 @@ namespace GeographicLib {
 #endif
 #endif
 
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
     /**
      * log(1 + \e x) accurate near \e x = 0.
      *
@@ -231,7 +231,7 @@ namespace GeographicLib {
       // (log(y)/z) introduces little additional error.
       return z == 0 ? x : x * std::log(y) / z;
     }
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
     template<typename T> static inline T log1p(T x) throw()
     { return std::log1p(x); }
 #else
@@ -243,7 +243,7 @@ namespace GeographicLib {
 #endif
 #endif
 
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
     /**
      * The inverse hyperbolic sine function.  This is defined in terms of
      * Math::log1p(\e x) in order to maintain accuracy near \e x = 0.  In
@@ -258,7 +258,7 @@ namespace GeographicLib {
       y = log1p(y * (1 + y/(hypot(T(1), y) + 1)));
       return x < 0 ? -y : y;
     }
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
     template<typename T> static inline T asinh(T x) throw()
     { return std::asinh(x); }
 #else
@@ -270,7 +270,7 @@ namespace GeographicLib {
 #endif
 #endif
 
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
     /**
      * The inverse hyperbolic tangent function.  This is defined in terms of
      * Math::log1p(\e x) in order to maintain accuracy near \e x = 0.  In
@@ -285,7 +285,7 @@ namespace GeographicLib {
       y = log1p(2 * y/(1 - y))/2;
       return x < 0 ? -y : y;
     }
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
     template<typename T> static inline T atanh(T x) throw()
     { return std::atanh(x); }
 #else
@@ -297,7 +297,7 @@ namespace GeographicLib {
 #endif
 #endif
 
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
     /**
      * The cube root function.
      *
@@ -309,7 +309,7 @@ namespace GeographicLib {
       T y = std::pow(std::abs(x), 1/T(3)); // Return the real cube root
       return x < 0 ? -y : y;
     }
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
     template<typename T> static inline T cbrt(T x) throw()
     { return std::cbrt(x); }
 #else
@@ -330,7 +330,7 @@ namespace GeographicLib {
     template<typename T> static inline bool isfinite(T x) throw() {
 #if defined(DOXYGEN)
       return std::abs(x) <= (std::numeric_limits<T>::max)();
-#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
       return _finite(x) != 0;
 #else
       return std::isfinite(x);
@@ -361,7 +361,7 @@ namespace GeographicLib {
      * @return true if argument is a NaN.
      **********************************************************************/
     template<typename T> static inline bool isnan(T x) throw() {
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
       return x != x;
 #else
       return std::isnan(x);
diff --git a/include/GeographicLib/OSGB.hpp b/include/GeographicLib/OSGB.hpp
index 8383efe..6d3bcad 100644
--- a/include/GeographicLib/OSGB.hpp
+++ b/include/GeographicLib/OSGB.hpp
@@ -8,7 +8,7 @@
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_OSGB_HPP)
-#define GEOGRAPHICLIB_OSGB_HPP "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"
+#define GEOGRAPHICLIB_OSGB_HPP "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"
 
 #include <string>
 #include <sstream>
@@ -192,13 +192,15 @@ namespace GeographicLib {
      * projection is based on this ellipsoid.)
      **********************************************************************/
     static Math::real Flattening() throw()
-    { return  real(20923713 - 20853810) / real(20923713); }
+    { return real(20923713 - 20853810) / real(20923713); }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the Airy 1830 ellipsoid.
      **********************************************************************/
     static Math::real InverseFlattening() throw() { return 1/Flattening(); }
+    /// \endcond
 
     /**
      * @return \e k0 central scale for the OSGB projection (0.9996012717).
diff --git a/include/GeographicLib/PolarStereographic.hpp b/include/GeographicLib/PolarStereographic.hpp
index 2147f10..759648d 100644
--- a/include/GeographicLib/PolarStereographic.hpp
+++ b/include/GeographicLib/PolarStereographic.hpp
@@ -2,14 +2,14 @@
  * \file PolarStereographic.hpp
  * \brief Header for GeographicLib::PolarStereographic class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP)
 #define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP \
-  "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"
+  "$Id: 07add8492c46e42012007a8738060abc902a5504 $"
 
 #include <GeographicLib/Constants.hpp>
 
@@ -148,11 +148,13 @@ namespace GeographicLib {
      **********************************************************************/
     Math::real Flattening() const throw() { return _f; }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw() { return 1/_f; }
+    /// \endcond
 
     /**
      * The central scale for the projection.  This is the value of \e k0 used
diff --git a/include/GeographicLib/PolygonArea.hpp b/include/GeographicLib/PolygonArea.hpp
index 93d7557..3e029c5 100644
--- a/include/GeographicLib/PolygonArea.hpp
+++ b/include/GeographicLib/PolygonArea.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_POLYGONAREA_HPP)
 #define GEOGRAPHICLIB_POLYGONAREA_HPP \
-  "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"
+  "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"
 
 #include <GeographicLib/Geodesic.hpp>
 #include <GeographicLib/Constants.hpp>
@@ -45,6 +45,9 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-PolygonArea.cpp
+   *
+   * <a href="Planimeter.1.html">Planimeter</a> is a command-line utility
+   * providing access to the functionality of PolygonArea.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT PolygonArea {
diff --git a/include/GeographicLib/SphericalEngine.hpp b/include/GeographicLib/SphericalEngine.hpp
index ef5e419..728d2de 100644
--- a/include/GeographicLib/SphericalEngine.hpp
+++ b/include/GeographicLib/SphericalEngine.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_SPHERICALENGINE_HPP)
 #define GEOGRAPHICLIB_SPHERICALENGINE_HPP \
-  "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"
+  "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"
 
 #include <vector>
 #include <istream>
@@ -124,7 +124,7 @@ namespace GeographicLib {
         , _nmx(nmx)
         , _mmx(mmx)
         , _Cnm(C.begin())
-        , _Snm(S.begin() - (_N + 1))
+        , _Snm(S.begin())
       {
         if (!(_N >= _nmx && _nmx >= _mmx && _mmx >= -1))
           throw GeographicErr("Bad indices for coeff");
@@ -150,7 +150,7 @@ namespace GeographicLib {
         , _nmx(N)
         , _mmx(N)
         , _Cnm(C.begin())
-        , _Snm(S.begin() - (_N + 1))
+        , _Snm(S.begin())
       {
         if (!(_N >= -1))
           throw GeographicErr("Bad indices for coeff");
@@ -193,7 +193,7 @@ namespace GeographicLib {
        * @param[in] k the one-dimensional index.
        * @return the value of the \e S coefficient.
        **********************************************************************/
-      inline Math::real Sv(int k) const { return *(_Snm + k); }
+      inline Math::real Sv(int k) const { return *(_Snm + (k - (_N + 1))); }
       /**
        * An element of \e C with checking.
        *
@@ -217,7 +217,7 @@ namespace GeographicLib {
        *   and \e m are in range else 0.
        **********************************************************************/
       inline Math::real Sv(int k, int n, int m, real f) const
-      { return m > _mmx || n > _nmx ? 0 : *(_Snm + k) * f; }
+      { return m > _mmx || n > _nmx ? 0 : *(_Snm + (k - (_N + 1))) * f; }
 
       /**
        * The size of the coefficient vector for the cosine terms.
diff --git a/include/GeographicLib/SphericalHarmonic.hpp b/include/GeographicLib/SphericalHarmonic.hpp
index a0a3881..ca7a2bf 100644
--- a/include/GeographicLib/SphericalHarmonic.hpp
+++ b/include/GeographicLib/SphericalHarmonic.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_SPHERICALHARMONIC_HPP)
 #define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP \
-  "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"
+  "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"
 
 #include <vector>
 #include <GeographicLib/Constants.hpp>
@@ -209,7 +209,7 @@ namespace GeographicLib {
      * This routine requires constant memory and thus never throws an
      * exception.
      **********************************************************************/
-    Math::real operator()(real x, real y, real z)  const throw() {
+    Math::real operator()(real x, real y, real z) const throw() {
       real f[] = {1};
       real v = 0;
       real dummy;
diff --git a/include/GeographicLib/TransverseMercator.hpp b/include/GeographicLib/TransverseMercator.hpp
index d848dbf..cec7a35 100644
--- a/include/GeographicLib/TransverseMercator.hpp
+++ b/include/GeographicLib/TransverseMercator.hpp
@@ -2,14 +2,14 @@
  * \file TransverseMercator.hpp
  * \brief Header for GeographicLib::TransverseMercator class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP)
 #define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP \
-  "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"
+  "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"
 
 #include <GeographicLib/Constants.hpp>
 
@@ -70,6 +70,10 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-TransverseMercator.cpp
+   *
+   * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
+   * command-line utility providing access to the functionality of
+   * TransverseMercator and TransverseMercatorExact.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT TransverseMercator {
@@ -176,11 +180,13 @@ namespace GeographicLib {
      **********************************************************************/
     Math::real Flattening() const throw() { return _f; }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw() { return 1/_f; }
+    /// \endcond
 
     /**
      * @return \e k0 central scale for the projection.  This is the value of \e
diff --git a/include/GeographicLib/TransverseMercatorExact.hpp b/include/GeographicLib/TransverseMercatorExact.hpp
index 1a4bd56..8f3958c 100644
--- a/include/GeographicLib/TransverseMercatorExact.hpp
+++ b/include/GeographicLib/TransverseMercatorExact.hpp
@@ -2,14 +2,14 @@
  * \file TransverseMercatorExact.hpp
  * \brief Header for GeographicLib::TransverseMercatorExact class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP)
 #define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP \
-  "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"
+  "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"
 
 #include <GeographicLib/Constants.hpp>
 #include <GeographicLib/EllipticFunction.hpp>
@@ -70,6 +70,10 @@ namespace GeographicLib {
    *
    * Example of use:
    * \include example-TransverseMercatorExact.cpp
+   *
+   * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
+   * command-line utility providing access to the functionality of
+   * TransverseMercator and TransverseMercatorExact.
    **********************************************************************/
 
   class GEOGRAPHIC_EXPORT TransverseMercatorExact {
@@ -241,11 +245,13 @@ namespace GeographicLib {
      **********************************************************************/
     Math::real Flattening() const throw() { return _f; }
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the ellipsoid.
      **********************************************************************/
     Math::real InverseFlattening() const throw() { return 1/_f; }
+    /// \endcond
 
     /**
      * @return \e k0 central scale for the projection.  This is the value of \e
diff --git a/include/GeographicLib/UTMUPS.hpp b/include/GeographicLib/UTMUPS.hpp
index 6847cc9..d15e790 100644
--- a/include/GeographicLib/UTMUPS.hpp
+++ b/include/GeographicLib/UTMUPS.hpp
@@ -2,14 +2,14 @@
  * \file UTMUPS.hpp
  * \brief Header for GeographicLib::UTMUPS class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #if !defined(GEOGRAPHICLIB_UTMUPS_HPP)
 #define GEOGRAPHICLIB_UTMUPS_HPP \
-  "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"
+  "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"
 
 #include <sstream>
 #include <GeographicLib/Constants.hpp>
@@ -303,14 +303,16 @@ namespace GeographicLib {
      **********************************************************************/
     static Math::real Flattening() throw()
     { return Constants::WGS84_f<real>(); }
+    ///@}
 
+    /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
      * @return \e r the inverse flattening of the WGS84 ellipsoid.
      **********************************************************************/
     static Math::real InverseFlattening() throw()
     { return 1/Constants::WGS84_f<real>(); }
-    ///@}
+    /// \endcond
   };
 
 } // namespace GeographicLib
diff --git a/include/GeographicLib/Utility.hpp b/include/GeographicLib/Utility.hpp
index c2b5377..f622c2f 100644
--- a/include/GeographicLib/Utility.hpp
+++ b/include/GeographicLib/Utility.hpp
@@ -9,7 +9,7 @@
 
 #if !defined(GEOGRAPHICLIB_UTILITY_HPP)
 #define GEOGRAPHICLIB_UTILITY_HPP \
-  "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"
+  "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"
 
 #include <GeographicLib/Constants.hpp>
 #include <iomanip>
@@ -395,7 +395,7 @@ namespace GeographicLib {
           for (int j = 0; j < n; ++j)
             // fix endian-ness and cast to IntT
             array[i++] = IntT(bigendp == Math::bigendian ? buffer[j] :
-                              Math::swab<IntT>(buffer[j]));
+                              Math::swab<ExtT>(buffer[j]));
           k -= n;
         }
       }
@@ -421,6 +421,64 @@ namespace GeographicLib {
     }
 
     /**
+     * Write data in an array of type IntT as type ExtT to a binary stream.
+     * The data in the file is in (bigendp ? big : little)-endian format.
+     *
+     * @tparam ExtT the type of the objects in the binary stream (external).
+     * @tparam IntT the type of the objects in the array (internal).
+     * @tparam bigendp true if the external storage format is big-endian.
+     * @param[out] str the output stream for the data of type ExtT (external).
+     * @param[in] array the input array of type IntT (internal).
+     * @param[in] num the size of the array.
+     **********************************************************************/
+    template<typename ExtT, typename IntT, bool bigendp>
+      static inline void writearray(std::ostream& str,
+                                   const IntT array[], size_t num) {
+      if (sizeof(IntT) == sizeof(ExtT) &&
+          std::numeric_limits<IntT>::is_integer ==
+          std::numeric_limits<ExtT>::is_integer &&
+          bigendp == Math::bigendian) {
+        // Data is compatible (including endian-ness).
+        str.write(reinterpret_cast<const char *>(array), num * sizeof(ExtT));
+        if (!str.good())
+          throw GeographicErr("Failure writing data");
+      } else {
+        const int bufsize = 1024; // write this many values at a time
+        ExtT buffer[bufsize];     // temporary buffer
+        int k = int(num);         // data values left to write
+        int i = 0;                // index into output array
+        while (k) {
+          int n = (std::min)(k, bufsize);
+          for (int j = 0; j < n; ++j)
+            // cast to ExtT and fix endian-ness
+            buffer[j] = bigendp == Math::bigendian ? ExtT(array[i++]) :
+              Math::swab<ExtT>(ExtT(array[i++]));
+          str.write(reinterpret_cast<const char *>(buffer), n * sizeof(ExtT));
+          if (!str.good())
+            throw GeographicErr("Failure writing data");
+          k -= n;
+        }
+      }
+      return;
+    }
+
+    /**
+     * Write data in an array of type IntT as type ExtT to a binary stream.
+     * The data in the file is in (bigendp ? big : little)-endian format.
+     *
+     * @tparam ExtT the type of the objects in the binary stream (external).
+     * @tparam IntT the type of the objects in the array (internal).
+     * @tparam bigendp true if the external storage format is big-endian.
+     * @param[out] str the output stream for the data of type ExtT (external).
+     * @param[in] array the input vector of type IntT (internal).
+     **********************************************************************/
+    template<typename ExtT, typename IntT, bool bigendp>
+      static inline void writearray(std::ostream& str,
+                                   std::vector<IntT>& array) {
+      writearray<ExtT, IntT, bigendp>(str, &array[0], array.size());
+    }
+
+    /**
      * Parse a KEY VALUE line.
      *
      * @param[in] line the input line.
diff --git a/ltmain.sh b/ltmain.sh
index aa5624c..78cf017 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -8050,7 +8050,7 @@ EOF
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
index 27e1587..17e0ee2 100644
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: 239e16a5c5199ee854f180c8774aaa1b48c5017f $
+# $Id: c8cbcc51270dab8273fb82cf8944118b40cea1fa $
 
 # The man pages are maintained as .pod (plain old documentatoin) files.
 # In maintainer mode, there are used to create real man pages (extension
@@ -13,9 +13,9 @@ if (MAINTAINER)
   add_custom_target (distrib-man)
   add_custom_target (man ALL)
   set (MANDIR ${CMAKE_CURRENT_BINARY_DIR})
-else (MAINTAINER)
+else ()
   set (MANDIR ${CMAKE_CURRENT_SOURCE_DIR})
-endif (MAINTAINER)
+endif ()
 
 set (MANPAGES)
 set (USAGE)
@@ -33,15 +33,15 @@ foreach (TOOL ${TOOLS})
   if (MAINTAINER)
     add_custom_command (OUTPUT ${TOOL}.1
       COMMAND pod2man --center=\"GeographicLib Utilities\"
-	--release=\"GeographicLib ${GeographicLib_VERSION}\"
+        --release=\"GeographicLib ${GeographicLib_VERSION}\"
         ${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.pod > ${TOOL}.1
       COMMENT "Building man page for ${TOOL}"
       MAIN_DEPENDENCY ${TOOL}.pod)
     add_custom_command (OUTPUT ${TOOL}.1.html
       COMMAND
         pod2html --noindex ${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.pod |
-	sed -e 's%<head>%<head><link href="http://search.cpan.org/s/style.css" rel="stylesheet" type="text/css">%'
-	  -e 's%<code>\\\([^<>]*\\\)\(\\\(.\\\)\)</code>%<a href="\\1.\\2.html">&</a>%'g > ${TOOL}.1.html
+        sed -e 's%<head>%<head><link href="http://search.cpan.org/s/style.css" rel="stylesheet" type="text/css">%'
+          -e 's%<code>\\\([^<>]*\\\)\(\\\(.\\\)\)</code>%<a href="\\1.\\2.html">&</a>%'g > ${TOOL}.1.html
       COMMENT "Building html version of man page for ${TOOL}"
       MAIN_DEPENDENCY ${TOOL}.pod)
     add_custom_command (OUTPUT ${TOOL}.usage
@@ -49,8 +49,8 @@ foreach (TOOL ${TOOLS})
         ${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.pod > ${TOOL}.usage
       COMMENT "Building usage code for ${TOOL}"
       MAIN_DEPENDENCY ${TOOL}.pod)
-  endif (MAINTAINER)
-endforeach (TOOL)
+  endif ()
+endforeach ()
 
 # Add the extra maintainer tasks into the dependency list.  The
 # distrib-man target copies the derived documentation files into the
@@ -70,7 +70,7 @@ if (MAINTAINER)
         cmp "$$f" ${CMAKE_CURRENT_SOURCE_DIR}/`basename "$$f"` >/dev/null 2>&1||
         install -m 644 "$$f" ${CMAKE_CURRENT_SOURCE_DIR}\; done
     COMMENT "Installing man documentation page in source tree")
-endif (MAINTAINER)
+endif ()
 
 # Install the man pages.
 install (FILES ${MANPAGES} DESTINATION share/man/man1)
diff --git a/man/CartConvert.1 b/man/CartConvert.1
index e7686a1..74f4c24 100644
--- a/man/CartConvert.1
+++ b/man/CartConvert.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CARTCONVERT 1"
-.TH CARTCONVERT 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH CARTCONVERT 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -134,8 +134,10 @@ CartConvert \-\- convert geodetic coordinates to geocentric or local cartesian
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 \&\fBCartConvert\fR [ \fB\-r\fR ] [ \fB\-l\fR \fIlat0\fR \fIlon0\fR \fIh0\fR ] [ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
 [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -169,6 +171,13 @@ the flattening is \fIf\fR.  Setting \fIf\fR = 0 results in a sphere.  Specify
 is allowed for \fIf\fR.  (Also, if \fIf\fR > 1, the flattening is set to
 1/\fIf\fR.)  By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
 \&\fIf\fR = 1/298.257223563.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -185,8 +194,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/CartConvert.1.html b/man/CartConvert.1.html
index 6670d9f..a10e55c 100644
--- a/man/CartConvert.1.html
+++ b/man/CartConvert.1.html
@@ -44,8 +44,10 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>CartConvert</strong> [ <strong>-r</strong> ] [ <strong>-l</strong> <em>lat0</em> <em>lon0</em> <em>h0</em> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -87,6 +89,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 1/<em>f</em>.)  By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
 <em>f</em> = 1/298.257223563.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -112,8 +123,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/man/CartConvert.pod b/man/CartConvert.pod
index 7c811b6..f65c4f9 100644
--- a/man/CartConvert.pod
+++ b/man/CartConvert.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 6446fad6a0e4dc4f0f6adf3798de4bbf8e81621a $
+=for comment $Id: f3d0184303d2278f369eeb6f8fae2726c6bbfaf4 $
 
 =head1 NAME
 
@@ -7,8 +7,10 @@ CartConvert -- convert geodetic coordinates to geocentric or local cartesian
 =head1 SYNOPSIS
 
 B<CartConvert> [ B<-r> ] [ B<-l> I<lat0> I<lon0> I<h0> ] [ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
 [ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -48,6 +50,14 @@ is allowed for I<f>.  (Also, if I<f> E<gt> 1, the flattening is set to
 1/I<f>.)  By default, the WGS84 ellipsoid is used, I<a> = 6378137 m,
 I<f> = 1/298.257223563.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -68,8 +78,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
diff --git a/man/CartConvert.usage b/man/CartConvert.usage
index 350fa6f..3eba161 100644
--- a/man/CartConvert.usage
+++ b/man/CartConvert.usage
@@ -1,9 +1,10 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --version | -h |\n"
-"    --help ] [ --input-file infile | --input-string instring ] [\n"
-"    --output-file outfile ]\n"
+"    CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --comment-delimiter\n"
+"    commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+"    --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+"    outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    CartConvert --help\n"
@@ -16,9 +17,10 @@ int usage(int retval, bool brief) {
 "       cartesian\n"
 "\n"
 "SYNOPSIS\n"
-"       CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --version | -h |\n"
-"       --help ] [ --input-file infile | --input-string instring ] [\n"
-"       --output-file outfile ]\n"
+"       CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --comment-delimiter\n"
+"       commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+"       --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+"       outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       Convert geodetic coordinates to either geocentric or local cartesian\n"
@@ -48,6 +50,13 @@ int usage(int retval, bool brief) {
 "           default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
 "           1/298.257223563.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -62,8 +71,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
diff --git a/man/ConicProj.1 b/man/ConicProj.1
index 844bb76..6544a0b 100644
--- a/man/ConicProj.1
+++ b/man/ConicProj.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CONICPROJ 1"
-.TH CONICPROJ 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH CONICPROJ 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -135,8 +135,11 @@ ConicProj \-\- perform conic projections
 .IX Header "SYNOPSIS"
 \&\fBConicProj\fR ( \fB\-c\fR | \fB\-a\fR ) \fIlat1\fR \fIlat2\fR
 [ \fB\-l\fR \fIlon0\fR ] [ \fB\-k\fR \fIk1\fR ] [ \fB\-r\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -198,6 +201,13 @@ the flattening is \fIf\fR.  Setting \fIf\fR = 0 results in a sphere.  Specify
 is allowed for \fIf\fR.  (Also, if \fIf\fR > 1, the flattening is set to
 1/\fIf\fR.)  By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
 \&\fIf\fR = 1/298.257223563.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -214,8 +224,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/ConicProj.1.html b/man/ConicProj.1.html
index 70c00ed..056a59f 100644
--- a/man/ConicProj.1.html
+++ b/man/ConicProj.1.html
@@ -44,8 +44,11 @@
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>ConicProj</strong> ( <strong>-c</strong> | <strong>-a</strong> ) <em>lat1</em> <em>lat2</em>
 [ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -122,6 +125,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 1/<em>f</em>.)  By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
 <em>f</em> = 1/298.257223563.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -147,8 +159,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/man/ConicProj.pod b/man/ConicProj.pod
index c7dc82d..be5b8c5 100644
--- a/man/ConicProj.pod
+++ b/man/ConicProj.pod
@@ -1,4 +1,4 @@
-=for comment $Id: fb20e2c28b200e5fda7dafc62cd4e89219d36c8c $
+=for comment $Id: 79921d487c55a107062161cc0d60c48527eb8e05 $
 
 =head1 NAME
 
@@ -8,8 +8,11 @@ ConicProj -- perform conic projections
 
 B<ConicProj> ( B<-c> | B<-a> ) I<lat1> I<lat2>
 [ B<-l> I<lon0> ] [ B<-k> I<k1> ] [ B<-r> ]
-[ B<-e> I<a> I<f> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -81,6 +84,14 @@ is allowed for I<f>.  (Also, if I<f> E<gt> 1, the flattening is set to
 1/I<f>.)  By default, the WGS84 ellipsoid is used, I<a> = 6378137 m,
 I<f> = 1/298.257223563.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -101,8 +112,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
diff --git a/man/ConicProj.usage b/man/ConicProj.usage
index 4b541a3..e6f392b 100644
--- a/man/ConicProj.usage
+++ b/man/ConicProj.usage
@@ -2,8 +2,9 @@ int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
 "    ConicProj ( -c | -a ) lat1 lat2 [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a f ]\n"
-"    [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-"    instring ] [ --output-file outfile ]\n"
+"    [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"    --input-file infile | --input-string instring ] [ --line-separator\n"
+"    linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    ConicProj --help\n"
@@ -16,8 +17,9 @@ int usage(int retval, bool brief) {
 "\n"
 "SYNOPSIS\n"
 "       ConicProj ( -c | -a ) lat1 lat2 [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a f ]\n"
-"       [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-"       instring ] [ --output-file outfile ]\n"
+"       [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"       --input-file infile | --input-string instring ] [ --line-separator\n"
+"       linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       Perform one of two conic projections geodesics.  Convert geodetic\n"
@@ -72,6 +74,13 @@ int usage(int retval, bool brief) {
 "           default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
 "           1/298.257223563.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -86,8 +95,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
diff --git a/man/GeoConvert.1 b/man/GeoConvert.1
index 131bd72..2d6463e 100644
--- a/man/GeoConvert.1
+++ b/man/GeoConvert.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEOCONVERT 1"
-.TH GEOCONVERT 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEOCONVERT 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -133,10 +133,12 @@
 GeoConvert \-\- convert geographic coordinates
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
-\&\fBGeoConvert\fR [ \fB\-g\fR | \fB\-d\fR | \fB\-u\fR | \fB\-m\fR | \fB\-c\fR ] [ \fB\-p\fR \fIprec\fR ]
-[ \fB\-z\fR \fIzone\fR | \fB\-s\fR | \fB\-t\fR ] [ \fB\-n\fR ] [ \fB\-w\fR ]
+\&\fBGeoConvert\fR [ \fB\-g\fR | \fB\-d\fR | \fB\-:\fR | \fB\-u\fR | \fB\-m\fR | \fB\-c\fR ]
+[ \fB\-p\fR \fIprec\fR ] [ \fB\-z\fR \fIzone\fR | \fB\-s\fR | \fB\-t\fR ] [ \fB\-n\fR ] [ \fB\-w\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
 [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -149,7 +151,7 @@ govern the format of output.  In all cases, the \s-1WGS84\s0 model of the earth
 is used (\fIa\fR = 6378137 m, \fIf\fR = 1/298.257223563).
 .IP "\fBgeographic\fR" 4
 .IX Item "geographic"
-2 tokens (output options \fB\-g\fR or \fB\-d\fR) given as \fIlatitude\fR
+2 tokens (output options \fB\-g\fR, \fB\-d\fR, or \fB\-:\fR) given as \fIlatitude\fR
 \&\fIlongitude\fR using decimal degrees or degrees minutes seconds.  d, ',
 and " are used to denote degrees, minutes, and seconds, with the least
 significant designator optional.  (See \s-1QUOTING\s0 for how to
@@ -199,6 +201,10 @@ output latitude and longitude using decimal degrees.  Default output mode.
 .IP "\fB\-d\fR" 4
 .IX Item "-d"
 output latitude and longitude using degrees, minutes, and seconds (\s-1DMS\s0).
+.IP "\fB\-:\fR" 4
+.IX Item "-:"
+like \fB\-d\fR, except use : as a separator instead of the d, ', and "
+delimiters.
 .IP "\fB\-u\fR" 4
 .IX Item "-u"
 output \s-1UTM\s0 or \s-1UPS\s0.
@@ -235,6 +241,13 @@ square instead of the center; see \s-1MGRS\s0.
 on input and output, longitude precedes latitude (except that on input
 this can be overridden by a hemisphere designator, \fIN\fR, \fIS\fR,\fIE\fR,
 \&\fIW\fR).
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -251,8 +264,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
@@ -357,7 +374,7 @@ file \f(CW\*(C`input.txt\*(C'\fR should just contain the plain coordinates.
 .IX Header "EXAMPLES"
 .Vb 4
 \&   echo 38SMB4488 | GeoConvert         => 33.33424 44.40363
-\&   echo 38SMB4488 | GeoConvert \-d \-p 1 => 33d20\*(Aq03.25"N 044d24\*(Aq13.06"E
+\&   echo 38SMB4488 | GeoConvert \-: \-p 1 => 33:20:03.25N 044:2413.06E
 \&   echo 38SMB4488 | GeoConvert \-u      => 38N 444500 3688500
 \&   echo E44d24 N33d20 | GeoConvert \-m \-p \-3 => 38SMB4488
 .Ve
diff --git a/man/GeoConvert.1.html b/man/GeoConvert.1.html
index 518911d..ad7f237 100644
--- a/man/GeoConvert.1.html
+++ b/man/GeoConvert.1.html
@@ -48,10 +48,12 @@
 </p>
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
-<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-:</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ]
+[ <strong>-p</strong> <em>prec</em> ] [ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -68,7 +70,7 @@ is used (<em>a</em> = 6378137 m, <em>f</em> = 1/298.257223563).</p>
 <dt><strong><a name="geographic" class="item"><strong>geographic</strong></a></strong></dt>
 
 <dd>
-<p>2 tokens (output options <strong>-g</strong> or <strong>-d</strong>) given as <em>latitude</em>
+<p>2 tokens (output options <strong>-g</strong>, <strong>-d</strong>, or <strong>-:</strong>) given as <em>latitude</em>
 <em>longitude</em> using decimal degrees or degrees minutes seconds.  d, ',
 and " are used to denote degrees, minutes, and seconds, with the least
 significant designator optional.  (See <a href="#quoting">QUOTING</a> for how to
@@ -125,6 +127,12 @@ grid square.  For example,</p>
 <dd>
 <p>output latitude and longitude using degrees, minutes, and seconds (DMS).</p>
 </dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
 <dt><strong><a name="u" class="item"><strong>-u</strong></a></strong></dt>
 
 <dd>
@@ -179,6 +187,15 @@ square instead of the center; see <a href="#mgrs">MGRS</a>.</p>
 this can be overridden by a hemisphere designator, <em>N</em>, <em>S</em>,<em>E</em>,
 <em>W</em>).</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -204,8 +221,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -315,7 +338,7 @@ file <code>input.txt</code> should just contain the plain coordinates.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <pre>
    echo 38SMB4488 | GeoConvert         => 33.33424 44.40363
-   echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25"N 044d24'13.06"E
+   echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
    echo 38SMB4488 | GeoConvert -u      => 38N 444500 3688500
    echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488</pre>
 <p>
diff --git a/man/GeoConvert.pod b/man/GeoConvert.pod
index ba0ae74..97de984 100644
--- a/man/GeoConvert.pod
+++ b/man/GeoConvert.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 3c497fb7b466d2f66bc395aa154915313c812973 $
+=for comment $Id: fc3aaeb4b0e207d3d40e1fa301ea4573c37b7321 $
 
 =head1 NAME
 
@@ -6,10 +6,12 @@ GeoConvert -- convert geographic coordinates
 
 =head1 SYNOPSIS
 
-B<GeoConvert> [ B<-g> | B<-d> | B<-u> | B<-m> | B<-c> ] [ B<-p> I<prec> ]
-[ B<-z> I<zone> | B<-s> | B<-t> ] [ B<-n> ] [ B<-w> ]
+B<GeoConvert> [ B<-g> | B<-d> | B<-:> | B<-u> | B<-m> | B<-c> ]
+[ B<-p> I<prec> ] [ B<-z> I<zone> | B<-s> | B<-t> ] [ B<-n> ] [ B<-w> ]
+[ B<--comment-delimiter> I<commentdelim> ]
 [ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -26,7 +28,7 @@ is used (I<a> = 6378137 m, I<f> = 1/298.257223563).
 
 =item B<geographic>
 
-2 tokens (output options B<-g> or B<-d>) given as I<latitude>
+2 tokens (output options B<-g>, B<-d>, or B<-:>) given as I<latitude>
 I<longitude> using decimal degrees or degrees minutes seconds.  d, ',
 and " are used to denote degrees, minutes, and seconds, with the least
 significant designator optional.  (See L<QUOTING|quoting> for how to
@@ -79,6 +81,11 @@ output latitude and longitude using decimal degrees.  Default output mode.
 
 output latitude and longitude using degrees, minutes, and seconds (DMS).
 
+=item B<-:>
+
+like B<-d>, except use : as a separator instead of the d, ', and "
+delimiters.
+
 =item B<-u>
 
 output UTM or UPS.
@@ -124,6 +131,14 @@ on input and output, longitude precedes latitude (except that on input
 this can be overridden by a hemisphere designator, I<N>, I<S>,I<E>,
 I<W>).
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -144,8 +159,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
@@ -252,7 +272,7 @@ file C<input.txt> should just contain the plain coordinates.
 =head1 EXAMPLES
 
    echo 38SMB4488 | GeoConvert         => 33.33424 44.40363
-   echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25"N 044d24'13.06"E
+   echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
    echo 38SMB4488 | GeoConvert -u      => 38N 444500 3688500
    echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488
 
diff --git a/man/GeoConvert.usage b/man/GeoConvert.usage
index 26c78f8..75a80a7 100644
--- a/man/GeoConvert.usage
+++ b/man/GeoConvert.usage
@@ -1,9 +1,10 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    GeoConvert [ -g | -d | -u | -m | -c ] [ -p prec ] [ -z zone | -s | -t ]\n"
-"    [ -n ] [ -w ] [ --version | -h | --help ] [ --input-file infile |\n"
-"    --input-string instring ] [ --output-file outfile ]\n"
+"    GeoConvert [ -g | -d | -: | -u | -m | -c ] [ -p prec ] [ -z zone | -s |\n"
+"    -t ] [ -n ] [ -w ] [ --comment-delimiter commentdelim ] [ --version |\n"
+"    -h | --help ] [ --input-file infile | --input-string instring ] [\n"
+"    --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    GeoConvert --help\n"
@@ -15,9 +16,10 @@ int usage(int retval, bool brief) {
 "       GeoConvert -- convert geographic coordinates\n"
 "\n"
 "SYNOPSIS\n"
-"       GeoConvert [ -g | -d | -u | -m | -c ] [ -p prec ] [ -z zone | -s | -t ]\n"
-"       [ -n ] [ -w ] [ --version | -h | --help ] [ --input-file infile |\n"
-"       --input-string instring ] [ --output-file outfile ]\n"
+"       GeoConvert [ -g | -d | -: | -u | -m | -c ] [ -p prec ] [ -z zone | -s |\n"
+"       -t ] [ -n ] [ -w ] [ --comment-delimiter commentdelim ] [ --version |\n"
+"       -h | --help ] [ --input-file infile | --input-string instring ] [\n"
+"       --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       GeoConvert reads from standard input interpreting each line as a\n"
@@ -29,7 +31,7 @@ int usage(int retval, bool brief) {
 "       used (a = 6378137 m, f = 1/298.257223563).\n"
 "\n"
 "       geographic\n"
-"           2 tokens (output options -g or -d) given as latitude longitude\n"
+"           2 tokens (output options -g, -d, or -:) given as latitude longitude\n"
 "           using decimal degrees or degrees minutes seconds.  d, ', and \" are\n"
 "           used to denote degrees, minutes, and seconds, with the least\n"
 "           significant designator optional.  (See QUOTING for how to quote the\n"
@@ -73,6 +75,9 @@ int usage(int retval, bool brief) {
 "       -d  output latitude and longitude using degrees, minutes, and seconds\n"
 "           (DMS).\n"
 "\n"
+"       -:  like -d, except use : as a separator instead of the d, ', and \"\n"
+"           delimiters.\n"
+"\n"
 "       -u  output UTM or UPS.\n"
 "\n"
 "       -m  output MGRS.\n"
@@ -99,6 +104,13 @@ int usage(int retval, bool brief) {
 "           input this can be overridden by a hemisphere designator, N, S,E,\n"
 "           W).\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -113,8 +125,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
@@ -206,7 +223,7 @@ int usage(int retval, bool brief) {
 "\n"
 "EXAMPLES\n"
 "          echo 38SMB4488 | GeoConvert         => 33.33424 44.40363\n"
-"          echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25\"N 044d24'13.06\"E\n"
+"          echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E\n"
 "          echo 38SMB4488 | GeoConvert -u      => 38N 444500 3688500\n"
 "          echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488\n"
 "\n"
diff --git a/man/Geod.1 b/man/Geod.1
index 8ffedf5..6e901ee 100644
--- a/man/Geod.1
+++ b/man/Geod.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEOD 1"
-.TH GEOD 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEOD 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -134,9 +134,11 @@ Geod \-\- perform geodesic calculations
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 \&\fBGeod\fR [ \fB\-i\fR | \fB\-l\fR \fIlat1\fR \fIlon1\fR \fIazi1\fR ] [ \fB\-a\fR ] [ \fB\-e\fR \fIa\fR \fIf\fR ]
-[ \fB\-d\fR ] [ \fB\-b\fR ] [ \fB\-f\fR ] [ \fB\-p\fR \fIprec\fR ]
+[ \fB\-d\fR | \fB\-:\fR ] [ \fB\-b\fR ] [ \fB\-f\fR ] [ \fB\-p\fR \fIprec\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
 [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -183,6 +185,10 @@ is allowed for \fIf\fR.  (Also, if \fIf\fR > 1, the flattening is set to
 .IP "\fB\-d\fR" 4
 .IX Item "-d"
 output angles as degrees, minutes, seconds instead of decimal degrees.
+.IP "\fB\-:\fR" 4
+.IX Item "-:"
+like \fB\-d\fR, except use : as a separator instead of the d, ', and "
+delimiters.
 .IP "\fB\-b\fR" 4
 .IX Item "-b"
 report the \fIback\fR azimuth at point 2 instead of the forward azimuth.
@@ -197,6 +203,13 @@ quantities \fIm12\fR, \fIM12\fR, \fIM21\fR, and \fIS12\fR are described in
 .IX Item "-p"
 set the output precision to \fIprec\fR (default 3); \fIprec\fR is the
 precision relative to 1 m.  See \s-1PRECISION\s0.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -213,8 +226,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
@@ -290,27 +307,27 @@ will be converted.
 Route from \s-1JFK\s0 Airport to Singapore Changi Airport:
 .PP
 .Vb 2
-\&   echo "40d38\*(Aq23N" "073d46\*(Aq44W" "01d21\*(Aq33N" "103d59\*(Aq22E" |
-\&   Geod \-i \-d \-p 0
+\&   echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+\&   Geod \-i \-: \-p 0
 \&
-\&   003d18\*(Aq29.9" 177d29\*(Aq09.2" 15347628 4302458
+\&   003:18:29.9 177:29:09.2 15347628
 .Ve
 .PP
 Waypoints on the route at intervals of 2000km:
 .PP
 .Vb 2
 \&   for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
-\&   Geod \-l "40d38\*(Aq23N" "073d46\*(Aq44W" "003d18\*(Aq29.9" \-d \-p 0
+\&   Geod \-l 40:38:23N 073:46:44W 003:18:29.9 \-: \-p 0
 \&
-\&   40d38\*(Aq23.0"N 073d46\*(Aq44.0"W 003d18\*(Aq29.9" 0
-\&   58d34\*(Aq45.1"N 071d49\*(Aq36.7"W 004d48\*(Aq48.8" 1967419
-\&   76d22\*(Aq28.4"N 065d32\*(Aq17.8"W 010d41\*(Aq38.4" 3743642
-\&   84d50\*(Aq28.0"N 075d04\*(Aq39.2"E 150d55\*(Aq00.9" 5156905
-\&   67d26\*(Aq20.3"N 098d00\*(Aq51.2"E 173d27\*(Aq20.3" 6070415
-\&   49d33\*(Aq03.2"N 101d06\*(Aq52.6"E 176d07\*(Aq54.3" 6394568
-\&   31d34\*(Aq16.5"N 102d30\*(Aq46.3"E 177d03\*(Aq08.4" 6095725
-\&   13d31\*(Aq56.0"N 103d26\*(Aq50.7"E 177d24\*(Aq55.0" 5200700
-\&   04d32\*(Aq05.7"S 104d14\*(Aq48.7"E 177d28\*(Aq43.6" 3795596
+\&   40:38:23.0N 073:46:44.0W 003:18:29.9
+\&   58:34:45.1N 071:49:36.7W 004:48:48.8
+\&   76:22:28.4N 065:32:17.8W 010:41:38.4
+\&   84:50:28.0N 075:04:39.2E 150:55:00.9
+\&   67:26:20.3N 098:00:51.2E 173:27:20.3
+\&   49:33:03.2N 101:06:52.6E 176:07:54.3
+\&   31:34:16.5N 102:30:46.3E 177:03:08.4
+\&   13:31:56.0N 103:26:50.7E 177:24:55.0
+\&   04:32:05.7S 104:14:48.7E 177:28:43.6
 .Ve
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
diff --git a/man/Geod.1.html b/man/Geod.1.html
index bbb82e1..e19892e 100644
--- a/man/Geod.1.html
+++ b/man/Geod.1.html
@@ -48,9 +48,11 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>Geod</strong> [ <strong>-i</strong> | <strong>-l</strong> <em>lat1</em> <em>lon1</em> <em>azi1</em> ] [ <strong>-a</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
-[ <strong>-d</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>-d</strong> | <strong>-:</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -116,6 +118,12 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 <dd>
 <p>output angles as degrees, minutes, seconds instead of decimal degrees.</p>
 </dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
 <dt><strong><a name="b" class="item"><strong>-b</strong></a></strong></dt>
 
 <dd>
@@ -136,6 +144,15 @@ quantities <em>m12</em>, <em>M12</em>, <em>M21</em>, and <em>S12</em> are descri
 <p>set the output precision to <em>prec</em> (default 3); <em>prec</em> is the
 precision relative to 1 m.  See <a href="#precision">PRECISION</a>.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -161,8 +178,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -249,24 +272,24 @@ will be converted.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>Route from JFK Airport to Singapore Changi Airport:</p>
 <pre>
-   echo "40d38'23N" "073d46'44W" "01d21'33N" "103d59'22E" |
-   Geod -i -d -p 0</pre>
+   echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+   Geod -i -: -p 0</pre>
 <pre>
-   003d18'29.9" 177d29'09.2" 15347628 4302458</pre>
+   003:18:29.9 177:29:09.2 15347628</pre>
 <p>Waypoints on the route at intervals of 2000km:</p>
 <pre>
    for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
-   Geod -l "40d38'23N" "073d46'44W" "003d18'29.9" -d -p 0</pre>
+   Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0</pre>
 <pre>
-   40d38'23.0"N 073d46'44.0"W 003d18'29.9" 0
-   58d34'45.1"N 071d49'36.7"W 004d48'48.8" 1967419
-   76d22'28.4"N 065d32'17.8"W 010d41'38.4" 3743642
-   84d50'28.0"N 075d04'39.2"E 150d55'00.9" 5156905
-   67d26'20.3"N 098d00'51.2"E 173d27'20.3" 6070415
-   49d33'03.2"N 101d06'52.6"E 176d07'54.3" 6394568
-   31d34'16.5"N 102d30'46.3"E 177d03'08.4" 6095725
-   13d31'56.0"N 103d26'50.7"E 177d24'55.0" 5200700
-   04d32'05.7"S 104d14'48.7"E 177d28'43.6" 3795596</pre>
+   40:38:23.0N 073:46:44.0W 003:18:29.9
+   58:34:45.1N 071:49:36.7W 004:48:48.8
+   76:22:28.4N 065:32:17.8W 010:41:38.4
+   84:50:28.0N 075:04:39.2E 150:55:00.9
+   67:26:20.3N 098:00:51.2E 173:27:20.3
+   49:33:03.2N 101:06:52.6E 176:07:54.3
+   31:34:16.5N 102:30:46.3E 177:03:08.4
+   13:31:56.0N 103:26:50.7E 177:24:55.0
+   04:32:05.7S 104:14:48.7E 177:28:43.6</pre>
 <p>
 </p>
 <hr />
diff --git a/man/Geod.pod b/man/Geod.pod
index 3469559..521ed2b 100644
--- a/man/Geod.pod
+++ b/man/Geod.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 4802ba8dc6d39a842775705796c8ac0e51a4069d $
+=for comment $Id: ac7d3addc8d0f5133f329b9818891b021e90938f $
 
 =head1 NAME
 
@@ -7,9 +7,11 @@ Geod -- perform geodesic calculations
 =head1 SYNOPSIS
 
 B<Geod> [ B<-i> | B<-l> I<lat1> I<lon1> I<azi1> ] [ B<-a> ] [ B<-e> I<a> I<f> ]
-[ B<-d> ] [ B<-b> ] [ B<-f> ] [ B<-p> I<prec> ]
+[ B<-d> | B<-:> ] [ B<-b> ] [ B<-f> ] [ B<-p> I<prec> ]
+[ B<--comment-delimiter> I<commentdelim> ]
 [ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -75,6 +77,11 @@ I<f> = 1/298.257223563.
 
 output angles as degrees, minutes, seconds instead of decimal degrees.
 
+=item B<-:>
+
+like B<-d>, except use : as a separator instead of the d, ', and "
+delimiters.
+
 =item B<-b>
 
 report the I<back> azimuth at point 2 instead of the forward azimuth.
@@ -92,6 +99,14 @@ L<ADDITIONAL QUANTITIES>.
 set the output precision to I<prec> (default 3); I<prec> is the
 precision relative to 1 m.  See L<PRECISION|precision>.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -112,8 +127,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
@@ -197,25 +217,25 @@ will be converted.
 
 Route from JFK Airport to Singapore Changi Airport:
 
-   echo "40d38'23N" "073d46'44W" "01d21'33N" "103d59'22E" |
-   Geod -i -d -p 0
+   echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+   Geod -i -: -p 0
 
-   003d18'29.9" 177d29'09.2" 15347628 4302458
+   003:18:29.9 177:29:09.2 15347628
 
 Waypoints on the route at intervals of 2000km:
 
    for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
-   Geod -l "40d38'23N" "073d46'44W" "003d18'29.9" -d -p 0
-
-   40d38'23.0"N 073d46'44.0"W 003d18'29.9" 0
-   58d34'45.1"N 071d49'36.7"W 004d48'48.8" 1967419
-   76d22'28.4"N 065d32'17.8"W 010d41'38.4" 3743642
-   84d50'28.0"N 075d04'39.2"E 150d55'00.9" 5156905
-   67d26'20.3"N 098d00'51.2"E 173d27'20.3" 6070415
-   49d33'03.2"N 101d06'52.6"E 176d07'54.3" 6394568
-   31d34'16.5"N 102d30'46.3"E 177d03'08.4" 6095725
-   13d31'56.0"N 103d26'50.7"E 177d24'55.0" 5200700
-   04d32'05.7"S 104d14'48.7"E 177d28'43.6" 3795596
+   Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0
+
+   40:38:23.0N 073:46:44.0W 003:18:29.9
+   58:34:45.1N 071:49:36.7W 004:48:48.8
+   76:22:28.4N 065:32:17.8W 010:41:38.4
+   84:50:28.0N 075:04:39.2E 150:55:00.9
+   67:26:20.3N 098:00:51.2E 173:27:20.3
+   49:33:03.2N 101:06:52.6E 176:07:54.3
+   31:34:16.5N 102:30:46.3E 177:03:08.4
+   13:31:56.0N 103:26:50.7E 177:24:55.0
+   04:32:05.7S 104:14:48.7E 177:28:43.6
 
 =head1 SEE ALSO
 
diff --git a/man/Geod.usage b/man/Geod.usage
index 0582394..3dde2d3 100644
--- a/man/Geod.usage
+++ b/man/Geod.usage
@@ -1,9 +1,10 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d ] [ -b ] [ -f ]\n"
-"    [ -p prec ] [ --version | -h | --help ] [ --input-file infile |\n"
-"    --input-string instring ] [ --output-file outfile ]\n"
+"    Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d | -: ] [ -b ] [\n"
+"    -f ] [ -p prec ] [ --comment-delimiter commentdelim ] [ --version | -h\n"
+"    | --help ] [ --input-file infile | --input-string instring ] [\n"
+"    --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    Geod --help\n"
@@ -15,9 +16,10 @@ int usage(int retval, bool brief) {
 "       Geod -- perform geodesic calculations\n"
 "\n"
 "SYNOPSIS\n"
-"       Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d ] [ -b ] [ -f ]\n"
-"       [ -p prec ] [ --version | -h | --help ] [ --input-file infile |\n"
-"       --input-string instring ] [ --output-file outfile ]\n"
+"       Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d | -: ] [ -b ] [\n"
+"       -f ] [ -p prec ] [ --comment-delimiter commentdelim ] [ --version | -h\n"
+"       | --help ] [ --input-file infile | --input-string instring ] [\n"
+"       --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       The shortest path between two points on the ellipsoid at (lat1, lon1)\n"
@@ -59,6 +61,9 @@ int usage(int retval, bool brief) {
 "       -d  output angles as degrees, minutes, seconds instead of decimal\n"
 "           degrees.\n"
 "\n"
+"       -:  like -d, except use : as a separator instead of the d, ', and \"\n"
+"           delimiters.\n"
+"\n"
 "       -b  report the back azimuth at point 2 instead of the forward azimuth.\n"
 "\n"
 "       -f  full output; each line of output consists of 12 quantities: lat1\n"
@@ -69,6 +74,13 @@ int usage(int retval, bool brief) {
 "       -p  set the output precision to prec (default 3); prec is the precision\n"
 "           relative to 1 m.  See PRECISION.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -83,8 +95,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
@@ -155,25 +172,25 @@ int usage(int retval, bool brief) {
 "EXAMPLES\n"
 "       Route from JFK Airport to Singapore Changi Airport:\n"
 "\n"
-"          echo \"40d38'23N\" \"073d46'44W\" \"01d21'33N\" \"103d59'22E\" |\n"
-"          Geod -i -d -p 0\n"
+"          echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |\n"
+"          Geod -i -: -p 0\n"
 "\n"
-"          003d18'29.9\" 177d29'09.2\" 15347628 4302458\n"
+"          003:18:29.9 177:29:09.2 15347628\n"
 "\n"
 "       Waypoints on the route at intervals of 2000km:\n"
 "\n"
 "          for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |\n"
-"          Geod -l \"40d38'23N\" \"073d46'44W\" \"003d18'29.9\" -d -p 0\n"
-"\n"
-"          40d38'23.0\"N 073d46'44.0\"W 003d18'29.9\" 0\n"
-"          58d34'45.1\"N 071d49'36.7\"W 004d48'48.8\" 1967419\n"
-"          76d22'28.4\"N 065d32'17.8\"W 010d41'38.4\" 3743642\n"
-"          84d50'28.0\"N 075d04'39.2\"E 150d55'00.9\" 5156905\n"
-"          67d26'20.3\"N 098d00'51.2\"E 173d27'20.3\" 6070415\n"
-"          49d33'03.2\"N 101d06'52.6\"E 176d07'54.3\" 6394568\n"
-"          31d34'16.5\"N 102d30'46.3\"E 177d03'08.4\" 6095725\n"
-"          13d31'56.0\"N 103d26'50.7\"E 177d24'55.0\" 5200700\n"
-"          04d32'05.7\"S 104d14'48.7\"E 177d28'43.6\" 3795596\n"
+"          Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0\n"
+"\n"
+"          40:38:23.0N 073:46:44.0W 003:18:29.9\n"
+"          58:34:45.1N 071:49:36.7W 004:48:48.8\n"
+"          76:22:28.4N 065:32:17.8W 010:41:38.4\n"
+"          84:50:28.0N 075:04:39.2E 150:55:00.9\n"
+"          67:26:20.3N 098:00:51.2E 173:27:20.3\n"
+"          49:33:03.2N 101:06:52.6E 176:07:54.3\n"
+"          31:34:16.5N 102:30:46.3E 177:03:08.4\n"
+"          13:31:56.0N 103:26:50.7E 177:24:55.0\n"
+"          04:32:05.7S 104:14:48.7E 177:28:43.6\n"
 "\n"
 "SEE ALSO\n"
 "       The algorithms are described in C. F. F. Karney, Geodesics on an\n"
diff --git a/man/GeodesicProj.1 b/man/GeodesicProj.1
index 95e9c33..9bde582 100644
--- a/man/GeodesicProj.1
+++ b/man/GeodesicProj.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEODESICPROJ 1"
-.TH GEODESICPROJ 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEODESICPROJ 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -134,8 +134,11 @@ GeodesicProj \-\- perform projections based on geodesics
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 \&\fBGeodesicProj\fR ( \fB\-z\fR | \fB\-c\fR | \fB\-g\fR ) \fIlat0\fR \fIlon0\fR [ \fB\-r\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -185,6 +188,13 @@ the flattening is \fIf\fR.  Setting \fIf\fR = 0 results in a sphere.  Specify
 is allowed for \fIf\fR.  (Also, if \fIf\fR > 1, the flattening is set to
 1/\fIf\fR.)  By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
 \&\fIf\fR = 1/298.257223563.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -201,8 +211,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/GeodesicProj.1.html b/man/GeodesicProj.1.html
index 333e061..2d3f493 100644
--- a/man/GeodesicProj.1.html
+++ b/man/GeodesicProj.1.html
@@ -44,8 +44,11 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>GeodesicProj</strong> ( <strong>-z</strong> | <strong>-c</strong> | <strong>-g</strong> ) <em>lat0</em> <em>lon0</em> [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 1/<em>f</em>.)  By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
 <em>f</em> = 1/298.257223563.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/man/GeodesicProj.pod b/man/GeodesicProj.pod
index 7e2b32d..721aed8 100644
--- a/man/GeodesicProj.pod
+++ b/man/GeodesicProj.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 141713240cad0f3339d9fdfca0d590571056014a $
+=for comment $Id: c2031e302eb69c8ce23ee8dd7152e58cf10df751 $
 
 =head1 NAME
 
@@ -7,8 +7,11 @@ GeodesicProj -- perform projections based on geodesics
 =head1 SYNOPSIS
 
 B<GeodesicProj> ( B<-z> | B<-c> | B<-g> ) I<lat0> I<lon0> [ B<-r> ]
-[ B<-e> I<a> I<f> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -67,6 +70,14 @@ is allowed for I<f>.  (Also, if I<f> E<gt> 1, the flattening is set to
 1/I<f>.)  By default, the WGS84 ellipsoid is used, I<a> = 6378137 m,
 I<f> = 1/298.257223563.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -87,8 +98,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
diff --git a/man/GeodesicProj.usage b/man/GeodesicProj.usage
index c382d52..07bade1 100644
--- a/man/GeodesicProj.usage
+++ b/man/GeodesicProj.usage
@@ -1,9 +1,10 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [ --version |\n"
-"    -h | --help ] [ --input-file infile | --input-string instring ] [\n"
-"    --output-file outfile ]\n"
+"    GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [\n"
+"    --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"    --input-file infile | --input-string instring ] [ --line-separator\n"
+"    linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    GeodesicProj --help\n"
@@ -15,9 +16,10 @@ int usage(int retval, bool brief) {
 "       GeodesicProj -- perform projections based on geodesics\n"
 "\n"
 "SYNOPSIS\n"
-"       GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [ --version |\n"
-"       -h | --help ] [ --input-file infile | --input-string instring ] [\n"
-"       --output-file outfile ]\n"
+"       GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [\n"
+"       --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"       --input-file infile | --input-string instring ] [ --line-separator\n"
+"       linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       Perform projections based on geodesics.  Convert geodetic coordinates\n"
@@ -61,6 +63,13 @@ int usage(int retval, bool brief) {
 "           default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
 "           1/298.257223563.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -75,8 +84,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
diff --git a/man/GeoidEval.1 b/man/GeoidEval.1
index 30998f7..cfbb076 100644
--- a/man/GeoidEval.1
+++ b/man/GeoidEval.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEOIDEVAL 1"
-.TH GEOIDEVAL 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEOIDEVAL 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -134,18 +134,19 @@ GeoidEval \-\- look up geoid heights
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 \&\fBGeoidEval\fR [ \fB\-n\fR \fIname\fR ] [ \fB\-d\fR \fIdir\fR ] [ \fB\-l\fR ]
-[ \fB\-a\fR | \fB\-c\fR \fIsouth\fR \fIwest\fR \fInorth\fR \fIeast\fR ]
+[ \fB\-a\fR | \fB\-c\fR \fIsouth\fR \fIwest\fR \fInorth\fR \fIeast\fR ] [ \fB\-g\fR ]
 [ \fB\-z\fR \fIzone\fR ] [ \fB\-\-msltohae\fR ] [ \fB\-\-haetomsl\fR ]
-[ \fB\-v\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-v\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 \&\fBGeoidEval\fR reads in positions on standard input and prints out the
-corresponding geoid heights on standard output.  It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the \s-1WGS84\s0
-ellipsoid in the specified directions).
+corresponding geoid heights on standard output.  Optionally, it also
+prints the northerly and easterly gradients of the geoid height.
 .PP
 Positions are given as latitude and longitude, \s-1UTM/UPS\s0, or \s-1MGRS\s0, in any
 of the formats accepted by \fIGeoConvert\fR\|(1).  (\s-1MGRS\s0 coordinates signify the
@@ -177,6 +178,14 @@ cache the entire data set in memory.  See \s-1CACHE\s0.
 .IX Item "-c"
 cache the data bounded by \fIsouth\fR \fIwest\fR \fInorth\fR \fIeast\fR in memory.
 See \s-1CACHE\s0.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+\&\s-1WGS84\s0 ellipsoid in the specified directions).  As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors.  This is particularly acute at high
+latitudes and for the easterly gradient.
 .IP "\fB\-z\fR" 4
 .IX Item "-z"
 prefix each line of input by \fIzone\fR, e.g., \f(CW\*(C`38N\*(C'\fR.  This should be used
@@ -198,6 +207,13 @@ input line with the height converted to height above the geoid (\s-1MSL\s0).
 .IX Item "-v"
 print information about the geoid on standard error before processing
 the input.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -214,8 +230,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
@@ -231,21 +251,18 @@ installed):
 \&                                  bilinear error    cubic error
 \&   name         geoid    grid     max      rms      max      rms
 \&   egm84\-30     EGM84    30\*(Aq      1.546 m  70 mm    0.274 m  14 mm
-\&   egm84\-15     EGM84    15\*(Aq      0.413 m  18 mm    0.020 m   1 mm
-\&   egm96\-15     EGM96    15\*(Aq      1.152 m  40 mm    0.169 m   7 mm
-\&   egm96\-5      EGM96     5\*(Aq      0.140 m   5 mm    0.003 m   1 mm
-\&   egm2008\-5    EGM2008   5\*(Aq      0.478 m  12 mm    0.294 m   5 mm
-\&   egm2008\-2_5  EGM2008   2.5\*(Aq    0.135 m   3 mm    0.031 m   1 mm
-\&   egm2008\-1    EGM2008   1\*(Aq      0.025 m   1 mm    0.003 m   1 mm
+\&   egm84\-15     EGM84    15\*(Aq      0.413 m  18 mm    0.021 m  1.2 mm
+\&   egm96\-15     EGM96    15\*(Aq      1.152 m  40 mm    0.169 m  7.0 mm
+\&   egm96\-5      EGM96     5\*(Aq      0.140 m  4.6 mm   .0032 m  0.7 mm
+\&   egm2008\-5    EGM2008   5\*(Aq      0.478 m  12 mm    0.294 m  4.5 mm
+\&   egm2008\-2_5  EGM2008   2.5\*(Aq    0.135 m  3.2 mm   0.031 m  0.8 mm
+\&   egm2008\-1    EGM2008   1\*(Aq      0.025 m  0.8 mm   .0022 m  0.7 mm
 .Ve
 .PP
 By default, the \f(CW\*(C`egm96\-5\*(C'\fR geoid is used.  This may changed by setting
 the environment variable \f(CW\*(C`GEOID_NAME\*(C'\fR or with the \fB\-n\fR option.  The
 errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid.  As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors.  This is particularly
-acute at high latitudes and for the easterly gradient.
+errors in the reported heights compared to the specified geoid.
 .PP
 The geoid data will be loaded from a directory specified at compile
 time.  This may changed by setting the environment variables
@@ -276,10 +293,7 @@ The cubic is constrained to be independent of longitude when evaluating
 the height at one of the poles.  Cubic interpolation is considerably
 more accurate than bilinear; however it results in small discontinuities
 in the returned height on cell boundaries.  The gradients are computed
-by differentiating the interpolated results.  As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors.  This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.
+by differentiating the interpolated results.
 .SH "CACHE"
 .IX Header "CACHE"
 By default, the data file is randomly read to compute the geoid heights
@@ -357,7 +371,7 @@ level.)
 The height of the \s-1EGM96\s0 geoid at Timbuktu
 .PP
 .Vb 2
-\&    echo "16d46\*(Aq33N" "3d00\*(Aq34W" | GeoidEval
+\&    echo 16:46:33N 3:00:34W | GeoidEval
 \&    => 28.7068 \-0.02e\-6 \-1.73e\-6
 .Ve
 .PP
diff --git a/man/GeoidEval.1.html b/man/GeoidEval.1.html
index 48d4505..13b32d2 100644
--- a/man/GeoidEval.1.html
+++ b/man/GeoidEval.1.html
@@ -49,20 +49,21 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>GeoidEval</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ] [ <strong>-l</strong> ]
-[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ]
+[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ] [ <strong>-g</strong> ]
 [ <strong>-z</strong> <em>zone</em> ] [ <strong>--msltohae</strong> ] [ <strong>--haetomsl</strong> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
 <hr />
 <h1><a name="description">DESCRIPTION</a></h1>
 <p><strong>GeoidEval</strong> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output.  It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the WGS84
-ellipsoid in the specified directions).</p>
+corresponding geoid heights on standard output.  Optionally, it also
+prints the northerly and easterly gradients of the geoid height.</p>
 <p>Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
 of the formats accepted by <a href="GeoConvert.1.html"><code>GeoConvert(1)</code></a>.  (MGRS coordinates signify the
 <em>center</em> of the corresponding MGRS square.)  If the <strong>-z</strong> option is
@@ -105,6 +106,16 @@ This utility can also compute the direction of gravity accurately.</p>
 <p>cache the data bounded by <em>south</em> <em>west</em> <em>north</em> <em>east</em> in memory.
 See <a href="#cache">CACHE</a>.</p>
 </dd>
+<dt><strong><a name="g" class="item"><strong>-g</strong></a></strong></dt>
+
+<dd>
+<p>print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+WGS84 ellipsoid in the specified directions).  As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors.  This is particularly acute at high
+latitudes and for the easterly gradient.</p>
+</dd>
 <dt><strong><a name="z" class="item"><strong>-z</strong></a></strong></dt>
 
 <dd>
@@ -134,6 +145,15 @@ input line with the height converted to height above the geoid (MSL).</p>
 <p>print information about the geoid on standard error before processing
 the input.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -159,8 +179,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -181,19 +207,16 @@ installed):</p>
                                   bilinear error    cubic error
    name         geoid    grid     max      rms      max      rms
    egm84-30     EGM84    30'      1.546 m  70 mm    0.274 m  14 mm
-   egm84-15     EGM84    15'      0.413 m  18 mm    0.020 m   1 mm
-   egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m   7 mm
-   egm96-5      EGM96     5'      0.140 m   5 mm    0.003 m   1 mm
-   egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m   5 mm
-   egm2008-2_5  EGM2008   2.5'    0.135 m   3 mm    0.031 m   1 mm
-   egm2008-1    EGM2008   1'      0.025 m   1 mm    0.003 m   1 mm</pre>
+   egm84-15     EGM84    15'      0.413 m  18 mm    0.021 m  1.2 mm
+   egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m  7.0 mm
+   egm96-5      EGM96     5'      0.140 m  4.6 mm   .0032 m  0.7 mm
+   egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m  4.5 mm
+   egm2008-2_5  EGM2008   2.5'    0.135 m  3.2 mm   0.031 m  0.8 mm
+   egm2008-1    EGM2008   1'      0.025 m  0.8 mm   .0022 m  0.7 mm</pre>
 <p>By default, the <code>egm96-5</code> geoid is used.  This may changed by setting
 the environment variable <a href="#geoid_name"><code>GEOID_NAME</code></a> or with the <strong>-n</strong> option.  The
 errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid.  As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors.  This is particularly
-acute at high latitudes and for the easterly gradient.</p>
+errors in the reported heights compared to the specified geoid.</p>
 <p>The geoid data will be loaded from a directory specified at compile
 time.  This may changed by setting the environment variables
 <a href="#geoid_path"><code>GEOID_PATH</code></a> or <a href="#geographiclib_data"><code>GEOGRAPHICLIB_DATA</code></a>, or with the <strong>-d</strong> option.  The
@@ -220,10 +243,7 @@ interpolation is based on a least-squares fit of a cubic polynomial to a
 the height at one of the poles.  Cubic interpolation is considerably
 more accurate than bilinear; however it results in small discontinuities
 in the returned height on cell boundaries.  The gradients are computed
-by differentiating the interpolated results.  As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors.  This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.</p>
+by differentiating the interpolated results.</p>
 <p>
 </p>
 <hr />
@@ -331,7 +351,7 @@ level.)</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>The height of the EGM96 geoid at Timbuktu</p>
 <pre>
-    echo "16d46'33N" "3d00'34W" | GeoidEval
+    echo 16:46:33N 3:00:34W | GeoidEval
     => 28.7068 -0.02e-6 -1.73e-6</pre>
 <p>The first number returned is the height of the geoid and the 2nd and 3rd
 are its slopes in the northerly and easterly directions.</p>
diff --git a/man/GeoidEval.pod b/man/GeoidEval.pod
index 12262d7..ded4b1a 100644
--- a/man/GeoidEval.pod
+++ b/man/GeoidEval.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 74dfab88961b32d07f6e54d45eb3cf9f1f86642f $
+=for comment $Id: a3894e4de1e548a59e099d2a170ab330b25dbb21 $
 
 =head1 NAME
 
@@ -7,19 +7,20 @@ GeoidEval -- look up geoid heights
 =head1 SYNOPSIS
 
 B<GeoidEval> [ B<-n> I<name> ] [ B<-d> I<dir> ] [ B<-l> ]
-[ B<-a> | B<-c> I<south> I<west> I<north> I<east> ]
+[ B<-a> | B<-c> I<south> I<west> I<north> I<east> ] [ B<-g> ]
 [ B<-z> I<zone> ] [ B<--msltohae> ] [ B<--haetomsl> ]
-[ B<-v> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-v> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
 
 B<GeoidEval> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output.  It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the WGS84
-ellipsoid in the specified directions).
+corresponding geoid heights on standard output.  Optionally, it also
+prints the northerly and easterly gradients of the geoid height.
 
 Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
 of the formats accepted by GeoConvert(1).  (MGRS coordinates signify the
@@ -59,6 +60,15 @@ cache the entire data set in memory.  See L<CACHE|cache>.
 cache the data bounded by I<south> I<west> I<north> I<east> in memory.
 See L<CACHE|cache>.
 
+=item B<-g>
+
+print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+WGS84 ellipsoid in the specified directions).  As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors.  This is particularly acute at high
+latitudes and for the easterly gradient.
+
 =item B<-z>
 
 prefix each line of input by I<zone>, e.g., C<38N>.  This should be used
@@ -84,6 +94,14 @@ input line with the height converted to height above the geoid (MSL).
 print information about the geoid on standard error before processing
 the input.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -104,8 +122,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
@@ -124,20 +147,17 @@ installed):
                                   bilinear error    cubic error
    name         geoid    grid     max      rms      max      rms
    egm84-30     EGM84    30'      1.546 m  70 mm    0.274 m  14 mm
-   egm84-15     EGM84    15'      0.413 m  18 mm    0.020 m   1 mm
-   egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m   7 mm
-   egm96-5      EGM96     5'      0.140 m   5 mm    0.003 m   1 mm
-   egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m   5 mm
-   egm2008-2_5  EGM2008   2.5'    0.135 m   3 mm    0.031 m   1 mm
-   egm2008-1    EGM2008   1'      0.025 m   1 mm    0.003 m   1 mm
+   egm84-15     EGM84    15'      0.413 m  18 mm    0.021 m  1.2 mm
+   egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m  7.0 mm
+   egm96-5      EGM96     5'      0.140 m  4.6 mm   .0032 m  0.7 mm
+   egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m  4.5 mm
+   egm2008-2_5  EGM2008   2.5'    0.135 m  3.2 mm   0.031 m  0.8 mm
+   egm2008-1    EGM2008   1'      0.025 m  0.8 mm   .0022 m  0.7 mm
 
 By default, the C<egm96-5> geoid is used.  This may changed by setting
 the environment variable C<GEOID_NAME> or with the B<-n> option.  The
 errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid.  As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors.  This is particularly
-acute at high latitudes and for the easterly gradient.
+errors in the reported heights compared to the specified geoid.
 
 The geoid data will be loaded from a directory specified at compile
 time.  This may changed by setting the environment variables
@@ -167,10 +187,7 @@ The cubic is constrained to be independent of longitude when evaluating
 the height at one of the poles.  Cubic interpolation is considerably
 more accurate than bilinear; however it results in small discontinuities
 in the returned height on cell boundaries.  The gradients are computed
-by differentiating the interpolated results.  As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors.  This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.
+by differentiating the interpolated results.
 
 =head1 CACHE
 
@@ -268,7 +285,7 @@ level.)
 
 The height of the EGM96 geoid at Timbuktu
 
-    echo "16d46'33N" "3d00'34W" | GeoidEval
+    echo 16:46:33N 3:00:34W | GeoidEval
     => 28.7068 -0.02e-6 -1.73e-6
 
 The first number returned is the height of the geoid and the 2nd and 3rd
diff --git a/man/GeoidEval.usage b/man/GeoidEval.usage
index cf4db97..43ead01 100644
--- a/man/GeoidEval.usage
+++ b/man/GeoidEval.usage
@@ -2,9 +2,10 @@ int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
 "    GeoidEval [ -n name ] [ -d dir ] [ -l ] [ -a | -c south west north east\n"
-"    ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [ --version | -h |\n"
-"    --help ] [ --input-file infile | --input-string instring ] [\n"
-"    --output-file outfile ]\n"
+"    ] [ -g ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [\n"
+"    --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"    --input-file infile | --input-string instring ] [ --line-separator\n"
+"    linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    GeoidEval --help\n"
@@ -17,16 +18,15 @@ int usage(int retval, bool brief) {
 "\n"
 "SYNOPSIS\n"
 "       GeoidEval [ -n name ] [ -d dir ] [ -l ] [ -a | -c south west north east\n"
-"       ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [ --version | -h |\n"
-"       --help ] [ --input-file infile | --input-string instring ] [\n"
-"       --output-file outfile ]\n"
+"       ] [ -g ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [\n"
+"       --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"       --input-file infile | --input-string instring ] [ --line-separator\n"
+"       linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       GeoidEval reads in positions on standard input and prints out the\n"
-"       corresponding geoid heights on standard output.  It also prints the\n"
-"       northerly and easterly gradients of the geoid height (i.e., the rate at\n"
-"       which the geoid height changes per unit distance along the WGS84\n"
-"       ellipsoid in the specified directions).\n"
+"       corresponding geoid heights on standard output.  Optionally, it also\n"
+"       prints the northerly and easterly gradients of the geoid height.\n"
 "\n"
 "       Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any\n"
 "       of the formats accepted by GeoConvert(1).  (MGRS coordinates signify\n"
@@ -50,6 +50,13 @@ int usage(int retval, bool brief) {
 "       -c  cache the data bounded by south west north east in memory.  See\n"
 "           CACHE.\n"
 "\n"
+"       -g  print the northerly and easterly gradients after the geoid height\n"
+"           (i.e., the rate at which the geoid height changes per unit distance\n"
+"           along the WGS84 ellipsoid in the specified directions).  As a\n"
+"           result of the way that the geoid data is stored, the calculation of\n"
+"           gradients can result in large quantization errors.  This is\n"
+"           particularly acute at high latitudes and for the easterly gradient.\n"
+"\n"
 "       -z  prefix each line of input by zone, e.g., \"38N\".  This should be\n"
 "           used when the input consists of UTM/UPS eastings and northings.\n"
 "\n"
@@ -70,6 +77,13 @@ int usage(int retval, bool brief) {
 "       -v  print information about the geoid on standard error before\n"
 "           processing the input.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -84,8 +98,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
@@ -99,20 +118,17 @@ int usage(int retval, bool brief) {
 "                                         bilinear error    cubic error\n"
 "          name         geoid    grid     max      rms      max      rms\n"
 "          egm84-30     EGM84    30'      1.546 m  70 mm    0.274 m  14 mm\n"
-"          egm84-15     EGM84    15'      0.413 m  18 mm    0.020 m   1 mm\n"
-"          egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m   7 mm\n"
-"          egm96-5      EGM96     5'      0.140 m   5 mm    0.003 m   1 mm\n"
-"          egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m   5 mm\n"
-"          egm2008-2_5  EGM2008   2.5'    0.135 m   3 mm    0.031 m   1 mm\n"
-"          egm2008-1    EGM2008   1'      0.025 m   1 mm    0.003 m   1 mm\n"
+"          egm84-15     EGM84    15'      0.413 m  18 mm    0.021 m  1.2 mm\n"
+"          egm96-15     EGM96    15'      1.152 m  40 mm    0.169 m  7.0 mm\n"
+"          egm96-5      EGM96     5'      0.140 m  4.6 mm   .0032 m  0.7 mm\n"
+"          egm2008-5    EGM2008   5'      0.478 m  12 mm    0.294 m  4.5 mm\n"
+"          egm2008-2_5  EGM2008   2.5'    0.135 m  3.2 mm   0.031 m  0.8 mm\n"
+"          egm2008-1    EGM2008   1'      0.025 m  0.8 mm   .0022 m  0.7 mm\n"
 "\n"
 "       By default, the \"egm96-5\" geoid is used.  This may changed by setting\n"
 "       the environment variable \"GEOID_NAME\" or with the -n option.  The\n"
 "       errors listed here are estimates of the quantization and interpolation\n"
-"       errors in the reported heights compared to the specified geoid.  As a\n"
-"       result of the way that the geoid data is stored, the calculation of\n"
-"       gradients can result in large quantization errors.  This is\n"
-"       particularly acute at high latitudes and for the easterly gradient.\n"
+"       errors in the reported heights compared to the specified geoid.\n"
 "\n"
 "       The geoid data will be loaded from a directory specified at compile\n"
 "       time.  This may changed by setting the environment variables\n"
@@ -141,11 +157,7 @@ int usage(int retval, bool brief) {
 "       the height at one of the poles.  Cubic interpolation is considerably\n"
 "       more accurate than bilinear; however it results in small\n"
 "       discontinuities in the returned height on cell boundaries.  The\n"
-"       gradients are computed by differentiating the interpolated results.  As\n"
-"       a result of the way that the geoid data is stored, the calculation of\n"
-"       gradients can result in large quantization errors.  This is\n"
-"       particularly acute for fine grids, at high latitudes, and for the\n"
-"       easterly gradient.\n"
+"       gradients are computed by differentiating the interpolated results.\n"
 "\n"
 "CACHE\n"
 "       By default, the data file is randomly read to compute the geoid heights\n"
@@ -223,7 +235,7 @@ int usage(int retval, bool brief) {
 "EXAMPLES\n"
 "       The height of the EGM96 geoid at Timbuktu\n"
 "\n"
-"           echo \"16d46'33N\" \"3d00'34W\" | GeoidEval\n"
+"           echo 16:46:33N 3:00:34W | GeoidEval\n"
 "           => 28.7068 -0.02e-6 -1.73e-6\n"
 "\n"
 "       The first number returned is the height of the geoid and the 2nd and\n"
diff --git a/man/Gravity.1 b/man/Gravity.1
index 4a99a22..f3a97ca 100644
--- a/man/Gravity.1
+++ b/man/Gravity.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GRAVITY 1"
-.TH GRAVITY 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GRAVITY 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -136,8 +136,11 @@ Gravity \-\- compute the earth's gravity field
 \&\fBGravity\fR [ \fB\-n\fR \fIname\fR ] [ \fB\-d\fR \fIdir\fR ]
 [ \fB\-G\fR | \fB\-D\fR | \fB\-A\fR | \fB\-H\fR ] [ \fB\-c\fR \fIlat\fR \fIh\fR ]
 [ \fB\-p\fR \fIprec\fR ]
-[ \fB\-v\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-v\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -217,6 +220,13 @@ and 4 for the geoid height.
 .IX Item "-v"
 print information about the gravity model on standard error before
 processing the input.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -233,8 +243,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
@@ -301,7 +315,7 @@ terminate; following lines will be converted.
 The gravity field from \s-1EGM2008\s0 at the top of Mount Everest
 .PP
 .Vb 2
-\&    echo "27d59\*(Aq17N" "86d55\*(Aq32E" 8820 | Gravity \-n egm2008
+\&    echo 27:59:17N 86:55:32E 8820 | Gravity \-n egm2008
 \&    => \-0.00001 0.00103 \-9.76782
 .Ve
 .SH "SEE ALSO"
diff --git a/man/Gravity.1.html b/man/Gravity.1.html
index c052100..d929096 100644
--- a/man/Gravity.1.html
+++ b/man/Gravity.1.html
@@ -48,8 +48,11 @@
 <p><strong>Gravity</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
 [ <strong>-G</strong> | <strong>-D</strong> | <strong>-A</strong> | <strong>-H</strong> ] [ <strong>-c</strong> <em>lat</em> <em>h</em> ]
 [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -150,6 +153,15 @@ and 4 for the geoid height.</p>
 <p>print information about the gravity model on standard error before
 processing the input.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -175,8 +187,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -257,7 +275,7 @@ terminate; following lines will be converted.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>The gravity field from EGM2008 at the top of Mount Everest</p>
 <pre>
-    echo "27d59'17N" "86d55'32E" 8820 | Gravity -n egm2008
+    echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008
     => -0.00001 0.00103 -9.76782</pre>
 <p>
 </p>
diff --git a/man/Gravity.pod b/man/Gravity.pod
index d2973d4..d30f034 100644
--- a/man/Gravity.pod
+++ b/man/Gravity.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 26a56ea50015eec6e0883697e3f7a9908d0b27c6 $
+=for comment $Id: bf56ca96d0775a0610ee03a5e6d92bb21afeff7b $
 
 =head1 NAME
 
@@ -9,8 +9,11 @@ Gravity -- compute the earth's gravity field
 B<Gravity> [ B<-n> I<name> ] [ B<-d> I<dir> ]
 [ B<-G> | B<-D> | B<-A> | B<-H> ] [ B<-c> I<lat> I<h> ]
 [ B<-p> I<prec> ]
-[ B<-v> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-v> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -103,6 +106,14 @@ and 4 for the geoid height.
 print information about the gravity model on standard error before
 processing the input.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -123,8 +134,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
@@ -201,7 +217,7 @@ terminate; following lines will be converted.
 
 The gravity field from EGM2008 at the top of Mount Everest
 
-    echo "27d59'17N" "86d55'32E" 8820 | Gravity -n egm2008
+    echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008
     => -0.00001 0.00103 -9.76782
 
 =head1 SEE ALSO
diff --git a/man/Gravity.usage b/man/Gravity.usage
index 428a178..790a828 100644
--- a/man/Gravity.usage
+++ b/man/Gravity.usage
@@ -2,8 +2,9 @@ int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
 "    Gravity [ -n name ] [ -d dir ] [ -G | -D | -A | -H ] [ -c lat h ] [ -p\n"
-"    prec ] [ -v ] [ --version | -h | --help ] [ --input-file infile |\n"
-"    --input-string instring ] [ --output-file outfile ]\n"
+"    prec ] [ -v ] [ --comment-delimiter commentdelim ] [ --version | -h |\n"
+"    --help ] [ --input-file infile | --input-string instring ] [\n"
+"    --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    Gravity --help\n"
@@ -16,8 +17,9 @@ int usage(int retval, bool brief) {
 "\n"
 "SYNOPSIS\n"
 "       Gravity [ -n name ] [ -d dir ] [ -G | -D | -A | -H ] [ -c lat h ] [ -p\n"
-"       prec ] [ -v ] [ --version | -h | --help ] [ --input-file infile |\n"
-"       --input-string instring ] [ --output-file outfile ]\n"
+"       prec ] [ -v ] [ --comment-delimiter commentdelim ] [ --version | -h |\n"
+"       --help ] [ --input-file infile | --input-string instring ] [\n"
+"       --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       Gravity reads in positions on standard input and prints out the\n"
@@ -86,6 +88,13 @@ int usage(int retval, bool brief) {
 "       -v  print information about the gravity model on standard error before\n"
 "           processing the input.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -100,8 +109,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
@@ -164,7 +178,7 @@ int usage(int retval, bool brief) {
 "EXAMPLES\n"
 "       The gravity field from EGM2008 at the top of Mount Everest\n"
 "\n"
-"           echo \"27d59'17N\" \"86d55'32E\" 8820 | Gravity -n egm2008\n"
+"           echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008\n"
 "           => -0.00001 0.00103 -9.76782\n"
 "\n"
 "SEE ALSO\n"
diff --git a/man/MagneticField.1 b/man/MagneticField.1
index d2ff2e8..d340791 100644
--- a/man/MagneticField.1
+++ b/man/MagneticField.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MAGNETICFIELD 1"
-.TH MAGNETICFIELD 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH MAGNETICFIELD 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -136,8 +136,11 @@ MagneticField \-\- compute the earth's magnetic field
 \&\fBMagneticField\fR [ \fB\-n\fR \fIname\fR ] [ \fB\-d\fR \fIdir\fR ]
 [ \fB\-t\fR \fItime\fR | \fB\-c\fR \fItime\fR \fIlat\fR \fIh\fR ]
 [ \fB\-r\fR ] [ \fB\-T\fR \fItguard\fR ] [ \fB\-H\fR \fIhguard\fR ] [ \fB\-p\fR \fIprec\fR ]
-[ \fB\-v\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-v\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -215,6 +218,13 @@ places.
 .IX Item "-v"
 print information about the magnetic model on standard error before
 processing the input.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -231,8 +241,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
@@ -310,7 +324,7 @@ way.
 The magnetic field from \s-1WMM2010\s0 in Timbuktu on 2012\-01\-01
 .PP
 .Vb 3
-\&    echo 2012\-01\-01 "16d46\*(Aq33N" "3d00\*(Aq34W" 300 | MagneticField \-r
+\&    echo 2012\-01\-01 16:46:33N 3:00:34W 300 | MagneticField \-r
 \&    => \-2.55 12.43 33771.0 33737.6 \-1500.5 7446.0 34582.1
 \&       0.10 \-0.07 34.3 36.8 54.4 \-35.3 25.9
 .Ve
diff --git a/man/MagneticField.1.html b/man/MagneticField.1.html
index 8288971..cf39b66 100644
--- a/man/MagneticField.1.html
+++ b/man/MagneticField.1.html
@@ -48,8 +48,11 @@
 <p><strong>MagneticField</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
 [ <strong>-t</strong> <em>time</em> | <strong>-c</strong> <em>time</em> <em>lat</em> <em>h</em> ]
 [ <strong>-r</strong> ] [ <strong>-T</strong> <em>tguard</em> ] [ <strong>-H</strong> <em>hguard</em> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -144,6 +147,15 @@ places.</p>
 <p>print information about the magnetic model on standard error before
 processing the input.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -169,8 +181,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
@@ -261,7 +279,7 @@ way.</p>
 <h1><a name="examples">EXAMPLES</a></h1>
 <p>The magnetic field from WMM2010 in Timbuktu on 2012-01-01</p>
 <pre>
-    echo 2012-01-01 "16d46'33N" "3d00'34W" 300 | MagneticField -r
+    echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r
     => -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1
        0.10 -0.07 34.3 36.8 54.4 -35.3 25.9</pre>
 <p>The first two numbers returned are the declination and inclination of
diff --git a/man/MagneticField.pod b/man/MagneticField.pod
index ec13bec..1fdf367 100644
--- a/man/MagneticField.pod
+++ b/man/MagneticField.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 00f0562fe0184e3805b4a15323153929dc9f306c $
+=for comment $Id: fe9a4ece2e3919b375542db7836d269d1dfdb9b6 $
 
 =head1 NAME
 
@@ -9,8 +9,11 @@ MagneticField -- compute the earth's magnetic field
 B<MagneticField> [ B<-n> I<name> ] [ B<-d> I<dir> ]
 [ B<-t> I<time> | B<-c> I<time> I<lat> I<h> ]
 [ B<-r> ] [ B<-T> I<tguard> ] [ B<-H> I<hguard> ] [ B<-p> I<prec> ]
-[ B<-v> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-v> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -99,6 +102,14 @@ places.
 print information about the magnetic model on standard error before
 processing the input.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -119,8 +130,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
@@ -208,7 +224,7 @@ way.
 
 The magnetic field from WMM2010 in Timbuktu on 2012-01-01
 
-    echo 2012-01-01 "16d46'33N" "3d00'34W" 300 | MagneticField -r
+    echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r
     => -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1
        0.10 -0.07 34.3 36.8 54.4 -35.3 25.9
 
diff --git a/man/MagneticField.usage b/man/MagneticField.usage
index 7db4a39..0dbb9b7 100644
--- a/man/MagneticField.usage
+++ b/man/MagneticField.usage
@@ -2,9 +2,10 @@ int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
 "    MagneticField [ -n name ] [ -d dir ] [ -t time | -c time lat h ] [ -r ]\n"
-"    [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --version | -h |\n"
-"    --help ] [ --input-file infile | --input-string instring ] [\n"
-"    --output-file outfile ]\n"
+"    [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --comment-delimiter\n"
+"    commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+"    --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+"    outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    MagneticField --help\n"
@@ -17,9 +18,10 @@ int usage(int retval, bool brief) {
 "\n"
 "SYNOPSIS\n"
 "       MagneticField [ -n name ] [ -d dir ] [ -t time | -c time lat h ] [ -r ]\n"
-"       [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --version | -h |\n"
-"       --help ] [ --input-file infile | --input-string instring ] [\n"
-"       --output-file outfile ]\n"
+"       [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --comment-delimiter\n"
+"       commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+"       --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+"       outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       MagneticField reads in times and positions on standard input and prints\n"
@@ -83,6 +85,13 @@ int usage(int retval, bool brief) {
 "       -v  print information about the magnetic model on standard error before\n"
 "           processing the input.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -97,8 +106,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
@@ -170,7 +184,7 @@ int usage(int retval, bool brief) {
 "EXAMPLES\n"
 "       The magnetic field from WMM2010 in Timbuktu on 2012-01-01\n"
 "\n"
-"           echo 2012-01-01 \"16d46'33N\" \"3d00'34W\" 300 | MagneticField -r\n"
+"           echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r\n"
 "           => -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1\n"
 "              0.10 -0.07 34.3 36.8 54.4 -35.3 25.9\n"
 "\n"
diff --git a/man/Makefile.am b/man/Makefile.am
index 46349f0..546b5e7 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -2,7 +2,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 78a0c235fc4db6530faed372f0f78400573242d3 $
+# $Id: 1744bf09577749b0b2bb5775499fe4f0259cc02f $
 
 MANPAGES = \
 CartConvert.1 \
@@ -55,7 +55,7 @@ usage: $(USAGE)
 htmlman: $(HTMLMAN)
 
 .pod.usage:
-	sh makeusage.sh $< > $*.usage
+	sh $(srcdir)/makeusage.sh $< > $*.usage
 
 .pod.1:
 	pod2html --noindex $^ | $(PODFIX) > $*.1.html
@@ -96,5 +96,5 @@ EXTRA_DIST = Makefile.mk CMakeLists.txt makeusage.sh \
 	CartConvert.1.html ConicProj.1.html Geod.1.html GeodesicProj.1.html \
 	GeoidEval.1.html Gravity.1.html MagneticField.1.html Planimeter.1.html
 
-distclean-local:
+maintainer-clean-local:
 	rm -rf *.usage *.1.html *.1
diff --git a/man/Makefile.in b/man/Makefile.in
index 18bc939..a677552 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 78a0c235fc4db6530faed372f0f78400573242d3 $
+# $Id: 1744bf09577749b0b2bb5775499fe4f0259cc02f $
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -426,7 +426,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -470,7 +470,8 @@ installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
 
 mostlyclean: mostlyclean-am
 
@@ -491,16 +492,17 @@ uninstall-man: uninstall-man1
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distclean-local \
-	distdir dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-man1 install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am uninstall uninstall-am uninstall-man uninstall-man1
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-man1 \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-local mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-man uninstall-man1
 
 
 all: man
@@ -511,7 +513,7 @@ usage: $(USAGE)
 htmlman: $(HTMLMAN)
 
 .pod.usage:
-	sh makeusage.sh $< > $*.usage
+	sh $(srcdir)/makeusage.sh $< > $*.usage
 
 .pod.1:
 	pod2html --noindex $^ | $(PODFIX) > $*.1.html
@@ -538,7 +540,7 @@ Planimeter.1.html: Planimeter.pod
 TransverseMercatorProj.1.html: TransverseMercatorProj.pod
 	pod2html --noindex $^ | $(PODFIX) > $@
 
-distclean-local:
+maintainer-clean-local:
 	rm -rf *.usage *.1.html *.1
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/man/Makefile.mk b/man/Makefile.mk
index 1197205..d282b0c 100644
--- a/man/Makefile.mk
+++ b/man/Makefile.mk
@@ -1,4 +1,4 @@
-# $Id: 6ff1f99e93e96bde6bd53462c0f4d9cfdc9588f7 $
+# $Id: 6d0f3921b8c739428669640b67932b7bf9f925d0 $
 PROGRAMS = CartConvert \
 	ConicProj \
 	GeoConvert \
@@ -39,7 +39,8 @@ INSTALL = install -b
 install:
 	test -d $(DEST) || mkdir -p $(DEST)
 	$(INSTALL) -m 644 $(MANPAGES) $(DEST)/
-distclean:
+
+maintainer-clean:
 	rm -f *.1 *.usage *.1.html
 
 .PHONY: all install clean
diff --git a/man/Planimeter.1 b/man/Planimeter.1
index b42d364..67f3dfd 100644
--- a/man/Planimeter.1
+++ b/man/Planimeter.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PLANIMETER 1"
-.TH PLANIMETER 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH PLANIMETER 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -134,8 +134,10 @@ Planimeter \-\- compute the area of geodesic polygons
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 \&\fBPlanimeter\fR [ \fB\-r\fR ] [ \fB\-s\fR ] [ \fB\-l\fR ] [ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
 [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -190,6 +192,13 @@ is allowed for \fIf\fR.  (Also, if \fIf\fR > 1, the flattening is set to
 \&\fIf\fR = 1/298.257223563.  If entering vertices as \s-1UTM/UPS\s0 or \s-1MGRS\s0
 coordinates, use the default ellipsoid, since the conversion of these
 coordinates to latitude and longitude uses the \s-1WGS84\s0 parameters.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing.  For a given polygon, the last such string found will be
+appended to the output line (separated by a space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -206,8 +215,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/Planimeter.1.html b/man/Planimeter.1.html
index 4705c61..37d5415 100644
--- a/man/Planimeter.1.html
+++ b/man/Planimeter.1.html
@@ -43,8 +43,10 @@
 <hr />
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>Planimeter</strong> [ <strong>-r</strong> ] [ <strong>-s</strong> ] [ <strong>-l</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
 [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -109,6 +111,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 coordinates, use the default ellipsoid, since the conversion of these
 coordinates to latitude and longitude uses the WGS84 parameters.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing.  For a given polygon, the last such string found will be
+appended to the output line (separated by a space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -134,8 +145,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/man/Planimeter.pod b/man/Planimeter.pod
index 39657e4..a15925d 100644
--- a/man/Planimeter.pod
+++ b/man/Planimeter.pod
@@ -1,4 +1,4 @@
-=for comment $Id: d00ac2efb990c19bc93346851a06d6c672d054bd $
+=for comment $Id: 501af1a00d02bb4b2b99db921909290b647be941 $
 
 =head1 NAME
 
@@ -7,8 +7,10 @@ Planimeter -- compute the area of geodesic polygons
 =head1 SYNOPSIS
 
 B<Planimeter> [ B<-r> ] [ B<-s> ] [ B<-l> ] [ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
 [ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -71,6 +73,14 @@ I<f> = 1/298.257223563.  If entering vertices as UTM/UPS or MGRS
 coordinates, use the default ellipsoid, since the conversion of these
 coordinates to latitude and longitude uses the WGS84 parameters.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing.  For a given polygon, the last such string found will be
+appended to the output line (separated by a space).
+
 =item B<--version>
 
 print version and exit.
@@ -91,8 +101,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
diff --git a/man/Planimeter.usage b/man/Planimeter.usage
index a76be09..5d83e81 100644
--- a/man/Planimeter.usage
+++ b/man/Planimeter.usage
@@ -1,8 +1,9 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --version | -h | --help ]\n"
-"    [ --input-file infile | --input-string instring ] [ --output-file\n"
+"    Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --comment-delimiter\n"
+"    commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+"    --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
 "    outfile ]\n"
 "\n"
 "For full documentation type:\n"
@@ -15,8 +16,9 @@ int usage(int retval, bool brief) {
 "       Planimeter -- compute the area of geodesic polygons\n"
 "\n"
 "SYNOPSIS\n"
-"       Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --version | -h | --help ]\n"
-"       [ --input-file infile | --input-string instring ] [ --output-file\n"
+"       Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --comment-delimiter\n"
+"       commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+"       --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
 "       outfile ]\n"
 "\n"
 "DESCRIPTION\n"
@@ -68,6 +70,13 @@ int usage(int retval, bool brief) {
 "           these coordinates to latitude and longitude uses the WGS84\n"
 "           parameters.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing.  For a given polygon, the last such string found\n"
+"           will be appended to the output line (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -82,8 +91,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
diff --git a/man/TransverseMercatorProj.1 b/man/TransverseMercatorProj.1
index bcfb127..2558937 100644
--- a/man/TransverseMercatorProj.1
+++ b/man/TransverseMercatorProj.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "TRANSVERSEMERCATORPROJ 1"
-.TH TRANSVERSEMERCATORPROJ 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH TRANSVERSEMERCATORPROJ 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -135,8 +135,11 @@ TransverseMercatorProj \-\- perform transverse Mercator projection
 .IX Header "SYNOPSIS"
 \&\fBTransverseMercatorProj\fR [ \fB\-s\fR | \fB\-t\fR ]
 [ \fB\-l\fR \fIlon0\fR ] [ \fB\-k\fR \fIk1\fR ] [ \fB\-r\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
 [ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
 [ \fB\-\-output\-file\fR \fIoutfile\fR ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -182,6 +185,13 @@ is allowed for \fIf\fR.  (Also, if \fIf\fR > 1, the flattening is set to
 1/\fIf\fR.)  By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
 \&\fIf\fR = 1/298.257223563.  If the exact algorithm is used, \fIf\fR must be
 positive.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 print version and exit.
@@ -198,8 +208,12 @@ name of \*(L"\-\*(R" stands for standard input.
 .IP "\fB\-\-input\-string\fR" 4
 .IX Item "--input-string"
 read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR.  By default this is a
+semicolon.
 .IP "\fB\-\-output\-file\fR" 4
 .IX Item "--output-file"
 write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/TransverseMercatorProj.1.html b/man/TransverseMercatorProj.1.html
index 10cf80f..c3868d4 100644
--- a/man/TransverseMercatorProj.1.html
+++ b/man/TransverseMercatorProj.1.html
@@ -46,8 +46,11 @@
 <h1><a name="synopsis">SYNOPSIS</a></h1>
 <p><strong>TransverseMercatorProj</strong> [ <strong>-s</strong> | <strong>-t</strong> ]
 [ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
 [ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
 [ <strong>--output-file</strong> <em>outfile</em> ]</p>
 <p>
 </p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>.  (Also, if <em>f</em> > 1, the flattening is set t
 <em>f</em> = 1/298.257223563.  If the exact algorithm is used, <em>f</em> must be
 positive.</p>
 </dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
 <dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
 
 <dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
 
 <dd>
 <p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>.  By default this is a
+semicolon.</p>
 </dd>
 <dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
 
diff --git a/man/TransverseMercatorProj.pod b/man/TransverseMercatorProj.pod
index a5ffba7..ca690a5 100644
--- a/man/TransverseMercatorProj.pod
+++ b/man/TransverseMercatorProj.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 7728035d533dbf4d09a47aa8554f234c84e70721 $
+=for comment $Id: 8a4775820ec5720d8a4f478595e88eb32f385475 $
 
 =head1 NAME
 
@@ -8,8 +8,11 @@ TransverseMercatorProj -- perform transverse Mercator projection
 
 B<TransverseMercatorProj> [ B<-s> | B<-t> ]
 [ B<-l> I<lon0> ] [ B<-k> I<k1> ] [ B<-r> ]
-[ B<-e> I<a> I<f> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
 [ B<--output-file> I<outfile> ]
 
 =head1 DESCRIPTION
@@ -65,6 +68,14 @@ is allowed for I<f>.  (Also, if I<f> E<gt> 1, the flattening is set to
 I<f> = 1/298.257223563.  If the exact algorithm is used, I<f> must be
 positive.
 
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//").  If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
 =item B<--version>
 
 print version and exit.
@@ -85,8 +96,13 @@ name of "-" stands for standard input.
 =item B<--input-string>
 
 read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>.  By default this is a
+semicolon.
 
 =item B<--output-file>
 
diff --git a/man/TransverseMercatorProj.usage b/man/TransverseMercatorProj.usage
index 79ffca5..50345f9 100644
--- a/man/TransverseMercatorProj.usage
+++ b/man/TransverseMercatorProj.usage
@@ -2,8 +2,9 @@ int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
 "    TransverseMercatorProj [ -s | -t ] [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a\n"
-"    f ] [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-"    instring ] [ --output-file outfile ]\n"
+"    f ] [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"    --input-file infile | --input-string instring ] [ --line-separator\n"
+"    linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    TransverseMercatorProj --help\n"
@@ -16,8 +17,9 @@ int usage(int retval, bool brief) {
 "\n"
 "SYNOPSIS\n"
 "       TransverseMercatorProj [ -s | -t ] [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a\n"
-"       f ] [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-"       instring ] [ --output-file outfile ]\n"
+"       f ] [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+"       --input-file infile | --input-string instring ] [ --line-separator\n"
+"       linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       Perform the transverse Mercator projections.  Convert geodetic\n"
@@ -56,6 +58,13 @@ int usage(int retval, bool brief) {
 "           1/298.257223563.  If the exact algorithm is used, f must be\n"
 "           positive.\n"
 "\n"
+"       --comment-delimiter\n"
+"           set the comment delimiter to commentdelim (e.g., \"#\" or \"//\").  If\n"
+"           set, the input lines will be scanned for this delimiter and, if\n"
+"           found, the delimiter and the rest of the line will be removed prior\n"
+"           to processing and subsequently appended to the output line\n"
+"           (separated by a space).\n"
+"\n"
 "       --version\n"
 "           print version and exit.\n"
 "\n"
@@ -70,8 +79,13 @@ int usage(int retval, bool brief) {
 "\n"
 "       --input-string\n"
 "           read input from the string instring instead of from standard input.\n"
-"           All the semicolons in instring are converted to newlines before the\n"
-"           reading begins.\n"
+"           All occurrences of the line separator character (default is a\n"
+"           semicolon) in instring are converted to newlines before the reading\n"
+"           begins.\n"
+"\n"
+"       --line-separator\n"
+"           set the line separator character to linesep.  By default this is a\n"
+"           semicolon.\n"
 "\n"
 "       --output-file\n"
 "           write output to the file outfile instead of to standard output; a\n"
diff --git a/matlab/CMakeLists.txt b/matlab/CMakeLists.txt
index 08589d0..f9aef61 100644
--- a/matlab/CMakeLists.txt
+++ b/matlab/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: e21a8f0e68ba8c9c30728f895f631a00d842bbf1 $
+# $Id: 8da4ccf20ab1de73f6ac4c2d60d6857229a076af $
 
 # Set up the matlab interface.  The .m files just contain the
 # documentation.  The .cpp files implement the interface.
@@ -8,56 +8,56 @@ file (GLOB MATLAB_INTERFACES *.cpp)
 install (FILES ${MATLAB_FILES} ${MATLAB_INTERFACES}
   DESTINATION libexec/GeographicLib/matlab)
 
-# If HAVE_MEX then compile the interface routines.  On non-Windows
+# If MEX then compile the interface routines.  On non-Windows
 # systems, an attempt is made to minimize the number of addition target
 # generated.  For some reason this does not work with Windows systems.
 # On Windows systems, need also to copy the shared library to where the
 # mex files live (in the build and install trees).
-if (HAVE_MEX)
+if (MEX)
   if (WIN32)
     include (InstallRequiredSystemLibraries)
     install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
       DESTINATION libexec/GeographicLib/matlab)
     add_custom_target (matlab-all)
-  else (WIN32)
+  else ()
     set (INTERFACE_LIST)
-  endif (WIN32)
+  endif ()
   foreach (INTERFACE ${MATLAB_INTERFACES})
     get_filename_component (TARGET ${INTERFACE} NAME_WE)
     set (TARGET_INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.${MEXEXT})
     if (WIN32)
       add_custom_target (matlab-${TARGET} DEPENDS ${TARGET_INTERFACE})
       add_custom_command (OUTPUT ${TARGET_INTERFACE}
-	COMMAND
-	  ${MEX}
-	    -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
-	    -L${PROJECT_BINARY_DIR}/src/Release -lGeographic
-	    ${INTERFACE}
-	COMMENT "Building matlab interface for ${TARGET}"
-	DEPENDS ${INTERFACE} Geographic)
+        COMMAND
+          ${MEX}
+            -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
+            -L${PROJECT_BINARY_DIR}/src/Release -lGeographic
+            ${INTERFACE}
+        COMMENT "Building matlab interface for ${TARGET}"
+        DEPENDS ${INTERFACE} Geographic)
       add_dependencies (matlab-${TARGET} Geographic)
       add_dependencies (matlab-all matlab-${TARGET})
       install (PROGRAMS ${TARGET_INTERFACE}
-	DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
-    else (WIN32)
+        DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
+    else ()
       set (INTERFACE_LIST ${INTERFACE_LIST} ${TARGET_INTERFACE})
       add_custom_command (OUTPUT ${TARGET_INTERFACE}
-	COMMAND
-	  ${MEX} --mex
-	    -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
-	    -L${PROJECT_BINARY_DIR}/src -lGeographic
-	    -Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib
-	    ${INTERFACE}
-	COMMENT "Building matlab interface for ${TARGET}"
-	DEPENDS ${INTERFACE} Geographic)
-    endif (WIN32)
-  endforeach (INTERFACE)
+        COMMAND
+          ${MEX} --mex
+            -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
+            -L${PROJECT_BINARY_DIR}/src -lGeographic
+            -Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib
+            ${INTERFACE}
+        COMMENT "Building matlab interface for ${TARGET}"
+        DEPENDS ${INTERFACE} Geographic)
+    endif ()
+  endforeach ()
   if (NOT WIN32)
     add_custom_target (matlab-all DEPENDS ${INTERFACE_LIST})
     add_dependencies (matlab-all Geographic)
     install (PROGRAMS ${INTERFACE_LIST}
       DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
-  endif (NOT WIN32)
+  endif ()
   if (WIN32 AND GEOGRAPHIC_SHARED_LIB)
     get_target_property (GEOGRAPHIC_LIBRARY_FILE Geographic LOCATION_RELEASE)
     add_custom_command (TARGET matlab-all POST_BUILD
@@ -66,5 +66,5 @@ if (HAVE_MEX)
       ${GEOGRAPHIC_LIBRARY_FILE} NAME)
     install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${GEOGRAPHIC_LIBRARY_NAME}
       DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
-  endif (WIN32 AND GEOGRAPHIC_SHARED_LIB)
-endif (HAVE_MEX)
+  endif ()
+endif ()
diff --git a/matlab/Makefile.am b/matlab/Makefile.am
index 2680969..fd89ba7 100644
--- a/matlab/Makefile.am
+++ b/matlab/Makefile.am
@@ -2,39 +2,39 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a8293d05276359f975210af0269924eddf6e800b $
+# $Id: 472c249909687bc3d74ec316a8a7d06e778fd826 $
 
 MATLAB_INTERFACE = \
-geodesicdirect.cpp \
-geodesicinverse.cpp \
-geodesicline.cpp \
-geoidheight.cpp \
-mgrsforward.cpp \
-mgrsreverse.cpp \
-utmupsforward.cpp \
-utmupsreverse.cpp \
-geocentricforward.cpp \
-geocentricreverse.cpp \
-localcartesianforward.cpp \
-localcartesianreverse.cpp \
-polygonarea.cpp
+$(srcdir)/geodesicdirect.cpp \
+$(srcdir)/geodesicinverse.cpp \
+$(srcdir)/geodesicline.cpp \
+$(srcdir)/geoidheight.cpp \
+$(srcdir)/mgrsforward.cpp \
+$(srcdir)/mgrsreverse.cpp \
+$(srcdir)/utmupsforward.cpp \
+$(srcdir)/utmupsreverse.cpp \
+$(srcdir)/geocentricforward.cpp \
+$(srcdir)/geocentricreverse.cpp \
+$(srcdir)/localcartesianforward.cpp \
+$(srcdir)/localcartesianreverse.cpp \
+$(srcdir)/polygonarea.cpp
 
 MATLAB_DOC = \
-geodesicdirect.m \
-geodesicinverse.m \
-geodesicline.m \
-geoidheight.m \
-mgrsforward.m \
-mgrsreverse.m \
-utmupsforward.m \
-utmupsreverse.m \
-geocentricforward.m \
-geocentricreverse.m \
-localcartesianforward.m \
-localcartesianreverse.m \
-polygonarea.m
-
-MATLAB_COMPILESCRIPT = geographiclibinterface.m
+$(srcdir)/geodesicdirect.m \
+$(srcdir)/geodesicinverse.m \
+$(srcdir)/geodesicline.m \
+$(srcdir)/geoidheight.m \
+$(srcdir)/mgrsforward.m \
+$(srcdir)/mgrsreverse.m \
+$(srcdir)/utmupsforward.m \
+$(srcdir)/utmupsreverse.m \
+$(srcdir)/geocentricforward.m \
+$(srcdir)/geocentricreverse.m \
+$(srcdir)/localcartesianforward.m \
+$(srcdir)/localcartesianreverse.m \
+$(srcdir)/polygonarea.m
+
+MATLAB_COMPILESCRIPT = $(srcdir)/geographiclibinterface.m
 
 MATLAB_ALL = $(MATLAB_INTERFACE) $(MATLAB_DOC) $(MATLAB_COMPILESCRIPT)
 
diff --git a/matlab/Makefile.in b/matlab/Makefile.in
index b3495b4..ee0a47a 100644
--- a/matlab/Makefile.in
+++ b/matlab/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a8293d05276359f975210af0269924eddf6e800b $
+# $Id: 472c249909687bc3d74ec316a8a7d06e778fd826 $
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -184,36 +184,36 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 MATLAB_INTERFACE = \
-geodesicdirect.cpp \
-geodesicinverse.cpp \
-geodesicline.cpp \
-geoidheight.cpp \
-mgrsforward.cpp \
-mgrsreverse.cpp \
-utmupsforward.cpp \
-utmupsreverse.cpp \
-geocentricforward.cpp \
-geocentricreverse.cpp \
-localcartesianforward.cpp \
-localcartesianreverse.cpp \
-polygonarea.cpp
+$(srcdir)/geodesicdirect.cpp \
+$(srcdir)/geodesicinverse.cpp \
+$(srcdir)/geodesicline.cpp \
+$(srcdir)/geoidheight.cpp \
+$(srcdir)/mgrsforward.cpp \
+$(srcdir)/mgrsreverse.cpp \
+$(srcdir)/utmupsforward.cpp \
+$(srcdir)/utmupsreverse.cpp \
+$(srcdir)/geocentricforward.cpp \
+$(srcdir)/geocentricreverse.cpp \
+$(srcdir)/localcartesianforward.cpp \
+$(srcdir)/localcartesianreverse.cpp \
+$(srcdir)/polygonarea.cpp
 
 MATLAB_DOC = \
-geodesicdirect.m \
-geodesicinverse.m \
-geodesicline.m \
-geoidheight.m \
-mgrsforward.m \
-mgrsreverse.m \
-utmupsforward.m \
-utmupsreverse.m \
-geocentricforward.m \
-geocentricreverse.m \
-localcartesianforward.m \
-localcartesianreverse.m \
-polygonarea.m
-
-MATLAB_COMPILESCRIPT = geographiclibinterface.m
+$(srcdir)/geodesicdirect.m \
+$(srcdir)/geodesicinverse.m \
+$(srcdir)/geodesicline.m \
+$(srcdir)/geoidheight.m \
+$(srcdir)/mgrsforward.m \
+$(srcdir)/mgrsreverse.m \
+$(srcdir)/utmupsforward.m \
+$(srcdir)/utmupsreverse.m \
+$(srcdir)/geocentricforward.m \
+$(srcdir)/geocentricreverse.m \
+$(srcdir)/localcartesianforward.m \
+$(srcdir)/localcartesianreverse.m \
+$(srcdir)/polygonarea.m
+
+MATLAB_COMPILESCRIPT = $(srcdir)/geographiclibinterface.m
 MATLAB_ALL = $(MATLAB_INTERFACE) $(MATLAB_DOC) $(MATLAB_COMPILESCRIPT)
 matlabdir = $(libexecdir)/GeographicLib/matlab
 EXTRA_DIST = Makefile.mk CMakeLists.txt $(MATLAB_ALL)
diff --git a/python/Makefile.am b/python/Makefile.am
index 367086d..43cec4b 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -2,18 +2,18 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 29cca1fbc4c0be28911bf0a2e6f8072b42cb68b9 $
+# $Id: 9b974cbcac490c66540bdd090786d14e12719d82 $
 
 PACKAGE=geographiclib
 PYTHON_FILES = \
-	$(PACKAGE)/__init__.py \
-	$(PACKAGE)/geomath.py \
-	$(PACKAGE)/constants.py \
-	$(PACKAGE)/accumulator.py \
-	$(PACKAGE)/geodesiccapability.py \
-	$(PACKAGE)/geodesic.py \
-	$(PACKAGE)/geodesicline.py \
-	$(PACKAGE)/polygonarea.py
+	$(srcdir)/$(PACKAGE)/__init__.py \
+	$(srcdir)/$(PACKAGE)/geomath.py \
+	$(srcdir)/$(PACKAGE)/constants.py \
+	$(srcdir)/$(PACKAGE)/accumulator.py \
+	$(srcdir)/$(PACKAGE)/geodesiccapability.py \
+	$(srcdir)/$(PACKAGE)/geodesic.py \
+	$(srcdir)/$(PACKAGE)/geodesicline.py \
+	$(srcdir)/$(PACKAGE)/polygonarea.py
 
 pythondir=$(libdir)/python/site-packages/$(PACKAGE)
 
diff --git a/python/Makefile.in b/python/Makefile.in
index 63df2d6..1f8a30d 100644
--- a/python/Makefile.in
+++ b/python/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 29cca1fbc4c0be28911bf0a2e6f8072b42cb68b9 $
+# $Id: 9b974cbcac490c66540bdd090786d14e12719d82 $
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -184,14 +184,14 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 PYTHON_FILES = \
-	$(PACKAGE)/__init__.py \
-	$(PACKAGE)/geomath.py \
-	$(PACKAGE)/constants.py \
-	$(PACKAGE)/accumulator.py \
-	$(PACKAGE)/geodesiccapability.py \
-	$(PACKAGE)/geodesic.py \
-	$(PACKAGE)/geodesicline.py \
-	$(PACKAGE)/polygonarea.py
+	$(srcdir)/$(PACKAGE)/__init__.py \
+	$(srcdir)/$(PACKAGE)/geomath.py \
+	$(srcdir)/$(PACKAGE)/constants.py \
+	$(srcdir)/$(PACKAGE)/accumulator.py \
+	$(srcdir)/$(PACKAGE)/geodesiccapability.py \
+	$(srcdir)/$(PACKAGE)/geodesic.py \
+	$(srcdir)/$(PACKAGE)/geodesicline.py \
+	$(srcdir)/$(PACKAGE)/polygonarea.py
 
 pythondir = $(libdir)/python/site-packages/$(PACKAGE)
 EXTRA_DIST = Makefile.mk $(PACKAGE)/CMakeLists.txt $(PYTHON_FILES) setup.py \
diff --git a/python/geographiclib/CMakeLists.txt b/python/geographiclib/CMakeLists.txt
index 6e30167..e223409 100644
--- a/python/geographiclib/CMakeLists.txt
+++ b/python/geographiclib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: a459320200767bbb246edbb873525ecacdc04246 $
+# $Id: 1cd13969a90a73112ab8c4bd44fc2194ff0af9ff $
 
 # Install the python files.
 # Probably full-time python users should install the python package from
@@ -14,4 +14,4 @@ install (FILES ${PYTHON_FILES}
 # conflicts.
 if (WIN32)
   install (FILES ../setup.py DESTINATION lib/python/site-packages)
-endif (WIN32)
+endif ()
diff --git a/python/geographiclib/accumulator.py b/python/geographiclib/accumulator.py
index 0abd2a7..7c85d88 100644
--- a/python/geographiclib/accumulator.py
+++ b/python/geographiclib/accumulator.py
@@ -10,7 +10,7 @@
 # under the MIT/X11 License.  For more information, see
 # http://geographiclib.sourceforge.net/
 #
-# $Id: 057b47320e60c424502f17f822629d5107c6f80d $
+# $Id: bbf905e5f404f97b10497ac32fa02b4203cb0c7d $
 ######################################################################
 
 class Accumulator(object):
@@ -42,7 +42,7 @@ class Accumulator(object):
   def Add(self, y):
     # Here's Shewchuk's solution...
     # hold exact sum as [s, t, u]
-    y, u  = Accumulator.sum(y, self._t) # Accumulate starting at
+    y, u = Accumulator.sum(y, self._t) # Accumulate starting at
     self._s, self._t = Accumulator.sum(y, self._s) # least significant end
     # Start is _s, _t decreasing and non-adjacent.  Sum is now (s + t + u)
     # exactly with s, t, u non-adjacent and in decreasing order (except
diff --git a/python/geographiclib/geodesic.py b/python/geographiclib/geodesic.py
index 12393eb..01c50d2 100644
--- a/python/geographiclib/geodesic.py
+++ b/python/geographiclib/geodesic.py
@@ -17,11 +17,11 @@
 #    Algorithms for geodesics, Sept. 2011,
 #    http://arxiv.org/abs/1109.4448
 #
-# Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed
-# under the MIT/X11 License.  For more information, see
+# Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and
+# licensed under the MIT/X11 License.  For more information, see
 # http://geographiclib.sourceforge.net/
 #
-# $Id: 0df741f8ec25f4cccd4f69e9e2bed2ee152d42d0 $
+# $Id: 95edebf1ac240458e1ba8a63577c589f330f849d $
 ######################################################################
 
 import math
@@ -102,7 +102,7 @@ class Geodesic(object):
   AREA          = 1<<14 | CAP_C4
   ALL           = OUT_ALL| CAP_ALL
 
-  def SinCosSeries(sinp, sinx, cosx,  c, n):
+  def SinCosSeries(sinp, sinx, cosx, c, n):
     # Evaluate
     # y = sinp ? sum(c[i] * sin( 2*i    * x), i, 1, n) :
     #            sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :
@@ -141,7 +141,7 @@ class Geodesic(object):
     z = 0.0625                  # 1/16
     y = abs(x)
     # The compiler mustn't "simplify" z - (z - y) to y
-    y =  z - (z - y) if y < z else y
+    y = z - (z - y) if y < z else y
     return -y if x < 0 else y
   AngRound = staticmethod(AngRound)
 
@@ -164,7 +164,7 @@ class Geodesic(object):
       r3 = r * r2
       # The discrimant of the quadratic equation for T3.  This is zero on
       # the evolute curve p^(1/3)+q^(1/3) = 1
-      disc =  S * (S + 2 * r3)
+      disc = S * (S + 2 * r3)
       u = r
       if (disc >= 0):
         T3 = S + r3
@@ -182,7 +182,7 @@ class Geodesic(object):
         # There are three possible cube roots.  We choose the root which
         # avoids cancellation.  Note that disc < 0 implies that r < 0.
         u += 2 * r * math.cos(ang / 3)
-      v = math.sqrt(Math.sq(u) + q)  # guaranteed positive
+      v = math.sqrt(Math.sq(u) + q) # guaranteed positive
       # Avoid loss of accuracy when u < 0.
       uv = q / (v - u) if u < 0 else u + v # u+v, guaranteed positive
       w = (uv - q) / (2 * v)               # positive?
@@ -275,7 +275,8 @@ class Geodesic(object):
                  (Math.atanh(math.sqrt(self._e2)) if self._e2 > 0 else
                   math.atan(math.sqrt(-self._e2))) /
                  math.sqrt(abs(self._e2))))/2
-    self._etol2 = Geodesic.tol2_ / max(0.1, math.sqrt(abs(self._e2)))
+    # The sig12 threshold for "really short"
+    self._etol2 = 10 * Geodesic.tol2_ / max(0.1, math.sqrt(abs(self._e2)))
     if not(Math.isfinite(self._a) and self._a > 0):
       raise ValueError("Major radius is not positive")
     if not(Math.isfinite(self._b) and self._b > 0):
@@ -411,7 +412,7 @@ class Geodesic(object):
     m12a = ((w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
             - self._f1 * csig1 * csig2 * J12)
     # Missing a factor of _b
-    s12b =  (1 + A1m1) * sig12 + AB1
+    s12b = (1 + A1m1) * sig12 + AB1
     if scalep:
       csig12 = csig1 * csig2 + ssig1 * ssig2
       J12 *= self._f1
@@ -443,13 +444,13 @@ class Geodesic(object):
     sbet12a += cbet2 * sbet1
 
     shortline = cbet12 >= 0 and sbet12 < 0.5 and lam12 <= math.pi / 6
-    omg12 =  (lam12 / math.sqrt(1 - self._e2 * Math.sq(cbet1)) if shortline
-              else lam12)
+    omg12 = (lam12 if not shortline else
+             lam12 / math.sqrt(1 - self._e2 * Math.sq((cbet1 + cbet2) / 2)))
     somg12 = math.sin(omg12); comg12 = math.cos(omg12)
 
     salp1 = cbet2 * somg12
     calp1 = (
-      sbet12 + cbet2 * sbet1 * Math.sq(somg12) / (1 + comg12)  if comg12 >= 0
+      sbet12 + cbet2 * sbet1 * Math.sq(somg12) / (1 + comg12) if comg12 >= 0
       else sbet12a - cbet2 * sbet1 * Math.sq(somg12) / (1 - comg12))
 
     ssig12 = math.hypot(salp1, calp1)
@@ -497,12 +498,12 @@ class Geodesic(object):
         lamscale = betscale / cbet1
         y = (lam12 - math.pi) / lamscale
 
-      if y > -Geodesic.tol1_ and x >  -1 - Geodesic.xthresh_:
+      if y > -Geodesic.tol1_ and x > -1 - Geodesic.xthresh_:
         # strip near cut
         if self._f >= 0:
           salp1 = min(1.0, -x); calp1 = - math.sqrt(1 - Math.sq(salp1))
         else:
-          calp1 = max((0.0 if x > -Geodesic.tol1_ else -1.0),  x)
+          calp1 = max((0.0 if x > -Geodesic.tol1_ else -1.0), x)
           salp1 = math.sqrt(1 - Math.sq(calp1))
       else:
         # Estimate alp1, by solving the astroid problem.
@@ -764,14 +765,14 @@ class Geodesic(object):
 
       if sig12 >= 0:
         # Short lines (InverseStart sets salp2, calp2)
-        w1 = math.sqrt(1 - self._e2 * Math.sq(cbet1))
-        s12x = sig12 * self._a * w1
-        m12x = (Math.sq(w1) * self._a / self._f1 *
-                math.sin(sig12 * self._f1 / w1))
+        wm = math.sqrt(1 - self._e2 * Math.sq((cbet1 + cbet2) / 2))
+        s12x = sig12 * self._a * wm
+        m12x = (Math.sq(wm) * self._a / self._f1 *
+                math.sin(sig12 * self._f1 / wm))
         if outmask & Geodesic.GEODESICSCALE:
-          M12 = M21 = math.cos(sig12 * self._f1 / w1)
+          M12 = M21 = math.cos(sig12 * self._f1 / wm)
         a12 = sig12 / Math.degree
-        omg12 = lam12 / w1
+        omg12 = lam12 / wm
       else:
 
         # Newton's method
diff --git a/python/geographiclib/geodesicline.py b/python/geographiclib/geodesicline.py
index 28d59e3..15e1769 100644
--- a/python/geographiclib/geodesicline.py
+++ b/python/geographiclib/geodesicline.py
@@ -21,7 +21,7 @@
 # under the MIT/X11 License.  For more information, see
 # http://geographiclib.sourceforge.net/
 #
-# $Id: 3ce44a02ffcfde1dcd1f660c8fcfa11d024bb4c5 $
+# $Id: d5d0b60d8d88eaea0cdc504a6b73fc6fb6049f0c $
 ######################################################################
 
 import math
@@ -102,7 +102,7 @@ class GeodesicLine(object):
       Geodesic.C1pf(eps, self._C1pa)
 
     if self._caps & Geodesic.CAP_C2:
-      self._A2m1 =  Geodesic.A2m1f(eps)
+      self._A2m1 = Geodesic.A2m1f(eps)
       self._C2a = range(Geodesic.nC2_ + 1)
       Geodesic.C2f(eps, self._C2a)
       self._B21 = Geodesic.SinCosSeries(
@@ -172,7 +172,7 @@ class GeodesicLine(object):
       # I.e., salp0 = 0, csig2 = 0.  Break the degeneracy in this case
       cbet2 = csig2 = Geodesic.tiny_
     # tan(omg2) = sin(alp0) * tan(sig2)
-    somg2 = self._salp0 * ssig2; comg2 = csig2  # No need to normalize
+    somg2 = self._salp0 * ssig2; comg2 = csig2 # No need to normalize
     # tan(alp0) = cos(sig2)*tan(alp2)
     salp2 = self._salp0; calp2 = self._calp0 * csig2 # No need to normalize
     # omg12 = omg2 - omg1
@@ -215,7 +215,7 @@ class GeodesicLine(object):
                           w1 * (self._ssig1 * csig2))
                   - self._csig1 * csig2 * J12)
       if outmask & Geodesic.GEODESICSCALE:
-        M12 = csig12 + (self._k2 * (ssig2sq - ssig1sq) *  ssig2 / (w1 + w2)
+        M12 = csig12 + (self._k2 * (ssig2sq - ssig1sq) * ssig2 / (w1 + w2)
                         - csig2 * J12) * self._ssig1 / w1
         M21 = csig12 - (self._k2 * (ssig2sq - ssig1sq) * self._ssig1 / (w1 + w2)
                         - self._csig1 * J12) * ssig2 / w2
diff --git a/python/geographiclib/polygonarea.py b/python/geographiclib/polygonarea.py
index a0b467f..9692908 100644
--- a/python/geographiclib/polygonarea.py
+++ b/python/geographiclib/polygonarea.py
@@ -10,7 +10,7 @@
 # under the MIT/X11 License.  For more information, see
 # http://geographiclib.sourceforge.net/
 #
-# $Id: 994cf91b693942fc0efc2a9b1233d020015a7041 $
+# $Id: 4a2cf9d0cb7eeb7c9c3a2248f44e84a04e4e0b35 $
 ######################################################################
 
 import math
@@ -149,7 +149,7 @@ class PolygonArea(object):
     return num, perimeter, area
 
   def Area(earth, points, polyline):
-    poly =  PolygonArea(earth, polyline)
+    poly = PolygonArea(earth, polyline)
     for p in points:
       poly.AddPoint(p['lat'], p['lon'])
     return poly.Compute(False, True)
diff --git a/python/setup.py b/python/setup.py
index 9f44b6c..ba54dfd 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -4,19 +4,20 @@
 #
 #   python setup.py install
 #
-# in this directory.  To upload the latest version to the python reposity run
+# in this directory.  To upload the latest version to the python
+# repository run
 #
 #   python setup.py sdist --formats gztar,zip upload
 #
 # The initial version of this file was provided by
 # Andrew MacIntyre <Andrew.MacIntyre at acma.gov.au>.
 #
-# $Id: 12bd54636c048825af9c9bfa33adc2eec4330a31 $
+# $Id: e5d240fa0c0790fdbbc0c3ff654325abf8f9ec71 $
 
 from distutils.core import setup
 
 setup(name="geographiclib",
-      version="1.16",
+      version="1.20",
       description=
         "A translation of the GeographicLib::Geodesic class to Python",
       author="Charles Karney",
diff --git a/src/AzimuthalEquidistant.cpp b/src/AzimuthalEquidistant.cpp
index 8832d97..1fba6bf 100644
--- a/src/AzimuthalEquidistant.cpp
+++ b/src/AzimuthalEquidistant.cpp
@@ -2,15 +2,15 @@
  * \file AzimuthalEquidistant.cpp
  * \brief Implementation for GeographicLib::AzimuthalEquidistant class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/AzimuthalEquidistant.hpp>
 
 #define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP \
-  "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"
+  "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"
 
 RCSID_DECL(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP)
 RCSID_DECL(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bfc4594..32aeb9d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,29 +1,31 @@
-# $Id: 81e6e3a15baf50e87a39f20a56aed38865987dc2 $
+# $Id: db0813d9df0e4b911eb0282bbf2e5bebca5c6563 $
 
 # Build the library...
 
 # Include all the .cpp files in the library.
 file (GLOB SOURCES *.cpp)
+file (GLOB HEADERS
+  ${PROJECT_BINARY_DIR}/include/GeographicLib/Config.h
+  ../include/GeographicLib/*.hpp)
 
 # Define the library and specify whether it is shared or not.
 if (GEOGRAPHIC_SHARED_LIB)
-  add_library (Geographic SHARED ${SOURCES})
-else (GEOGRAPHIC_SHARED_LIB)
-  add_library (Geographic STATIC ${SOURCES})
-endif (GEOGRAPHIC_SHARED_LIB)
+  add_library (Geographic SHARED ${SOURCES} ${HEADERS})
+else ()
+  add_library (Geographic STATIC ${SOURCES} ${HEADERS})
+endif ()
 
 # Set the version number on the library
 if (WIN32)
   set_target_properties (Geographic PROPERTIES VERSION "${LIBVERSIONFULL}" )
-else (WIN32)
+else ()
   set_target_properties (Geographic PROPERTIES
     VERSION "${LIBVERSIONFULL}" SOVERSION "${LIBVERSION}" )
-endif (WIN32)
+endif ()
 
-# Specify where the library is installed, adding it to the export
-# GeographicLibDepends.
+# Specify where the library is installed, adding it to the export depends
 install (TARGETS Geographic
-  EXPORT GeographicLibDepends
+  EXPORT depends
   RUNTIME DESTINATION bin
   LIBRARY DESTINATION lib
   ARCHIVE DESTINATION lib)
diff --git a/src/CassiniSoldner.cpp b/src/CassiniSoldner.cpp
index 74e5dbd..e0cf058 100644
--- a/src/CassiniSoldner.cpp
+++ b/src/CassiniSoldner.cpp
@@ -2,15 +2,15 @@
  * \file CassiniSoldner.cpp
  * \brief Implementation for GeographicLib::CassiniSoldner class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/CassiniSoldner.hpp>
 
 #define GEOGRAPHICLIB_CASSINISOLDNER_CPP \
-  "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"
+  "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"
 
 RCSID_DECL(GEOGRAPHICLIB_CASSINISOLDNER_CPP)
 RCSID_DECL(GEOGRAPHICLIB_CASSINISOLDNER_HPP)
diff --git a/src/DMS.cpp b/src/DMS.cpp
index 7752cfa..84d07f0 100644
--- a/src/DMS.cpp
+++ b/src/DMS.cpp
@@ -2,8 +2,8 @@
  * \file DMS.cpp
  * \brief Implementation for GeographicLib::DMS class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -11,7 +11,7 @@
 #include <algorithm>
 #include <GeographicLib/Utility.hpp>
 
-#define GEOGRAPHICLIB_DMS_CPP "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"
+#define GEOGRAPHICLIB_DMS_CPP "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"
 
 RCSID_DECL(GEOGRAPHICLIB_DMS_CPP)
 RCSID_DECL(GEOGRAPHICLIB_DMS_HPP)
@@ -258,7 +258,8 @@ namespace GeographicLib {
     return azi;
   }
 
-  string DMS::Encode(real angle, component trailing, unsigned prec, flag ind) {
+  string DMS::Encode(real angle, component trailing, unsigned prec, flag ind,
+		     char dmssep) {
     // Assume check on range of input angle has been made by calling
     // routine (which might be able to offer a better diagnostic).
     if (!Math::isfinite(angle))
@@ -297,7 +298,7 @@ namespace GeographicLib {
     }
     pieces[0] += idegree;
     ostringstream s;
-    s << fixed  << setfill('0');
+    s << fixed << setfill('0');
     if (ind == NONE && sign < 0)
       s << '-';
     switch (trailing) {
@@ -310,16 +311,20 @@ namespace GeographicLib {
     default:
       if (ind != NONE)
         s << setw(1 + min(int(ind), 2));
-      s << setprecision(0) << pieces[0] << char(tolower(dmsindicators_[0]));
+      s << setprecision(0) << pieces[0]
+	<< (dmssep ? dmssep : char(tolower(dmsindicators_[0])));
       switch (trailing) {
       case MINUTE:
-        s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
-          << pieces[1] <<  char(tolower(dmsindicators_[1]));
+        s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[1];
+	if (!dmssep)
+	  s << char(tolower(dmsindicators_[1]));
         break;
       case SECOND:
-        s << setw(2) << pieces[1] <<  char(tolower(dmsindicators_[1]))
-          << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
-          << pieces[2] <<  char(tolower(dmsindicators_[2]));
+        s << setw(2)
+	  << pieces[1] << (dmssep ? dmssep : char(tolower(dmsindicators_[1])))
+          << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[2];
+	if (!dmssep)
+	  s << char(tolower(dmsindicators_[2]));
         break;
       default:
         break;
@@ -330,4 +335,7 @@ namespace GeographicLib {
     return s.str();
   }
 
+  string DMS::Encode(real angle, component trailing, unsigned prec, flag ind)
+  { return Encode(angle, trailing, prec, ind, char(0)); }
+
 } // namespace GeographicLib
diff --git a/src/EllipticFunction.cpp b/src/EllipticFunction.cpp
index 1f7ebaf..98396ad 100644
--- a/src/EllipticFunction.cpp
+++ b/src/EllipticFunction.cpp
@@ -2,15 +2,15 @@
  * \file EllipticFunction.cpp
  * \brief Implementation for GeographicLib::EllipticFunction class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/EllipticFunction.hpp>
 
 #define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP \
-  "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"
+  "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"
 
 RCSID_DECL(GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP)
 RCSID_DECL(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)
@@ -119,7 +119,7 @@ namespace GeographicLib {
       s += mul * t * t;
     }
     x0 = (x0 + y0)/2;
-    return  (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
+    return (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
   }
 
   EllipticFunction::EllipticFunction(real m) throw()
diff --git a/src/GeoCoords.cpp b/src/GeoCoords.cpp
index e754d6e..9e21bab 100644
--- a/src/GeoCoords.cpp
+++ b/src/GeoCoords.cpp
@@ -2,8 +2,8 @@
  * \file GeoCoords.cpp
  * \brief Implementation for GeographicLib::GeoCoords class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -15,7 +15,7 @@
 #include <GeographicLib/DMS.hpp>
 
 #define GEOGRAPHICLIB_GEOCOORDS_CPP \
-  "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"
+  "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"
 
 RCSID_DECL(GEOGRAPHICLIB_GEOCOORDS_CPP)
 RCSID_DECL(GEOGRAPHICLIB_GEOCOORDS_HPP)
@@ -85,14 +85,18 @@ namespace GeographicLib {
     return os.str();
   }
 
-  string GeoCoords::DMSRepresentation(int prec, bool swaplatlong) const {
+  string GeoCoords::DMSRepresentation(int prec, bool swaplatlong,
+				      char dmssep) const {
     prec = max(0, min(10, prec) + 5);
     return DMS::Encode(swaplatlong ? _long : _lat, unsigned(prec),
-                       swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE) +
+                       swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE, dmssep) +
       " " + DMS::Encode(swaplatlong ? _lat : _long, unsigned(prec),
-                        swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE);
+                        swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE, dmssep);
   }
 
+  string GeoCoords::DMSRepresentation(int prec, bool swaplatlong) const
+  { return DMSRepresentation(prec, swaplatlong, char(0)); }
+
   string GeoCoords::MGRSRepresentation(int prec) const {
     // Max precision is um
     prec = max(0, min(6, prec) + 5);
diff --git a/src/Geocentric.cpp b/src/Geocentric.cpp
index f7c398b..eb59f46 100644
--- a/src/Geocentric.cpp
+++ b/src/Geocentric.cpp
@@ -2,15 +2,15 @@
  * \file Geocentric.cpp
  * \brief Implementation for GeographicLib::Geocentric class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/Geocentric.hpp>
 
 #define GEOGRAPHICLIB_GEOCENTRIC_CPP \
-  "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"
+  "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"
 
 RCSID_DECL(GEOGRAPHICLIB_GEOCENTRIC_CPP)
 RCSID_DECL(GEOGRAPHICLIB_GEOCENTRIC_HPP)
@@ -102,7 +102,7 @@ namespace GeographicLib {
           S = _e4a * p * q / 4, // S = r^3 * s
           r2 = Math::sq(r),
           r3 = r * r2,
-          disc =  S * (2 * r3 + S);
+          disc = S * (2 * r3 + S);
         real u = r;
         if (disc >= 0) {
           real T3 = S + r3;
diff --git a/src/Geodesic.cpp b/src/Geodesic.cpp
index 65b9dec..6807788 100644
--- a/src/Geodesic.cpp
+++ b/src/Geodesic.cpp
@@ -2,8 +2,8 @@
  * \file Geodesic.cpp
  * \brief Implementation for GeographicLib::Geodesic class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011, 2012) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * This is a reformulation of the geodesic problem.  The notation is as
@@ -30,7 +30,7 @@
 #include <GeographicLib/GeodesicLine.hpp>
 
 #define GEOGRAPHICLIB_GEODESIC_CPP \
-  "$Id: ff2511fd7f024c20973838884776d929597eb044 $"
+  "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"
 
 RCSID_DECL(GEOGRAPHICLIB_GEODESIC_CPP)
 RCSID_DECL(GEOGRAPHICLIB_GEODESIC_HPP)
@@ -63,7 +63,8 @@ namespace GeographicLib {
            (_e2 == 0 ? 1 :
             (_e2 > 0 ? Math::atanh(sqrt(_e2)) : atan(sqrt(-_e2))) /
             sqrt(abs(_e2))))/2) // authalic radius squared
-    , _etol2(tol2_ / max(real(0.1), sqrt(abs(_e2))))
+      // The sig12 threshold for "really short"
+    , _etol2(10 * tol2_ / max(real(0.1), sqrt(abs(_e2))))
   {
     if (!(Math::isfinite(_a) && _a > 0))
       throw GeographicErr("Major radius is not positive");
@@ -267,13 +268,13 @@ namespace GeographicLib {
 
       if (sig12 >= 0) {
         // Short lines (InverseStart sets salp2, calp2)
-        real w1 = sqrt(1 - _e2 * Math::sq(cbet1));
-        s12x = sig12 * _a * w1;
-        m12x = Math::sq(w1) * _a / _f1 * sin(sig12 * _f1 / w1);
+        real wm = sqrt(1 - _e2 * Math::sq((cbet1 + cbet2) / 2));
+        s12x = sig12 * _a * wm;
+        m12x = Math::sq(wm) * _a / _f1 * sin(sig12 * _f1 / wm);
         if (outmask & GEODESICSCALE)
-          M12 = M21 = cos(sig12 * _f1 / w1);
+          M12 = M21 = cos(sig12 * _f1 / wm);
         a12 = sig12 / Math::degree<real>();
-        omg12 = lam12 / w1;
+        omg12 = lam12 / wm;
       } else {
 
         // Newton's method
@@ -453,7 +454,7 @@ namespace GeographicLib {
     m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
       - _f1 * csig1 * csig2 * J12;
     // Missing a factor of _b
-    s12b =  (1 + A1m1) * sig12 + AB1;
+    s12b = (1 + A1m1) * sig12 + AB1;
     if (scalep) {
       real csig12 = csig1 * csig2 + ssig1 * ssig2;
       J12 *= _f1;
@@ -481,7 +482,7 @@ namespace GeographicLib {
         r3 = r * r2,
         // The discrimant of the quadratic equation for T3.  This is zero on
         // the evolute curve p^(1/3)+q^(1/3) = 1
-        disc =  S * (S + 2 * r3);
+        disc = S * (S + 2 * r3);
       real u = r;
       if (disc >= 0) {
         real T3 = S + r3;
@@ -532,13 +533,14 @@ namespace GeographicLib {
       // bet12 = bet2 - bet1 in [0, pi); bet12a = bet2 + bet1 in (-pi, 0]
       sbet12 = sbet2 * cbet1 - cbet2 * sbet1,
       cbet12 = cbet2 * cbet1 + sbet2 * sbet1;
-#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
+#if defined(__GNUC__) && __GNUC__ == 4 && \
+  (__GNUC_MINOR__ < 6 || defined(__MINGW32__))
     // Volatile declaration needed to fix inverse cases
     // 88.202499451857 0 -88.202499451857 179.981022032992859592
     // 89.262080389218 0 -89.262080389218 179.992207982775375662
     // 89.333123580033 0 -89.333123580032997687 179.99295812360148422
     // which otherwise fail with g++ 4.4.4 x86 -O3 (Linux)
-    // and g++ 4.4.0 (mingw).
+    // and g++ 4.4.0 (mingw) and g++ 4.6.1 (tdm mingw).
     real sbet12a;
     {
       volatile real xx1 = sbet2 * cbet1;
@@ -551,7 +553,8 @@ namespace GeographicLib {
     bool shortline = cbet12 >= 0 && sbet12 < real(0.5) &&
       lam12 <= Math::pi<real>() / 6;
     real
-      omg12 = shortline ? lam12 / sqrt(1 - _e2 * Math::sq(cbet1)) : lam12,
+      omg12 = (!shortline ? lam12 :
+               lam12 / sqrt(1 - _e2 * Math::sq((cbet1 + cbet2) / 2))),
       somg12 = sin(omg12), comg12 = cos(omg12);
 
     salp1 = cbet2 * somg12;
@@ -611,12 +614,12 @@ namespace GeographicLib {
         y = (lam12 - Math::pi<real>()) / lamscale;
       }
 
-      if (y > -tol1_ && x >  -1 - xthresh_) {
+      if (y > -tol1_ && x > -1 - xthresh_) {
         // strip near cut
         if (_f >= 0) {
           salp1 = min(real(1), -real(x)); calp1 = - sqrt(1 - Math::sq(salp1));
         } else {
-          calp1 = max(real(x > -tol1_ ? 0 : -1),  real(x));
+          calp1 = max(real(x > -tol1_ ? 0 : -1), real(x));
           salp1 = sqrt(1 - Math::sq(calp1));
         }
       } else {
@@ -743,7 +746,7 @@ namespace GeographicLib {
         real dummy;
         Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
                 cbet1, cbet2, dummy, dlam12, dummy,
-                false, dummy, dummy,  C1a, C2a);
+                false, dummy, dummy, C1a, C2a);
         dlam12 /= calp2 * cbet2;
       }
     }
diff --git a/src/GeodesicLine.cpp b/src/GeodesicLine.cpp
index dadd8e8..fb7d235 100644
--- a/src/GeodesicLine.cpp
+++ b/src/GeodesicLine.cpp
@@ -2,8 +2,8 @@
  * \file GeodesicLine.cpp
  * \brief Implementation for GeographicLib::GeodesicLine class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * This is a reformulation of the geodesic problem.  The notation is as
@@ -29,7 +29,7 @@
 #include <GeographicLib/GeodesicLine.hpp>
 
 #define GEOGRAPHICLIB_GEODESICLINE_CPP \
-  "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"
+  "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"
 
 RCSID_DECL(GEOGRAPHICLIB_GEODESICLINE_CPP)
 RCSID_DECL(GEOGRAPHICLIB_GEODESICLINE_HPP)
diff --git a/src/Geographic.pro b/src/Geographic.pro
index 7946760..6136a7f 100644
--- a/src/Geographic.pro
+++ b/src/Geographic.pro
@@ -1,55 +1,73 @@
-# $Id: 746b385d2d9222946a8fc9050d09c839ec06b577 $
+# $Id: fb1395afc191fe67ced4b6e7227b5afaa2559a1c $
 
-VERSION = 9.0.1
+VERSION = 9.2.4
 
 TEMPLATE = lib
 
 INCLUDEPATH = ../include
 INCLUDEDIR = $$INCLUDEPATH/GeographicLib
 
+SOURCES += AlbersEqualArea.cpp
+SOURCES += AzimuthalEquidistant.cpp
+SOURCES += CassiniSoldner.cpp
+SOURCES += CircularEngine.cpp
 SOURCES += DMS.cpp
 SOURCES += EllipticFunction.cpp
 SOURCES += GeoCoords.cpp
-SOURCES += MGRS.cpp
-SOURCES += PolarStereographic.cpp
-SOURCES += TransverseMercator.cpp
-SOURCES += TransverseMercatorExact.cpp
-SOURCES += UTMUPS.cpp
 SOURCES += Geocentric.cpp
-SOURCES += LocalCartesian.cpp
 SOURCES += Geodesic.cpp
 SOURCES += GeodesicLine.cpp
-SOURCES += PolygonArea.cpp
-SOURCES += AzimuthalEquidistant.cpp
-SOURCES += CassiniSoldner.cpp
 SOURCES += Geoid.cpp
-SOURCES += LambertConformalConic.cpp
 SOURCES += Gnomonic.cpp
+SOURCES += GravityCircle.cpp
+SOURCES += GravityModel.cpp
+SOURCES += LambertConformalConic.cpp
+SOURCES += LocalCartesian.cpp
+SOURCES += MGRS.cpp
+SOURCES += MagneticCircle.cpp
+SOURCES += MagneticModel.cpp
+SOURCES += NormalGravity.cpp
 SOURCES += OSGB.cpp
-SOURCES += AlbersEqualArea.cpp
+SOURCES += PolarStereographic.cpp
+SOURCES += PolygonArea.cpp
+SOURCES += SphericalEngine.cpp
+SOURCES += TransverseMercator.cpp
+SOURCES += TransverseMercatorExact.cpp
+SOURCES += UTMUPS.cpp
+SOURCES += Utility.cpp
 
+HEADERS += $$INCLUDEDIR/Accumulator.hpp
+HEADERS += $$INCLUDEDIR/AlbersEqualArea.hpp
+HEADERS += $$INCLUDEDIR/AzimuthalEquidistant.hpp
+HEADERS += $$INCLUDEDIR/CassiniSoldner.hpp
+HEADERS += $$INCLUDEDIR/CircularEngine.hpp
+HEADERS += $$INCLUDEDIR/Constants.hpp
 HEADERS += $$INCLUDEDIR/DMS.hpp
 HEADERS += $$INCLUDEDIR/EllipticFunction.hpp
 HEADERS += $$INCLUDEDIR/GeoCoords.hpp
-HEADERS += $$INCLUDEDIR/MGRS.hpp
-HEADERS += $$INCLUDEDIR/PolarStereographic.hpp
-HEADERS += $$INCLUDEDIR/TransverseMercator.hpp
-HEADERS += $$INCLUDEDIR/TransverseMercatorExact.hpp
-HEADERS += $$INCLUDEDIR/UTMUPS.hpp
 HEADERS += $$INCLUDEDIR/Geocentric.hpp
-HEADERS += $$INCLUDEDIR/LocalCartesian.hpp
 HEADERS += $$INCLUDEDIR/Geodesic.hpp
 HEADERS += $$INCLUDEDIR/GeodesicLine.hpp
-HEADERS += $$INCLUDEDIR/PolygonArea.hpp
-HEADERS += $$INCLUDEDIR/AzimuthalEquidistant.hpp
-HEADERS += $$INCLUDEDIR/CassiniSoldner.hpp
 HEADERS += $$INCLUDEDIR/Geoid.hpp
-HEADERS += $$INCLUDEDIR/LambertConformalConic.hpp
 HEADERS += $$INCLUDEDIR/Gnomonic.hpp
+HEADERS += $$INCLUDEDIR/GravityCircle.hpp
+HEADERS += $$INCLUDEDIR/GravityModel.hpp
+HEADERS += $$INCLUDEDIR/LambertConformalConic.hpp
+HEADERS += $$INCLUDEDIR/LocalCartesian.hpp
+HEADERS += $$INCLUDEDIR/MGRS.hpp
+HEADERS += $$INCLUDEDIR/MagneticCircle.hpp
+HEADERS += $$INCLUDEDIR/MagneticModel.hpp
+HEADERS += $$INCLUDEDIR/Math.hpp
+HEADERS += $$INCLUDEDIR/NormalGravity.hpp
 HEADERS += $$INCLUDEDIR/OSGB.hpp
-HEADERS += $$INCLUDEDIR/AlbersEqualArea.hpp
-
+HEADERS += $$INCLUDEDIR/PolarStereographic.hpp
+HEADERS += $$INCLUDEDIR/PolygonArea.hpp
+HEADERS += $$INCLUDEDIR/SphericalEngine.hpp
+HEADERS += $$INCLUDEDIR/SphericalHarmonic.hpp
+HEADERS += $$INCLUDEDIR/SphericalHarmonic1.hpp
+HEADERS += $$INCLUDEDIR/SphericalHarmonic2.hpp
+HEADERS += $$INCLUDEDIR/TransverseMercator.hpp
+HEADERS += $$INCLUDEDIR/TransverseMercatorExact.hpp
+HEADERS += $$INCLUDEDIR/UTMUPS.hpp
+HEADERS += $$INCLUDEDIR/Utility.hpp
 HEADERS += $$INCLUDEDIR/Config.h
-HEADERS += $$INCLUDEDIR/Constants.hpp
-HEADERS += $$INCLUDEDIR/Math.hpp
-HEADERS += $$INCLUDEDIR/Accumulator.hpp
diff --git a/src/Geoid.cpp b/src/Geoid.cpp
index 5ef0f2e..7555dc4 100644
--- a/src/Geoid.cpp
+++ b/src/Geoid.cpp
@@ -2,8 +2,8 @@
  * \file Geoid.cpp
  * \brief Implementation for GeographicLib::Geoid class
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -11,9 +11,10 @@
 #include <sstream>
 #include <cstdlib>
 #include <algorithm>
+#include <GeographicLib/Utility.hpp>
 
 #define GEOGRAPHICLIB_GEOID_CPP \
-  "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"
+  "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"
 
 RCSID_DECL(GEOGRAPHICLIB_GEOID_CPP)
 RCSID_DECL(GEOGRAPHICLIB_GEOID_HPP)
@@ -215,9 +216,10 @@ namespace GeographicLib {
     , _eps( sqrt(numeric_limits<real>::epsilon()) )
     , _threadsafe(false)        // Set after cache is read
   {
+    STATIC_ASSERT(sizeof(pixel_t) == pixel_size_, "pixel_t has the wrong size");
     if (_dir.empty())
       _dir = DefaultGeoidPath();
-    _filename = _dir + "/" + _name + ".pgm";
+    _filename = _dir + "/" + _name + (pixel_size_ != 4 ? ".pgm" : ".pgm4");
     _file.open(_filename.c_str(), ios::binary);
     if (!(_file.good()))
       throw GeographicErr("File not readable " + _filename);
@@ -266,8 +268,8 @@ namespace GeographicLib {
       unsigned maxval;
       if (!(_file >> maxval))
         throw GeographicErr("Error reading maxval " + _filename);
-      if (maxval != 0xffffu)
-        throw GeographicErr("Maxval not equal to 2^16-1 " + _filename);
+      if (maxval != pixel_max_)
+        throw GeographicErr("Incorrect value of maxval " + _filename);
       // Add 1 for whitespace after maxval
       _datastart = (unsigned long long)(_file.tellg()) + 1ULL;
       _swidth = (unsigned long long)(_width);
@@ -289,7 +291,7 @@ namespace GeographicLib {
       throw GeographicErr("Raster height is even " + _filename);
     _file.seekg(0, ios::end);
     if (!_file.good() ||
-        _datastart + 2ULL * _swidth * (unsigned long long)(_height) !=
+        _datastart + pixel_size_ * _swidth * (unsigned long long)(_height) !=
         (unsigned long long)(_file.tellg()))
       // Possibly this test should be "<" because the file contains, e.g., a
       // second image.  However, for now we are more strict.
@@ -408,7 +410,7 @@ namespace GeographicLib {
         lat = min(lat,  90 - 1/(100 * _rlatres));
         lat = max(lat, -90 + 1/(100 * _rlatres));
         fy = (90 - lat) * _rlatres;
-        fy -=  int(fy);
+        fy -= int(fy);
         real
           phi = lat * _degree,
           cosphi = cos(phi),
@@ -436,7 +438,7 @@ namespace GeographicLib {
       try {
         _data.clear();
         // Use swap to release memory back to system
-        vector< vector<unsigned short> >().swap(_data);
+        vector< vector<pixel_t> >().swap(_data);
       }
       catch (const exception&) {
       }
@@ -486,7 +488,7 @@ namespace GeographicLib {
     _yoffset = in;
 
     try {
-      _data.resize(_ysize, vector<unsigned short>(_xsize));
+      _data.resize(_ysize, vector<pixel_t>(_xsize));
       for (int iy = min(oysize, _ysize); iy--;)
         _data[iy].resize(_xsize);
     }
@@ -496,10 +498,10 @@ namespace GeographicLib {
     }
 
     try {
-      vector<char> buf(2 * _xsize);
       for (int iy = in; iy <= is; ++iy) {
         int iy1 = iy, iw1 = iw;
         if (iy < 0 || iy >= _height) {
+          // Allow points "beyond" the poles to support interpolation
           iy1 = iy1 < 0 ? -iy1 : 2 * (_height - 1) - iy1;
           iw1 += _width/2;
           if (iw1 >= _width)
@@ -507,16 +509,14 @@ namespace GeographicLib {
         }
         int xs1 = min(_width - iw1, _xsize);
         filepos(iw1, iy1);
-        _file.read(&(buf[0]), 2 * xs1);
+        Utility::readarray<pixel_t, pixel_t, true>
+          (_file, &(_data[iy - in][0]), xs1);
         if (xs1 < _xsize) {
           // Wrap around longitude = 0
           filepos(0, iy1);
-          _file.read(&(buf[2 * xs1]), 2 * (_xsize - xs1));
+          Utility::readarray<pixel_t, pixel_t, true>
+            (_file, &(_data[iy - in][xs1]), _xsize - xs1);
         }
-        for (int ix = 0; ix < _xsize; ++ix)
-          _data[iy - in][ix] =
-            (unsigned short)((unsigned char)buf[2 * ix] * 256u +
-                             (unsigned char)buf[2 * ix + 1]);
       }
       _cache = true;
     }
diff --git a/src/GravityModel.cpp b/src/GravityModel.cpp
index 1961896..d90130c 100644
--- a/src/GravityModel.cpp
+++ b/src/GravityModel.cpp
@@ -2,8 +2,8 @@
  * \file GravityModel.cpp
  * \brief Implementation for GeographicLib::GravityModel class
  *
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under
- * the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -13,7 +13,7 @@
 #include <GeographicLib/GravityCircle.hpp>
 #include <GeographicLib/Utility.hpp>
 #define GEOGRAPHICLIB_GRAVITYMODEL_CPP \
-  "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"
+  "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"
 
 RCSID_DECL(GEOGRAPHICLIB_GRAVITYMODEL_CPP)
 RCSID_DECL(GEOGRAPHICLIB_GRAVITYMODEL_HPP)
@@ -82,7 +82,7 @@ namespace GeographicLib {
       int pos = int(coeffstr.tellg());
       coeffstr.seekg(0, ios::end);
       if (pos != coeffstr.tellg())
-        throw GeographicErr("Extra data in  " + coeff);
+        throw GeographicErr("Extra data in " + coeff);
     }
     int nmx = _gravitational.Coefficients().nmx();
     // Adjust the normalization of the normal potential to match the model.
@@ -206,7 +206,7 @@ namespace GeographicLib {
       // No need to do the correction
       correct = false;
     real
-      invR = correct ? 1 / Math::hypot(Math::hypot(X, Y),  Z) : 1,
+      invR = correct ? 1 / Math::hypot(Math::hypot(X, Y), Z) : 1,
       T = (gradp
            ? _disturbing(-1, X, Y, Z, deltaX, deltaY, deltaZ)
            : _disturbing(-1, X, Y, Z));
@@ -282,7 +282,7 @@ namespace GeographicLib {
       gamma0 = _earth.SurfaceGravity(lat),
       dummy,
       T = InternalT(X, Y, Z, dummy, dummy, dummy, false, false),
-      invR = 1 / Math::hypot(Math::hypot(X, Y),  Z),
+      invR = 1 / Math::hypot(Math::hypot(X, Y), Z),
       correction = _corrmult * _correction(invR * X, invR * Y, invR * Z);
     // _zeta0 has been included in _correction
     return T/gamma0 + correction;
@@ -314,7 +314,7 @@ namespace GeographicLib {
     _earth.Earth().IntForward(lat, 0, h, X, Y, Z, M);
     // Y = 0, cphi = M[7], sphi = M[8];
     real
-      invR = 1 / Math::hypot(X,  Z),
+      invR = 1 / Math::hypot(X, Z),
       gamma0 = (caps & CAP_GAMMA0 ?_earth.SurfaceGravity(lat)
                 : Math::NaN<real>()),
       fx, fy, fz, gamma;
diff --git a/src/LambertConformalConic.cpp b/src/LambertConformalConic.cpp
index 070a0ff..4d5af6d 100644
--- a/src/LambertConformalConic.cpp
+++ b/src/LambertConformalConic.cpp
@@ -10,7 +10,7 @@
 #include <GeographicLib/LambertConformalConic.hpp>
 
 #define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP \
-  "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"
+  "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"
 
 RCSID_DECL(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP)
 RCSID_DECL(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP)
@@ -166,7 +166,7 @@ namespace GeographicLib {
                         Math::sq(tbet1)/(1 + scbet1))
         * Dhyp(tbet2, tbet1, scbet2, scbet1) * _fm;
       // Dc(tphi2, tphi1)
-      real den =  Dasinh(tphi2, tphi1, scphi2, scphi1)
+      real den = Dasinh(tphi2, tphi1, scphi2, scphi1)
         - Deatanhe(sphi2, sphi1) * Dsn(tphi2, tphi1, sphi2, sphi1);
       _n = num/den;
 
@@ -242,7 +242,7 @@ namespace GeographicLib {
         //    nu =   scphi * (shxiZ - shxi) - tphi * (chxiZ - chxi)
         //    mu = - scphi * (chxiZ - chxi) + tphi * (shxiZ - shxi)
         // then
-        // dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 +  scphi1)) /
+        // dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 + scphi1)) /
         //         D(tchi2, tchi1)
         real
           xiZ = eatanhe(real(1)), shxiZ = sinh(xiZ), chxiZ = hyp(shxiZ),
diff --git a/src/LocalCartesian.cpp b/src/LocalCartesian.cpp
index 9d4a861..7eb6d6d 100644
--- a/src/LocalCartesian.cpp
+++ b/src/LocalCartesian.cpp
@@ -2,15 +2,15 @@
  * \file LocalCartesian.cpp
  * \brief Implementation for GeographicLib::LocalCartesian class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/LocalCartesian.hpp>
 
 #define GEOGRAPHICLIB_LOCALCARTESIAN_CPP \
-  "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"
+  "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"
 
 RCSID_DECL(GEOGRAPHICLIB_LOCALCARTESIAN_CPP)
 RCSID_DECL(GEOGRAPHICLIB_LOCALCARTESIAN_HPP)
diff --git a/src/MGRS.cpp b/src/MGRS.cpp
index df38a25..a05207f 100644
--- a/src/MGRS.cpp
+++ b/src/MGRS.cpp
@@ -2,15 +2,15 @@
  * \file MGRS.cpp
  * \brief Implementation for GeographicLib::MGRS class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/MGRS.hpp>
 #include <GeographicLib/Utility.hpp>
 
-#define GEOGRAPHICLIB_MGRS_CPP "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"
+#define GEOGRAPHICLIB_MGRS_CPP "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"
 
 RCSID_DECL(GEOGRAPHICLIB_MGRS_CPP)
 RCSID_DECL(GEOGRAPHICLIB_MGRS_HPP)
@@ -43,7 +43,7 @@ namespace GeographicLib {
     { maxupsSind_, maxupsNind_, maxutmcol_, maxutmcol_ };
   const int MGRS::minnorthing_[4] =
     { minupsSind_, minupsNind_,
-      minutmSrow_,  minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
+      minutmSrow_, minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
   const int MGRS::maxnorthing_[4] =
     { maxupsSind_, maxupsNind_,
       maxutmNrow_ + (maxutmSrow_ - minutmNrow_), maxutmNrow_ };
@@ -58,9 +58,9 @@ namespace GeographicLib {
     }
     bool utmp = zone != 0;
     CheckCoords(utmp, northp, x, y);
-    if (!(zone >= 0 || zone <= 60))
+    if (!(zone >= UTMUPS::MINZONE && zone <= UTMUPS::MAXZONE))
       throw GeographicErr("Zone " + Utility::str(zone) + " not in [0,60]");
-    if (!(prec >= 0 || prec <= maxprec_))
+    if (!(prec >= 0 && prec <= maxprec_))
       throw GeographicErr("MGRS precision " + Utility::str(prec)
                           + " not in [0, "
                           + Utility::str(int(maxprec_)) + "]");
@@ -166,14 +166,14 @@ namespace GeographicLib {
       zone1 = 10 * zone1 + i;
       ++p;
     }
-    if (p > 0 && (zone1 == 0 || zone1 > 60))
+    if (p > 0 && !(zone1 >= UTMUPS::MINUTMZONE && zone1 <= UTMUPS::MAXUTMZONE))
       throw GeographicErr("Zone " + Utility::str(zone1) + " not in [1,60]");
     if (p > 2)
       throw GeographicErr("More than 2 digits_ at start of MGRS "
                           + mgrs.substr(0, p));
     if (len - p < 3)
       throw GeographicErr("MGRS string too short " + mgrs);
-    bool utmp = zone1 != 0;
+    bool utmp = zone1 != UTMUPS::UPS;
     int zonem1 = zone1 - 1;
     const string& band = utmp ? latband_ : upsband_;
     int iband = Utility::lookup(band, mgrs[p++]);
@@ -326,7 +326,7 @@ namespace GeographicLib {
       // The following deals with these special cases.
       int
         // Fold [-10,-1] -> [9,0]
-        sband = iband >= 0 ? iband : - iband  - 1,
+        sband = iband >= 0 ? iband : -iband - 1,
         // Fold [-90,-1] -> [89,0]
         srow = irow >= 0 ? irow : -irow - 1,
         // Fold [4,7] -> [3,0]
diff --git a/src/MagneticModel.cpp b/src/MagneticModel.cpp
index c90858a..6eb100d 100644
--- a/src/MagneticModel.cpp
+++ b/src/MagneticModel.cpp
@@ -14,7 +14,7 @@
 #include <GeographicLib/Utility.hpp>
 
 #define GEOGRAPHICLIB_MAGNETICMODEL_CPP \
-  "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"
+  "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"
 
 RCSID_DECL(GEOGRAPHICLIB_MAGNETICMODEL_CPP)
 RCSID_DECL(GEOGRAPHICLIB_MAGNETICMODEL_HPP)
@@ -85,7 +85,7 @@ namespace GeographicLib {
       int pos = int(coeffstr.tellg());
       coeffstr.seekg(0, ios::end);
       if (pos != coeffstr.tellg())
-        throw GeographicErr("Extra data in  " + coeff);
+        throw GeographicErr("Extra data in " + coeff);
     }
   }
 
@@ -132,9 +132,9 @@ namespace GeographicLib {
       else if (key == "MaxTime")
         _tmax = Utility::num<real>(val);
       else if (key == "MinHeight")
-        _hmin =  Utility::num<real>(val);
+        _hmin = Utility::num<real>(val);
       else if (key == "MaxHeight")
-        _hmax =  Utility::num<real>(val);
+        _hmax = Utility::num<real>(val);
       else if (key == "Normalization") {
         if (val == "FULL" || val == "Full" || val == "full")
           _norm = SphericalHarmonic::FULL;
diff --git a/src/Makefile.am b/src/Makefile.am
index f9f1766..866fb6f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,9 +2,9 @@
 # Makefile.am
 #
 # Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: c2f89d8f5caed6d1f3f0a0752b24be4970f57caa $
+# $Id: f4da355113a782652c871e23951589bb90e4578b $
 
-AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Wextra
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -Wall -Wextra
 
 lib_LTLIBRARIES = libGeographic.la
 
diff --git a/src/Makefile.in b/src/Makefile.in
index a3a7086..0d81c9b 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: c2f89d8f5caed6d1f3f0a0752b24be4970f57caa $
+# $Id: f4da355113a782652c871e23951589bb90e4578b $
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
@@ -245,7 +245,7 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Wextra
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -Wall -Wextra
 lib_LTLIBRARIES = libGeographic.la
 libGeographic_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
 libGeographic_la_SOURCES = AlbersEqualArea.cpp \
diff --git a/src/NormalGravity.cpp b/src/NormalGravity.cpp
index 356a2d6..7106b8a 100644
--- a/src/NormalGravity.cpp
+++ b/src/NormalGravity.cpp
@@ -10,7 +10,7 @@
 #include <GeographicLib/NormalGravity.hpp>
 
 #define GEOGRAPHICLIB_NORMALGRAVITY_CPP \
-  "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"
+  "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"
 
 RCSID_DECL(GEOGRAPHICLIB_NORMALGRAVITY_CPP)
 RCSID_DECL(GEOGRAPHICLIB_NORMALGRAVITY_HPP)
@@ -89,14 +89,14 @@ namespace GeographicLib {
   Math::real NormalGravity::qf(real ep2) throw() {
     // Compute
     //
-    //  ((1 + 3/e'^2) * atan(e')  - 3/e')/2
+    //   ((1 + 3/e'^2) * atan(e') - 3/e')/2
     //
     // See H+M, Eq 2-57, with E/u = e'.  This suffers from two levels of
     // cancelation.  The e'^-1 and e'^1 terms drop out, so that the leading
     // term is O(e'^3).
     real ep = sqrt(ep2);
-    if (abs(ep2) >  real(0.5))  // Use the closed expression
-      return ((1 + 3 / ep2) * atan(ep)  - 3 / ep)/2;
+    if (abs(ep2) > real(0.5))  // Use the closed expression
+      return ((1 + 3 / ep2) * atan(ep) - 3 / ep)/2;
     else {
       real ep2n = 1, q = 0;     // The series expansion H+M, Eq 2-86
       for (int n = 1; ; ++n) {
@@ -116,7 +116,7 @@ namespace GeographicLib {
   Math::real NormalGravity::qpf(real ep2) throw() {
     // Compute
     //
-    //  3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1
+    //   3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1
     //
     // See H+M, Eq 2-67, with E/u = e'.  This suffers from two levels of
     // cancelation.  The e'^-2 and e'^0 terms drop out, so that the leading
@@ -195,7 +195,7 @@ namespace GeographicLib {
       gamu = - invw * (_GM
                        + (_aomega2 * _E * qp
                           * (Math::sq(sbet) - 1/real(3)) / 2)) / Math::sq(uE),
-      gamb = _aomega2 * q  * sbet * cbet * invw / uE,
+      gamb = _aomega2 * q * sbet * cbet * invw / uE,
       t = u * invw / uE;
     // H+M, Eq 6-12
     GammaX = t * cbet * gamu - invw * sbet * gamb;
diff --git a/src/OSGB.cpp b/src/OSGB.cpp
index f731192..104928d 100644
--- a/src/OSGB.cpp
+++ b/src/OSGB.cpp
@@ -2,15 +2,15 @@
  * \file OSGB.cpp
  * \brief Implementation for GeographicLib::OSGB class
  *
- * Copyright (c) Charles Karney (2010, 2011, 2012) <charles at karney.com> and
- * licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/OSGB.hpp>
 #include <GeographicLib/Utility.hpp>
 
-#define GEOGRAPHICLIB_OSGB_CPP "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"
+#define GEOGRAPHICLIB_OSGB_CPP "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"
 
 RCSID_DECL(GEOGRAPHICLIB_OSGB_CPP)
 RCSID_DECL(GEOGRAPHICLIB_OSGB_HPP)
diff --git a/src/PolarStereographic.cpp b/src/PolarStereographic.cpp
index 07796ba..9d7f18c 100644
--- a/src/PolarStereographic.cpp
+++ b/src/PolarStereographic.cpp
@@ -2,15 +2,15 @@
  * \file PolarStereographic.cpp
  * \brief Implementation for GeographicLib::PolarStereographic class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
 #include <GeographicLib/PolarStereographic.hpp>
 
 #define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP \
-  "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"
+  "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"
 
 RCSID_DECL(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP)
 RCSID_DECL(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP)
@@ -79,7 +79,7 @@ namespace GeographicLib {
       secphi = Math::hypot(real(1), tau),
       sig = sinh( eatanhe(tau / secphi) ),
       taup = Math::hypot(real(1), sig) * tau - sig * secphi,
-      rho =  Math::hypot(real(1), taup) + abs(taup);
+      rho = Math::hypot(real(1), taup) + abs(taup);
     rho = taup >= 0 ? (lat != 90 ? 1/rho : 0) : rho;
     rho *= 2 * _k0 * _a / _c;
     k = lat != 90 ? (rho / _a) * secphi * sqrt(_e2m + _e2 / Math::sq(secphi)) :
diff --git a/src/SphericalEngine.cpp b/src/SphericalEngine.cpp
index 638496b..53cd9b5 100644
--- a/src/SphericalEngine.cpp
+++ b/src/SphericalEngine.cpp
@@ -137,7 +137,7 @@
 #include <GeographicLib/Utility.hpp>
 
 #define GEOGRAPHICLIB_SPHERICALENGINE_CPP \
-  "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"
+  "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"
 
 RCSID_DECL(GEOGRAPHICLIB_SPHERICALENGINE_CPP)
 RCSID_DECL(GEOGRAPHICLIB_SPHERICALENGINE_HPP)
@@ -249,7 +249,7 @@ namespace GeographicLib {
         v = A * vc  + B * vc2  +  wc ; vc2  = vc ; vc  = v;
         v = A * vs  + B * vs2  +  ws ; vs2  = vs ; vs  = v;
         if (gradp) {
-          // Include the terms Sc[m] * P'[m,m](t) and  Ss[m] * P'[m,m](t)
+          // Include the terms Sc[m] * P'[m,m](t) and Ss[m] * P'[m,m](t)
           wtc += m * tu * wc; wts += m * tu * ws;
           v = A * vrc + B * vrc2 +  wrc; vrc2 = vrc; vrc = v;
           v = A * vrs + B * vrs2 +  wrs; vrs2 = vrs; vrs = v;
diff --git a/src/TransverseMercator.cpp b/src/TransverseMercator.cpp
index 01e07c9..5dd84cb 100644
--- a/src/TransverseMercator.cpp
+++ b/src/TransverseMercator.cpp
@@ -2,8 +2,8 @@
  * \file TransverseMercator.cpp
  * \brief Implementation for GeographicLib::TransverseMercator class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * This implementation follows closely
@@ -42,7 +42,7 @@
 #include <GeographicLib/TransverseMercator.hpp>
 
 #define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP \
-  "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"
+  "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"
 
 RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP)
 RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP)
diff --git a/src/TransverseMercatorExact.cpp b/src/TransverseMercatorExact.cpp
index d54cb51..c700bf9 100644
--- a/src/TransverseMercatorExact.cpp
+++ b/src/TransverseMercatorExact.cpp
@@ -2,8 +2,8 @@
  * \file TransverseMercatorExact.cpp
  * \brief Implementation for GeographicLib::TransverseMercatorExact class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * The relevant section of Lee's paper is part V, pp 67–101,
@@ -42,7 +42,7 @@
 #include <GeographicLib/TransverseMercatorExact.hpp>
 
 #define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP \
-  "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"
+  "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"
 
 RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP)
 RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP)
diff --git a/src/UTMUPS.cpp b/src/UTMUPS.cpp
index 7791ed0..4a8bb5e 100644
--- a/src/UTMUPS.cpp
+++ b/src/UTMUPS.cpp
@@ -2,8 +2,8 @@
  * \file UTMUPS.cpp
  * \brief Implementation for GeographicLib::UTMUPS class
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -15,7 +15,7 @@
 #include <GeographicLib/Utility.hpp>
 
 #define GEOGRAPHICLIB_UTMUPS_CPP \
-  "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"
+  "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"
 
 RCSID_DECL(GEOGRAPHICLIB_UTMUPS_CPP)
 RCSID_DECL(GEOGRAPHICLIB_UTMUPS_HPP)
@@ -31,23 +31,23 @@ namespace GeographicLib {
     { MGRS::upseasting_ * MGRS::tile_, MGRS::upseasting_ * MGRS::tile_,
       MGRS::maxutmSrow_ * MGRS::tile_, MGRS::minutmNrow_ * MGRS::tile_ };
   const Math::real UTMUPS::mineasting_[4] =
-    { MGRS::minupsSind_ * MGRS::tile_,  MGRS::minupsNind_ * MGRS::tile_,
-      MGRS::minutmcol_ * MGRS::tile_,  MGRS::minutmcol_ * MGRS::tile_ };
+    { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
+      MGRS::minutmcol_ * MGRS::tile_, MGRS::minutmcol_ * MGRS::tile_ };
   const Math::real UTMUPS::maxeasting_[4] =
-    { MGRS::maxupsSind_ * MGRS::tile_,  MGRS::maxupsNind_ * MGRS::tile_,
-      MGRS::maxutmcol_ * MGRS::tile_,  MGRS::maxutmcol_ * MGRS::tile_ };
+    { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
+      MGRS::maxutmcol_ * MGRS::tile_, MGRS::maxutmcol_ * MGRS::tile_ };
   const Math::real UTMUPS::minnorthing_[4] =
-    { MGRS::minupsSind_ * MGRS::tile_,  MGRS::minupsNind_ * MGRS::tile_,
+    { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
       MGRS::minutmSrow_ * MGRS::tile_,
       (MGRS::minutmNrow_ + MGRS::minutmSrow_ - MGRS::maxutmSrow_)
       * MGRS::tile_ };
   const Math::real UTMUPS::maxnorthing_[4] =
-    { MGRS::maxupsSind_ * MGRS::tile_,  MGRS::maxupsNind_ * MGRS::tile_,
+    { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
       (MGRS::maxutmSrow_ + MGRS::maxutmNrow_ - MGRS::minutmNrow_) * MGRS::tile_,
       MGRS::maxutmNrow_ * MGRS::tile_ };
 
   int UTMUPS::StandardZone(real lat, real lon, int setzone) {
-    if (setzone < MINPSEUDOZONE || setzone > MAXZONE)
+    if (!(setzone >= MINPSEUDOZONE && setzone <= MAXZONE))
       throw GeographicErr("Illegal zone requested " + Utility::str(setzone));
     if (setzone >= MINZONE || setzone == INVALID)
       return setzone;
@@ -128,7 +128,7 @@ namespace GeographicLib {
       lat = lon = gamma = k = Math::NaN<real>();
       return;
     }
-    if (! (zone >= MINZONE && zone <= MAXZONE))
+    if (!(zone >= MINZONE && zone <= MAXZONE))
       throw GeographicErr("Zone " + Utility::str(zone)
                           + " not in range [0, 60]");
     bool utmp = zone != UPS;
@@ -230,7 +230,7 @@ namespace GeographicLib {
   std::string UTMUPS::EncodeZone(int zone, bool northp) {
     if (zone == INVALID)
       return string("INV");
-    if (! (zone >= MINZONE && zone <= MAXZONE))
+    if (!(zone >= MINZONE && zone <= MAXZONE))
         throw GeographicErr("Zone " + Utility::str(zone)
                             + " not in range [0, 60]");
     ostringstream os;
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index d740656..0c1d14e 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: d72d0ce709c3f851494b674d9a85ca1afb4c535f $
+# $Id: 6e59195303d0fbf5e3d86159e0c2808bc1014fec $
 
 # Build the tools...
 
@@ -7,9 +7,9 @@
 # source tree.
 if (MAINTAINER)
   set (MANDIR ${PROJECT_BINARY_DIR}/man)
-else (MAINTAINER)
+else ()
   set (MANDIR ${PROJECT_SOURCE_DIR}/man)
-endif (MAINTAINER)
+endif ()
 include_directories (${MANDIR})
 
 # Loop over all the tools, specifying the source and library.
@@ -19,7 +19,7 @@ foreach (TOOL ${TOOLS})
   add_executable (${TOOL} ${TOOL}.cpp)
   if (MAINTAINER)
     add_dependencies (${TOOL} usage)
-  endif (MAINTAINER)
+  endif ()
   add_dependencies (tools ${TOOL})
 
   set_source_files_properties (${TOOL}.cpp PROPERTIES
@@ -27,17 +27,16 @@ foreach (TOOL ${TOOLS})
 
   target_link_libraries (${TOOL} Geographic)
 
-endforeach (TOOL)
+endforeach ()
 
 # Set the run time path for shared libraries for non-Windows machines.
 if (NOT WIN32)
   set_target_properties (${TOOLS} PROPERTIES
     INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
-endif (NOT WIN32)
+endif ()
 
-# Specify where the tools are installed, adding them to the export
-# GeographicLibDepends.
-install (TARGETS ${TOOLS} EXPORT GeographicLibDepends DESTINATION bin)
+# Specify where the tools are installed
+install (TARGETS ${TOOLS} DESTINATION bin)
 
 # Create the scripts for downloading the data files on non-Windows
 # systems.  This needs to substitute ${GEOGRAPHICLIB_DATA} as the
@@ -47,15 +46,15 @@ if (NOT WIN32)
   foreach (SCRIPT ${SCRIPTS})
     add_custom_command (OUTPUT ${SCRIPT}
       COMMAND
-	sed -e "s%@DEFAULTDIR@%${GEOGRAPHICLIB_DATA}%"
-	  ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT}.sh >
-	  ${SCRIPT}
+        sed -e "s%@DEFAULTDIR@%${GEOGRAPHICLIB_DATA}%"
+          ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT}.sh >
+          ${SCRIPT}
       COMMAND chmod +x ${SCRIPT}
       DEPENDS ${SCRIPT}.sh)
     install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT} DESTINATION sbin)
-  endforeach (SCRIPT)
+  endforeach ()
   add_custom_target (scripts ALL DEPENDS ${SCRIPTS})
-endif (NOT WIN32)
+endif ()
 
 # Copy the shared library on Windows systems to this directory (tools) so
 # that the tests can be run.
@@ -65,7 +64,7 @@ if (WIN32 AND GEOGRAPHIC_SHARED_LIB)
   add_custom_command (TARGET tools POST_BUILD
     COMMAND ${CMAKE_COMMAND} -E
     copy ${GEOGRAPHIC_LIBRARY_FILE} ${CMAKE_CFG_INTDIR}/)
-endif (WIN32 AND GEOGRAPHIC_SHARED_LIB)
+endif ()
 
 # Turn on testing
 enable_testing ()
@@ -119,6 +118,7 @@ set_tests_properties (Geod5
   "90\\.00000 -150\\.00000 -180\\.00000;90\\.00000 30\\.00000 0\\.00000")
 
 # Check fix for volatile sbet12a bug found 2011-06-25 (gcc 4.4.4 x86 -O3)
+# Found again on 2012-03-27 with tdm-mingw32 (g++ 4.6.1).
 add_test (Geod6 Geod -i --input-string
   "88.202499451857 0 -88.202499451857 179.981022032992859592")
 add_test (Geod7 Geod -i --input-string
@@ -198,9 +198,9 @@ if (EXISTS ${GEOGRAPHICLIB_DATA}/geoids/egm96-5.pgm)
   # Check fix for single-cell cache bug found 2010-11-23
   add_test (GeoidEval0 GeoidEval -n egm96-5 --input-string "0d1 0d1;0d4 0d4")
   set_tests_properties (GeoidEval0
-    PROPERTIES PASS_REGULAR_EXPRESSION "^17\\.1602 .*
-17\\.1511 ")
-endif (EXISTS ${GEOGRAPHICLIB_DATA}/geoids/egm96-5.pgm)
+    PROPERTIES PASS_REGULAR_EXPRESSION "^17\\.1[56]..
+17\\.1[45]..")
+endif ()
 
 if (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
   # Test case from WMM2010_Report.pdf, Sec 1.5, pp 14-15:
@@ -223,7 +223,7 @@ if (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
     PROPERTIES PASS_REGULAR_EXPRESSION
     " 5535\\.5249148687 14765\\.3703243050 -50625\\.9305478794 .*
 .* 20\\.4904268023 1\\.0272592716 83\\.5313962281 ")
-endif (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
+endif ()
 
 if (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
   # Verify no overflow at poles with high degree model
@@ -232,4 +232,4 @@ if (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
   set_tests_properties (Gravity0
     PROPERTIES PASS_REGULAR_EXPRESSION
     "-0\\.000146 0\\.000078 -9\\.832294")
-endif (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
+endif ()
diff --git a/tools/CartConvert.cpp b/tools/CartConvert.cpp
index 8ff17fa..2055672 100644
--- a/tools/CartConvert.cpp
+++ b/tools/CartConvert.cpp
@@ -2,8 +2,8 @@
  * \file CartConvert.cpp
  * \brief Command line utility for geodetic to cartesian coordinate conversions
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -38,7 +38,8 @@ int main(int argc, char* argv[]) {
       a = Constants::WGS84_a<real>(),
       f = Constants::WGS84_f<real>();
     real lat0 = 0, lon0 = 0, h0 = 0;
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
@@ -77,10 +78,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
-      } else if (arg == "--version") {
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
+     } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: 990e4bdb8e7edc5c66bca635c284b696aa882956 $\n"
+          << ": $Id: b9e53a72ea7d026978678f3ab9d726a2d8485079 $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -103,7 +114,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -131,11 +142,19 @@ int main(int argc, char* argv[]) {
     int retval = 0;
     while (std::getline(*input, s)) {
       try {
+        std::string eol("\n");
+        if (!cdelim.empty()) {
+          std::string::size_type m = s.find(cdelim);
+          if (m != std::string::npos) {
+            eol = " " + s.substr(m) + "\n";
+            s = s.substr(0, m);
+          }
+        }
         std::istringstream str(s);
         real lat, lon, h, x, y, z;
         std::string stra, strb, strc;
         if (!(str >> stra >> strb >> strc))
-          throw  GeographicErr("Incomplete input: " + s);
+          throw GeographicErr("Incomplete input: " + s);
         if (reverse) {
           x = Utility::num<real>(stra);
           y = Utility::num<real>(strb);
@@ -154,7 +173,7 @@ int main(int argc, char* argv[]) {
             ec.Reverse(x, y, z, lat, lon, h);
           *output << Utility::str<real>(lat, 15) << " "
                   << Utility::str<real>(lon, 15) << " "
-                  << Utility::str<real>(h, 12) << "\n";
+                  << Utility::str<real>(h, 12) << eol;
         } else {
           if (localcartesian)
             lc.Forward(lat, lon, h, x, y, z);
@@ -162,7 +181,7 @@ int main(int argc, char* argv[]) {
             ec.Forward(lat, lon, h, x, y, z);
           *output << Utility::str<real>(x, 10) << " "
                   << Utility::str<real>(y, 10) << " "
-                  << Utility::str<real>(z, 10) << "\n";
+                  << Utility::str<real>(z, 10) << eol;
         }
       }
       catch (const std::exception& e) {
diff --git a/tools/ConicProj.cpp b/tools/ConicProj.cpp
index 7d0350f..507fd5b 100644
--- a/tools/ConicProj.cpp
+++ b/tools/ConicProj.cpp
@@ -2,8 +2,8 @@
  * \file ConicProj.cpp
  * \brief Command line utility for conical projections
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -38,7 +38,8 @@ int main(int argc, char* argv[]) {
     real
       a = Constants::WGS84_a<real>(),
       f = Constants::WGS84_f<real>();
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
@@ -49,7 +50,7 @@ int main(int argc, char* argv[]) {
         albers = arg == "-a";
         if (m + 2 >= argc) return usage(1, true);
         try {
-          for (int i =  0; i < 2; ++i) {
+          for (int i = 0; i < 2; ++i) {
             DMS::flag ind;
             (i ? lat2 : lat1) = DMS::Decode(std::string(argv[++m]), ind);
             if (ind == DMS::LONGITUDE)
@@ -107,10 +108,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: 28e29944bd28097eaff577dad02e18ea927a1a87 $\n"
+          << ": $Id: 8efb8dcae1b8e8f1abac4d5d6f60e8730ecaa81c $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -133,7 +144,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -172,6 +183,14 @@ int main(int argc, char* argv[]) {
     std::cout << std::fixed;
     while (std::getline(*input, s)) {
       try {
+        std::string eol("\n");
+        if (!cdelim.empty()) {
+          std::string::size_type m = s.find(cdelim);
+          if (m != std::string::npos) {
+            eol = " " + s.substr(m) + "\n";
+            s = s.substr(0, m);
+          }
+        }
         std::istringstream str(s);
         real lat, lon, x, y, gamma, k;
         std::string stra, strb;
@@ -193,7 +212,7 @@ int main(int argc, char* argv[]) {
           *output << Utility::str<real>(lat, 15) << " "
                   << Utility::str<real>(lon, 15) << " "
                   << Utility::str<real>(gamma, 16) << " "
-                  << Utility::str<real>(k, 16) << "\n";
+                  << Utility::str<real>(k, 16) << eol;
         } else {
           if (lcc)
             lproj.Forward(lon0, lat, lon, x, y, gamma, k);
@@ -202,7 +221,7 @@ int main(int argc, char* argv[]) {
           *output << Utility::str<real>(x, 10) << " "
                   << Utility::str<real>(y, 10) << " "
                   << Utility::str<real>(gamma, 16) << " "
-                  << Utility::str<real>(k, 16) << "\n";
+                  << Utility::str<real>(k, 16) << eol;
         }
       }
       catch (const std::exception& e) {
diff --git a/tools/GeoConvert.cpp b/tools/GeoConvert.cpp
index c1c584f..d68605e 100644
--- a/tools/GeoConvert.cpp
+++ b/tools/GeoConvert.cpp
@@ -2,8 +2,8 @@
  * \file GeoConvert.cpp
  * \brief Command line utility for geographic coordinate conversions
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -40,15 +40,20 @@ int main(int argc, char* argv[]) {
     int prec = 0;
     int zone = UTMUPS::MATCH;
     bool centerp = true, swaplatlong = false;
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';', dmssep = char(0);
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
       if (arg == "-g")
         outputmode = GEOGRAPHIC;
-      else if (arg == "-d")
+      else if (arg == "-d") {
         outputmode = DMS;
-      else if (arg == "-u")
+	dmssep = '\0';
+      } else if (arg == "-:") {
+        outputmode = DMS;
+	dmssep = ':';
+      } else if (arg == "-u")
         outputmode = UTMUPS;
       else if (arg == "-m")
         outputmode = MGRS;
@@ -100,10 +105,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: e4d712327e515af5fc1f322b2bd55ddc3f91546a $\n"
+          << ": $Id: e39b9974b58d123fd979b1c3c086ae3ccccba72d $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -126,7 +141,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -153,7 +168,15 @@ int main(int argc, char* argv[]) {
     int retval = 0;
 
     while (std::getline(*input, s)) {
+      std::string eol("\n");
       try {
+        if (!cdelim.empty()) {
+          std::string::size_type m = s.find(cdelim);
+          if (m != std::string::npos) {
+            eol = " " + s.substr(m) + "\n";
+            s = s.substr(0, m);
+          }
+        }
         p.Reset(s, centerp, swaplatlong);
         p.SetAltZone(zone);
         switch (outputmode) {
@@ -161,7 +184,7 @@ int main(int argc, char* argv[]) {
           os = p.GeoRepresentation(prec, swaplatlong);
           break;
         case DMS:
-          os = p.DMSRepresentation(prec, swaplatlong);
+          os = p.DMSRepresentation(prec, swaplatlong, dmssep);
           break;
         case UTMUPS:
           os = p.AltUTMUPSRepresentation(prec);
@@ -186,7 +209,7 @@ int main(int argc, char* argv[]) {
         os = std::string("ERROR: ") + e.what();
         retval = 1;
       }
-      *output << os << "\n";
+      *output << os << eol;
     }
     return retval;
   }
diff --git a/tools/Geod.cpp b/tools/Geod.cpp
index 71f6d9e..f39273b 100644
--- a/tools/Geod.cpp
+++ b/tools/Geod.cpp
@@ -2,8 +2,8 @@
  * \file Geod.cpp
  * \brief Command line utility for geodesic calculations
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -31,18 +31,18 @@
 
 typedef GeographicLib::Math::real real;
 
-std::string LatLonString(real lat, real lon, int prec, bool dms) {
+std::string LatLonString(real lat, real lon, int prec, bool dms, char dmssep) {
   using namespace GeographicLib;
   return dms ?
-    DMS::Encode(lat, prec + 5, DMS::LATITUDE) + " " +
-    DMS::Encode(lon, prec + 5, DMS::LONGITUDE) :
+    DMS::Encode(lat, prec + 5, DMS::LATITUDE, dmssep) + " " +
+    DMS::Encode(lon, prec + 5, DMS::LONGITUDE, dmssep) :
     DMS::Encode(lat, prec + 5, DMS::NUMBER) + " " +
     DMS::Encode(lon, prec + 5, DMS::NUMBER);
 }
 
-std::string AzimuthString(real azi, int prec, bool dms) {
+std::string AzimuthString(real azi, int prec, bool dms, char dmssep) {
   using namespace GeographicLib;
-  return dms ? DMS::Encode(azi, prec + 5, DMS::AZIMUTH) :
+  return dms ? DMS::Encode(azi, prec + 5, DMS::AZIMUTH, dmssep) :
     DMS::Encode(azi >= 180 ? azi - 360 : azi, prec + 5, DMS::NUMBER);
 }
 
@@ -75,7 +75,8 @@ int main(int argc, char* argv[]) {
     real lat1, lon1, azi1, lat2, lon2, azi2, s12, m12, a12, M12, M21, S12;
     real azi2sense = 0;
     int prec = 3;
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';', dmssep = char(0);
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
@@ -110,9 +111,13 @@ int main(int argc, char* argv[]) {
         }
         m += 2;
       }
-      else if (arg == "-d")
+      else if (arg == "-d") {
         dms = true;
-      else if (arg == "-b")
+	dmssep = '\0';
+      } else if (arg == "-:") {
+	dms = true;
+	dmssep = ':';
+      } else if (arg == "-b")
         azi2sense = 180;
       else if (arg == "-f")
         full = true;
@@ -134,10 +139,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: 6fb53e2b731f1709ea62061e7dbd94e2b9a6aaf2 $\n"
+          << ": $Id: 68e3a8ec4a5717094498179912279a756f6e3f8b $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -160,7 +175,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -193,6 +208,14 @@ int main(int argc, char* argv[]) {
     int retval = 0;
     while (std::getline(*input, s)) {
       try {
+        std::string eol("\n");
+        if (!cdelim.empty()) {
+          std::string::size_type m = s.find(cdelim);
+          if (m != std::string::npos) {
+            eol = " " + s.substr(m) + "\n";
+            s = s.substr(0, m);
+          }
+        }
         std::istringstream str(s);
         if (inverse) {
           std::string slat1, slon1, slat2, slon2;
@@ -206,18 +229,18 @@ int main(int argc, char* argv[]) {
           a12 = geod.Inverse(lat1, lon1, lat2, lon2, s12, azi1, azi2,
                              m12, M12, M21, S12);
           if (full)
-            *output << LatLonString(lat1, lon1, prec, dms) << " ";
-          *output << AzimuthString(azi1, prec, dms) << " ";
+            *output << LatLonString(lat1, lon1, prec, dms, dmssep) << " ";
+          *output << AzimuthString(azi1, prec, dms, dmssep) << " ";
           if (full)
-            *output << LatLonString(lat2, lon2, prec, dms) << " ";
-          *output << AzimuthString(azi2 + azi2sense, prec, dms) << " "
+            *output << LatLonString(lat2, lon2, prec, dms, dmssep) << " ";
+          *output << AzimuthString(azi2 + azi2sense, prec, dms, dmssep) << " "
                   << DistanceStrings(s12, a12, full, arcmode, prec, dms);
           if (full)
             *output << " " << Utility::str<real>(m12, prec)
                     << " " << Utility::str<real>(M12, prec+7)
                     << " " << Utility::str<real>(M21, prec+7)
                     << " " << Utility::str<real>(S12, std::max(prec-7, 0));
-          *output << "\n";
+          *output << eol;
         } else {
           if (linecalc) {
             std::string ss12;
@@ -251,10 +274,10 @@ int main(int argc, char* argv[]) {
           if (arcmode)
             std::swap(s12, a12);
           if (full)
-            *output << LatLonString(lat1, lon1, prec, dms) << " "
-                    << AzimuthString(azi1, prec, dms) << " ";
-          *output << LatLonString(lat2, lon2, prec, dms) << " "
-                  << AzimuthString(azi2 + azi2sense, prec, dms);
+            *output << LatLonString(lat1, lon1, prec, dms, dmssep) << " "
+                    << AzimuthString(azi1, prec, dms, dmssep) << " ";
+          *output << LatLonString(lat2, lon2, prec, dms, dmssep) << " "
+                  << AzimuthString(azi2 + azi2sense, prec, dms, dmssep);
           if (full)
             *output << " "
                     << DistanceStrings(s12, a12, full, arcmode, prec, dms)
@@ -262,7 +285,7 @@ int main(int argc, char* argv[]) {
                     << " " << Utility::str<real>(M12, prec+7)
                     << " " << Utility::str<real>(M21, prec+7)
                     << " " << Utility::str<real>(S12, std::max(prec-7, 0));
-          *output << "\n";
+          *output << eol;
         }
       }
       catch (const std::exception& e) {
diff --git a/tools/GeodesicProj.cpp b/tools/GeodesicProj.cpp
index ad9bc6d..368b539 100644
--- a/tools/GeodesicProj.cpp
+++ b/tools/GeodesicProj.cpp
@@ -2,8 +2,8 @@
  * \file GeodesicProj.cpp
  * \brief Command line utility for geodesic projections
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -43,7 +43,8 @@ int main(int argc, char* argv[]) {
     real
       a = Constants::WGS84_a<real>(),
       f = Constants::WGS84_f<real>();
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
@@ -84,10 +85,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: add83c03428521dde4441cc0de01d5b8313549b6 $\n"
+          << ": $Id: d6745c19af3da288a8f95b4c6a9003906409800c $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -110,7 +121,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -148,6 +159,14 @@ int main(int argc, char* argv[]) {
     std::cout << std::fixed;
     while (std::getline(*input, s)) {
       try {
+        std::string eol("\n");
+        if (!cdelim.empty()) {
+          std::string::size_type m = s.find(cdelim);
+          if (m != std::string::npos) {
+            eol = " " + s.substr(m) + "\n";
+            s = s.substr(0, m);
+          }
+        }
         std::istringstream str(s);
         real lat, lon, x, y, azi, rk;
         std::string stra, strb;
@@ -171,7 +190,7 @@ int main(int argc, char* argv[]) {
           *output << Utility::str<real>(lat, 15) << " "
                   << Utility::str<real>(lon, 15) << " "
                   << Utility::str<real>(azi, 15) << " "
-                  << Utility::str<real>(rk, 16) << "\n";
+                  << Utility::str<real>(rk, 16) << eol;
         } else {
           if (cassini)
             cs.Forward(lat, lon, x, y, azi, rk);
@@ -182,7 +201,7 @@ int main(int argc, char* argv[]) {
           *output << Utility::str<real>(x, 10) << " "
                   << Utility::str<real>(y, 10) << " "
                   << Utility::str<real>(azi, 15) << " "
-                  << Utility::str<real>(rk, 16) << "\n";
+                  << Utility::str<real>(rk, 16) << eol;
         }
       }
       catch (const std::exception& e) {
diff --git a/tools/GeoidEval.cpp b/tools/GeoidEval.cpp
index 9134c88..dd43946 100644
--- a/tools/GeoidEval.cpp
+++ b/tools/GeoidEval.cpp
@@ -2,8 +2,8 @@
  * \file GeoidEval.cpp
  * \brief Command line utility for evaluating geoid heights
  *
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -36,12 +36,14 @@ int main(int argc, char* argv[]) {
   try {
     using namespace GeographicLib;
     typedef Math::real real;
-    bool cacheall = false, cachearea = false, verbose = false, cubic = true;
+    bool cacheall = false, cachearea = false, verbose = false,
+      cubic = true, gradp = false;
     real caches, cachew, cachen, cachee;
     std::string dir;
     std::string geoid = Geoid::DefaultGeoidName();
     Geoid::convertflag heightmult = Geoid::NONE;
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
     bool northp = false;
     int zonenum = UTMUPS::INVALID;
 
@@ -90,9 +92,11 @@ int main(int argc, char* argv[]) {
       } else if (arg == "-d") {
         if (++m == argc) return usage(1, true);
         dir = argv[m];
-      } else if (arg == "-l") {
+      } else if (arg == "-l")
         cubic = false;
-      } else if (arg == "-v")
+      else if (arg == "-g")
+        gradp = true;
+      else if (arg == "-v")
         verbose = true;
       else if (arg == "--input-string") {
         if (++m == argc) return usage(1, true);
@@ -103,10 +107,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: c241b424ccc91f1fa7e7f9cc74ef5f157023bc56 $\n"
+          << ": $Id: 6db1ff0b8309a39d0d9b0250dd73be964c5efb7c $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else {
@@ -135,7 +149,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -189,6 +203,16 @@ int main(int argc, char* argv[]) {
       const char* spaces = " \t\n\v\f\r,"; // Include comma as space
       while (std::getline(*input, s)) {
         try {
+          std::string eol("\n");
+          if (!cdelim.empty()) {
+            std::string::size_type m = s.find(cdelim);
+            if (m != std::string::npos) {
+              eol = " " + s.substr(m) + "\n";
+              std::string::size_type m1 =
+                m > 0 ? s.find_last_not_of(spaces, m - 1) : std::string::npos;
+              s = s.substr(0, m1 != std::string::npos ? m1 + 1 : m);
+            }
+          }
           real height = 0;
           if (zonenum != UTMUPS::INVALID) {
             // Expect "easting northing" if heightmult == 0, or
@@ -232,15 +256,21 @@ int main(int argc, char* argv[]) {
             real h = g(p.Latitude(), p.Longitude());
             *output << s
                     << Utility::str<real>(height + real(heightmult) * h, 4)
-                    << suff << "\n";
+                    << suff << eol;
           } else {
+            if (gradp) {
             real gradn, grade;
             real h = g(p.Latitude(), p.Longitude(), gradn, grade);
             *output << Utility::str<real>(h, 4) << " "
                     << Utility::str<real>(gradn * 1e6, 2)
                     << (Math::isnan(gradn) ? " " : "e-6 ")
                     << Utility::str<real>(grade * 1e6, 2)
-                    << (Math::isnan(grade) ? "\n" : "e-6\n");
+                    << (Math::isnan(grade) ? "" : "e-6")
+                    << eol;
+            } else {
+            real h = g(p.Latitude(), p.Longitude());
+            *output << Utility::str<real>(h, 4) << eol;
+            }
           }
         }
         catch (const std::exception& e) {
diff --git a/tools/Gravity.cpp b/tools/Gravity.cpp
index cf08646..2321a67 100644
--- a/tools/Gravity.cpp
+++ b/tools/Gravity.cpp
@@ -2,8 +2,8 @@
  * \file Gravity.cpp
  * \brief Command line utility for evaluating gravity fields
  *
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under
- * the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -40,7 +40,8 @@ int main(int argc, char* argv[]) {
     bool verbose = false;
     std::string dir;
     std::string model = GravityModel::DefaultGravityName();
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
     real lat = 0, h = 0;
     bool circle = false;
     int prec = -1;
@@ -76,7 +77,7 @@ int main(int argc, char* argv[]) {
             throw GeographicErr("Bad hemisphere letter on latitude");
           if (!(std::abs(lat) <= 90))
             throw GeographicErr("Latitude not in [-90d, 90d]");
-          h =  Utility::num<real>(std::string(argv[++m]));
+          h = Utility::num<real>(std::string(argv[++m]));
           circle = true;
         }
         catch (const std::exception& e) {
@@ -104,10 +105,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: fe8569b6e279ccef9b0576ef502dbc7537e82396 $\n"
+          << ": $Id: c87c647c3e973929010cdb2fd5d1eaa6aa739eca $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else {
@@ -138,7 +149,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -195,6 +206,14 @@ int main(int argc, char* argv[]) {
       std::string s, stra, strb;
       while (std::getline(*input, s)) {
         try {
+          std::string eol("\n");
+          if (!cdelim.empty()) {
+            std::string::size_type m = s.find(cdelim);
+            if (m != std::string::npos) {
+              eol = " " + s.substr(m) + "\n";
+              s = s.substr(0, m);
+            }
+          }
           std::istringstream str(s);
           real lon;
           if (circle) {
@@ -229,7 +248,7 @@ int main(int argc, char* argv[]) {
               }
               *output << Utility::str<real>(gx, prec) << " "
                       << Utility::str<real>(gy, prec) << " "
-                      << Utility::str<real>(gz, prec) << "\n";
+                      << Utility::str<real>(gz, prec) << eol;
             }
             break;
           case DISTURBANCE:
@@ -243,7 +262,8 @@ int main(int argc, char* argv[]) {
               // Convert to mGals
               *output << Utility::str<real>(deltax * 1e5, prec) << " "
                       << Utility::str<real>(deltay * 1e5, prec) << " "
-                      << Utility::str<real>(deltaz * 1e5, prec) << "\n";
+                      << Utility::str<real>(deltaz * 1e5, prec)
+                      << eol;
             }
             break;
           case ANOMALY:
@@ -258,14 +278,14 @@ int main(int argc, char* argv[]) {
               eta *= 3600;
               *output << Utility::str<real>(Dg01, prec) << " "
                       << Utility::str<real>(xi, prec) << " "
-                      << Utility::str<real>(eta, prec) << "\n";
+                      << Utility::str<real>(eta, prec) << eol;
             }
             break;
           case UNDULATION:
           default:
             {
               real N = circle ? c.GeoidHeight(lon) : g.GeoidHeight(lat, lon);
-              *output << Utility::str<real>(N, prec) << "\n";
+              *output << Utility::str<real>(N, prec) << eol;
             }
             break;
           }
diff --git a/tools/MagneticField.cpp b/tools/MagneticField.cpp
index 96047ac..94cee09 100644
--- a/tools/MagneticField.cpp
+++ b/tools/MagneticField.cpp
@@ -2,8 +2,8 @@
  * \file MagneticField.cpp
  * \brief Command line utility for evaluating magnetic fields
  *
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under
- * the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -39,7 +39,8 @@ int main(int argc, char* argv[]) {
     bool verbose = false;
     std::string dir;
     std::string model = MagneticModel::DefaultMagneticName();
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
     real time = 0, lat = 0, h = 0;
     bool timeset = false, circle = false, rate = false;
     real hguard = 500000, tguard = 50;
@@ -75,7 +76,7 @@ int main(int argc, char* argv[]) {
             throw GeographicErr("Bad hemisphere letter on latitude");
           if (!(std::abs(lat) <= 90))
             throw GeographicErr("Latitude not in [-90d, 90d]");
-          h =  Utility::num<real>(std::string(argv[++m]));
+          h = Utility::num<real>(std::string(argv[++m]));
           timeset = false;
           circle = true;
         }
@@ -126,10 +127,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: 9eed3e6df94c67923b1730fe0dae826a5a73163e $\n"
+          << ": $Id: cd55a73582dee908c12a23bee33362e7607268af $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else {
@@ -160,7 +171,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -229,6 +240,14 @@ int main(int argc, char* argv[]) {
       std::string s, stra, strb;
       while (std::getline(*input, s)) {
         try {
+          std::string eol("\n");
+          if (!cdelim.empty()) {
+            std::string::size_type m = s.find(cdelim);
+            if (m != std::string::npos) {
+              eol = " " + s.substr(m) + "\n";
+              s = s.substr(0, m);
+            }
+          }
           std::istringstream str(s);
           if (!(timeset || circle)) {
             if (!(str >> stra))
@@ -292,7 +311,7 @@ int main(int argc, char* argv[]) {
                   << Utility::str<real>(by, prec) << " "
                   << Utility::str<real>(bx, prec) << " "
                   << Utility::str<real>(-bz, prec) << " "
-                  << Utility::str<real>(F, prec) << "\n";
+                  << Utility::str<real>(F, prec) << eol;
           if (rate)
             *output << DMS::Encode(Dt, prec + 1, DMS::NUMBER) << " "
                     << DMS::Encode(It, prec + 1, DMS::NUMBER) << " "
@@ -300,7 +319,7 @@ int main(int argc, char* argv[]) {
                     << Utility::str<real>(byt, prec) << " "
                     << Utility::str<real>(bxt, prec) << " "
                     << Utility::str<real>(-bzt, prec) << " "
-                    << Utility::str<real>(Ft, prec) << "\n";
+                    << Utility::str<real>(Ft, prec) << eol;
         }
         catch (const std::exception& e) {
           *output << "ERROR: " << e.what() << "\n";
diff --git a/tools/Makefile.am b/tools/Makefile.am
index e025fff..f1d639a 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -2,10 +2,11 @@
 # Makefile.am
 #
 # Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: 06061d19429c2ebd7073f9b0f321b6aa02bb0472 $
+# $Id: c212f6390b52c0be8aaa7ceba4ccabefe63fb1fd $
 
 AM_CPPFLAGS = -Wall -funroll-loops -finline-functions -fomit-frame-pointer
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/man
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
+           -I$(top_builddir)/man -I$(top_srcdir)/man
 
 LDADD = $(top_builddir)/src/libGeographic.la
 DEPS = $(top_builddir)/src/libGeographic.la
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 8a6b93d..d16498c 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -19,7 +19,7 @@
 # Makefile.am
 #
 # Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: 06061d19429c2ebd7073f9b0f321b6aa02bb0472 $
+# $Id: c212f6390b52c0be8aaa7ceba4ccabefe63fb1fd $
 
 
 VPATH = @srcdir@
@@ -287,7 +287,9 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AM_CPPFLAGS = -Wall -funroll-loops -finline-functions -fomit-frame-pointer
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/man
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
+           -I$(top_builddir)/man -I$(top_srcdir)/man
+
 LDADD = $(top_builddir)/src/libGeographic.la
 DEPS = $(top_builddir)/src/libGeographic.la
 CartConvert_SOURCES = CartConvert.cpp \
diff --git a/tools/Planimeter.cpp b/tools/Planimeter.cpp
index 530e778..54ab7bc 100644
--- a/tools/Planimeter.cpp
+++ b/tools/Planimeter.cpp
@@ -2,7 +2,7 @@
  * \file Planimeter.cpp
  * \brief Command line utility for measuring the area of geodesic polygons
  *
- * Copyright (c) Charles Karney (2010, 2011) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
@@ -42,7 +42,8 @@ int main(int argc, char* argv[]) {
       a = Constants::WGS84_a<real>(),
       f = Constants::WGS84_f<real>();
     bool reverse = false, sign = true, polyline = false;
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
@@ -72,10 +73,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: 9e86fcfa71ff796f3ac3b4395f565456f2ae86eb $\n"
+          << ": $Id: dbb8a9a0d79f172256044e72f65ebc667801eeac $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -98,7 +109,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -126,7 +137,15 @@ int main(int argc, char* argv[]) {
     std::string s;
     real perimeter, area;
     unsigned num;
+    std::string eol("\n");
     while (std::getline(*input, s)) {
+      if (!cdelim.empty()) {
+        std::string::size_type m = s.find(cdelim);
+        if (m != std::string::npos) {
+          eol = " " + s.substr(m) + "\n";
+          s = s.substr(0, m);
+        }
+      }
       bool endpoly = s.empty();
       if (!endpoly) {
         try {
@@ -145,9 +164,10 @@ int main(int argc, char* argv[]) {
                   << Utility::str<real>(perimeter, 8);
           if (!polyline)
             *output << " " << Utility::str<real>(area, 3);
-          *output << "\n";
+          *output << eol;
         }
         poly.Clear();
+        eol = "\n";
       } else
         poly.AddPoint(p.Latitude(), p.Longitude());
     }
@@ -157,9 +177,10 @@ int main(int argc, char* argv[]) {
               << Utility::str<real>(perimeter, 8);
       if (!polyline)
         *output << " " << Utility::str<real>(area, 3);
-      *output << "\n";
+      *output << eol;
     }
     poly.Clear();
+    eol = "\n";
     return 0;
   }
   catch (const std::exception& e) {
diff --git a/tools/TransverseMercatorProj.cpp b/tools/TransverseMercatorProj.cpp
index 6236f57..0368bd0 100644
--- a/tools/TransverseMercatorProj.cpp
+++ b/tools/TransverseMercatorProj.cpp
@@ -2,8 +2,8 @@
  * \file TransverseMercatorProj.cpp
  * \brief Command line utility for transverse Mercator projections
  *
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * Compile and link with
@@ -41,7 +41,8 @@ int main(int argc, char* argv[]) {
       f = Constants::WGS84_f<real>(),
       k0 = Constants::UTM_k0<real>(),
       lon0 = 0;
-    std::string istring, ifile, ofile;
+    std::string istring, ifile, ofile, cdelim;
+    char lsep = ';';
 
     for (int m = 1; m < argc; ++m) {
       std::string arg(argv[m]);
@@ -101,10 +102,20 @@ int main(int argc, char* argv[]) {
       } else if (arg == "--output-file") {
         if (++m == argc) return usage(1, true);
         ofile = argv[m];
+      } else if (arg == "--line-separator") {
+        if (++m == argc) return usage(1, true);
+        if (std::string(argv[m]).size() != 1) {
+          std::cerr << "Line separator must be a single character\n";
+          return 1;
+        }
+        lsep = argv[m][0];
+      } else if (arg == "--comment-delimiter") {
+        if (++m == argc) return usage(1, true);
+        cdelim = argv[m];
       } else if (arg == "--version") {
         std::cout
           << argv[0]
-          << ": $Id: 9b13c08c33190c03afbd6fbab75246eb16e249cb $\n"
+          << ": $Id: dd2a53288a82171129091d16bec6d1457568eb4d $\n"
           << "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
@@ -127,7 +138,7 @@ int main(int argc, char* argv[]) {
     } else if (!istring.empty()) {
       std::string::size_type m = 0;
       while (true) {
-        m = istring.find(';', m);
+        m = istring.find(lsep, m);
         if (m == std::string::npos)
           break;
         istring[m] = '\n';
@@ -160,6 +171,14 @@ int main(int argc, char* argv[]) {
     std::cout << std::fixed;
     while (std::getline(*input, s)) {
       try {
+        std::string eol("\n");
+        if (!cdelim.empty()) {
+          std::string::size_type m = s.find(cdelim);
+          if (m != std::string::npos) {
+            eol = " " + s.substr(m) + "\n";
+            s = s.substr(0, m);
+          }
+        }
         std::istringstream str(s);
         real lat, lon, x, y;
         std::string stra, strb;
@@ -182,7 +201,7 @@ int main(int argc, char* argv[]) {
           *output << Utility::str<real>(lat, 15) << " "
                   << Utility::str<real>(lon, 15) << " "
                   << Utility::str<real>(gamma, 16) << " "
-                  << Utility::str<real>(k, 16) << "\n";
+                  << Utility::str<real>(k, 16) << eol;
         } else {
           if (series)
             TMS.Forward(lon0, lat, lon, x, y, gamma, k);
@@ -191,7 +210,7 @@ int main(int argc, char* argv[]) {
           *output << Utility::str<real>(x, 10) << " "
                   << Utility::str<real>(y, 10) << " "
                   << Utility::str<real>(gamma, 16) << " "
-                  << Utility::str<real>(k, 16) << "\n";
+                  << Utility::str<real>(k, 16) << eol;
         }
       }
       catch (const std::exception& e) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/geographiclib.git



More information about the Pkg-grass-devel mailing list